# AI Image Intelligence (`marielise.dev/ai-image-intelligence`) Actor

Make every image work harder for your business. Auto-generate SEO-optimized metadata, accessibility-compliant alt text, and rich descriptions using AI. Perfect for e-commerce, content sites, and stock agencies processing hundreds of images daily. $0.01/image.

- **URL**: https://apify.com/marielise.dev/ai-image-intelligence.md
- **Developed by:** [Marielise](https://apify.com/marielise.dev) (community)
- **Categories:** SEO tools, AI, Developer tools
- **Stats:** 22 total users, 4 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## AI Image Intelligence

Extract comprehensive SEO metadata, accessibility-compliant alt text, visual analysis, and custom fields from any image using state-of-the-art vision AI models like GPT-4o, Claude, and Gemini.

### Why Use This Actor?

**Save hours of manual work** - Automatically generate SEO-optimized alt text, titles, descriptions, and keywords for thousands of images. One API call extracts 50+ data points including colors, objects, faces, text (OCR), EXIF metadata, and custom fields you define.

**Boost your SEO rankings** - Search engines can't "see" images. This Actor generates the metadata they need to understand and rank your visual content. Get professionally written alt text, Open Graph descriptions, and keyword-rich titles in any language.

**Ensure accessibility compliance** - Meet WCAG 2.1 guidelines with AI-generated alt text that accurately describes image content for screen readers. Essential for ADA compliance and inclusive web design.

**Flexible model selection** - Choose the AI model that fits your needs and budget. Use GPT-4o for highest accuracy, Gemini Flash for speed, or Claude for nuanced descriptions.

### Features

- **SEO Content Generation** - Alt text, titles, descriptions, keywords, Open Graph meta, and SEO-friendly filenames
- **Visual Analysis** - Dominant colors (hex), brightness, contrast, saturation, sharpness, noise levels
- **Object Detection** - Subjects, objects, landmarks, logos, and scene classification
- **Text Extraction (OCR)** - Extract text visible in images
- **Face Detection** - Detect faces with position, estimated age, gender, and emotion
- **EXIF Metadata** - Camera, lens, ISO, aperture, shutter speed, GPS coordinates (when available)
- **Custom Fields** - Define your own extraction schema for domain-specific data
- **Multi-language Support** - Generate content in any language (en, es, fr, de, ja, zh, etc.)
- **Multiple AI Providers** - OpenAI GPT-4o, Anthropic Claude, Google Gemini, Groq Llama

### What Data You Get

| Category | Fields | Description |
|----------|--------|-------------|
| **Identification** | subjects, category, tags, objects, landmarks, logos | What's in the image |
| **SEO** | alt, title, description, keywords, ogDescription, suggestedFilename | Search engine optimized content |
| **Visual** | colors (hex), brightness, contrast, saturation, sharpness, noise | Technical visual metrics |
| **Content** | text (OCR), faces, watermarks, scene | Content detection |
| **File** | width, height, aspectRatio, format, sizeBytes, colorSpace | File metadata |
| **EXIF** | camera, lens, ISO, aperture, shutterSpeed, focalLength, flash, dateTaken, GPS | Camera metadata |
| **Custom** | user-defined | Your custom extraction fields |

### Getting Started

#### Step 1: Set Up API Keys

This Actor requires an API key from at least one AI provider. Set the environment variable in **Actor Settings > Environment Variables**:

| Provider | Environment Variable | Get API Key |
|----------|---------------------|-------------|
| OpenAI (default) | `OPENAI_API_KEY` | [platform.openai.com/api-keys](https://platform.openai.com/api-keys) |
| Anthropic | `ANTHROPIC_API_KEY` | [console.anthropic.com](https://console.anthropic.com) |
| Google | `GOOGLE_API_KEY` | [aistudio.google.com/apikey](https://aistudio.google.com/apikey) |
| Groq | `GROQ_API_KEY` | [console.groq.com](https://console.groq.com) |

#### Step 2: Run the Actor

**Minimum input - just provide an image URL:**

```json
{
    "imageUrl": "https://example.com/photo.jpg"
}
````

**Or use base64-encoded image data:**

```json
{
    "imageBase64": "/9j/4AAQSkZJRgABAQAAAQABAAD..."
}
```

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `imageUrl` | string | One of | - | Public URL of the image to analyze |
| `imageBase64` | string | One of | - | Base64-encoded image data |
| `model` | string | No | `gpt-4o` | AI model to use (see Model Selection) |
| `language` | string | No | `en` | Language for generated text content |
| `imageContext` | string | No | - | Context to guide the analysis |
| `customSchema` | object | No | - | Custom fields to extract |

### Model Selection

#### Built-in Model Aliases

Use these shorthand names for common models:

| Alias | Full Model | Provider | Best For |
|-------|------------|----------|----------|
| `gpt-4o` | openai:gpt-4o | OpenAI | Highest accuracy, best overall |
| `gpt-4o-mini` | openai:gpt-4o-mini | OpenAI | Cost-effective, fast |
| `claude-sonnet` | anthropic:claude-sonnet-4-20250514 | Anthropic | Nuanced descriptions |
| `gemini-flash` | google:gemini-2.0-flash | Google | Fastest, budget-friendly |
| `gemini-pro` | google:gemini-1.5-pro | Google | High quality, longer context |

#### Using Other Models

Specify any vision-capable model with `provider:model` format:

```json
{
    "imageUrl": "https://example.com/photo.jpg",
    "model": "groq:llama-3.2-90b-vision-preview"
}
```

### Examples

#### Basic Analysis (Default Settings)

```json
{
    "imageUrl": "https://images.unsplash.com/photo-1501854140801-50d01698950b"
}
```

#### Multi-language SEO (Spanish)

```json
{
    "imageUrl": "https://example.com/product.jpg",
    "language": "es"
}
```

#### E-commerce Product Photography

```json
{
    "imageUrl": "https://example.com/furniture.jpg",
    "language": "en",
    "imageContext": "E-commerce product photography for a modern furniture store. Focus on material quality and design style.",
    "customSchema": {
        "productType": "",
        "material": "",
        "style": "",
        "color": "",
        "suitableRooms": ""
    }
}
```

#### Wildlife Photography with Species Identification

```json
{
    "imageUrl": "https://example.com/bird.jpg",
    "imageContext": "Nature and wildlife photography. Identify bird species with scientific name if possible.",
    "customSchema": {
        "species": "",
        "scientificName": "",
        "habitat": "",
        "behavior": "",
        "conservationStatus": ""
    }
}
```

#### Real Estate Listing

```json
{
    "imageUrl": "https://example.com/room.jpg",
    "imageContext": "Real estate listing photography for luxury homes.",
    "customSchema": {
        "roomType": "",
        "squareFootage": "",
        "features": "",
        "lightingQuality": "",
        "viewDescription": ""
    }
}
```

#### Food Photography

```json
{
    "imageUrl": "https://example.com/dish.jpg",
    "imageContext": "Restaurant menu photography.",
    "customSchema": {
        "dishName": "",
        "cuisine": "",
        "mainIngredients": "",
        "dietaryInfo": "",
        "presentationStyle": ""
    }
}
```

#### Fast Analysis with Gemini

```json
{
    "imageUrl": "https://example.com/photo.jpg",
    "model": "gemini-flash"
}
```

### Output Example

```json
{
    "identification": {
        "subjects": ["mountain landscape", "lake"],
        "category": "nature",
        "tags": ["mountain", "lake", "nature", "landscape", "scenic", "outdoors", "wilderness"],
        "objects": ["mountain", "lake", "trees", "sky", "clouds"],
        "landmarks": ["Rocky Mountains"],
        "logos": []
    },
    "seo": {
        "language": "en",
        "alt": "Majestic mountain landscape with crystal-clear lake reflecting snow-capped peaks",
        "title": "Rocky Mountain Lake Reflection",
        "description": "A stunning natural landscape featuring a pristine mountain lake perfectly reflecting the surrounding snow-capped peaks and evergreen forests.",
        "keywords": ["mountain landscape", "lake reflection", "Rocky Mountains", "nature photography", "scenic view"],
        "ogDescription": "Discover the breathtaking beauty of Rocky Mountain wilderness with this stunning lake reflection photograph.",
        "suggestedFilename": "rocky-mountain-lake-reflection"
    },
    "visual": {
        "colors": ["#1E90FF", "#228B22", "#FFFFFF", "#87CEEB", "#2F4F4F"],
        "brightness": 0.65,
        "contrast": 0.7,
        "saturation": 0.6,
        "sharpness": 0.8,
        "noise": 0.1
    },
    "file": {
        "width": 1920,
        "height": 1080,
        "aspectRatio": 1.78,
        "format": "JPEG",
        "sizeBytes": 0,
        "colorSpace": "sRGB",
        "orientation": 1
    },
    "content": {
        "text": "",
        "faces": [],
        "watermark": "",
        "scene": "outdoor landscape"
    },
    "exif": {
        "camera": "",
        "lens": "",
        "iso": 0,
        "aperture": 0,
        "shutterSpeed": "",
        "focalLength": 0,
        "flash": false,
        "dateTaken": "",
        "gps": { "lat": 0, "lng": 0 }
    },
    "customFields": {},
    "configApplied": {
        "model": "gpt-4o",
        "language": "en",
        "context": ""
    },
    "usage": {
        "tokens": {
            "input": 1250,
            "output": 450,
            "total": 1700
        },
        "cost": 0.008925
    },
    "processedAt": "2025-01-15T10:30:00.000Z"
}
```

### Use Cases

#### E-commerce & Product Catalogs

- Generate SEO-optimized product image alt text and descriptions
- Extract product attributes (color, material, style) for filtering
- Create consistent metadata across thousands of product images
- Improve product discovery in image search

#### Content Management & Publishing

- Automate alt text generation for blog posts and articles
- Generate Open Graph descriptions for social media sharing
- Create keyword-rich image titles for better SEO
- Bulk process image libraries for CMS migration

#### Accessibility Compliance

- Meet WCAG 2.1 Level AA requirements with accurate alt text
- Ensure ADA compliance for commercial websites
- Create inclusive content for screen reader users
- Audit existing images for accessibility gaps

#### Stock Photography & Media Libraries

- Auto-tag and categorize large image collections
- Generate searchable metadata for asset management
- Extract technical details for quality filtering
- Create multilingual descriptions for global markets

#### Real Estate & Property

- Describe room features and amenities automatically
- Extract property characteristics from listing photos
- Generate virtual tour descriptions
- Create multilingual listings for international buyers

#### Wildlife & Nature Photography

- Identify species with scientific names
- Extract habitat and behavior information
- Generate educational content for nature databases
- Support conservation research with automated tagging

### Pricing

This Actor uses **Pay Per Event (PPE)** pricing:

- **$0.01 per image analyzed**
- No monthly fees or minimums
- Pay only for what you use
- AI API costs are included in the price

### Technical Specifications

- **Supported formats**: JPEG, PNG, GIF, BMP, WEBP
- **Maximum image size**: 20MB
- **Processing time**: Typically 2-10 seconds per image
- **Memory requirement**: 256MB - 4096MB (auto-scaled)
- **API timeout**: 5 minutes maximum

### Troubleshooting

#### "Missing API key" Error

Set the required environment variable in **Actor Settings > Environment Variables**. For the default model (gpt-4o), you need `OPENAI_API_KEY`.

#### "Could not fetch image" Error

Ensure the image URL is:

- Publicly accessible (no authentication required)
- Using HTTPS protocol
- Not blocked by CORS or firewall

#### Slow Processing

- Use `gemini-flash` model for faster results
- Ensure images are reasonably sized (< 5MB for optimal speed)
- Check your AI provider's rate limits

#### Unexpected Results

- Add `imageContext` to guide the analysis
- Use domain-specific context for better accuracy
- Try a different model for varied perspectives

### FAQ

**Q: Which model should I use?**
A: Start with `gpt-4o` (default) for best accuracy. Use `gemini-flash` for speed and cost savings. Use `claude-sonnet` for nuanced, creative descriptions.

**Q: Can I process multiple images?**
A: Yes! Create multiple Actor runs in parallel, or use the Apify API to batch process images programmatically.

**Q: What languages are supported?**
A: Any language supported by the underlying AI model. Common languages: English (en), Spanish (es), French (fr), German (de), Japanese (ja), Chinese (zh), Portuguese (pt), Italian (it), Korean (ko), Arabic (ar).

**Q: Are my images stored?**
A: No. Images are processed in memory and not stored. Only the analysis results are saved to your dataset.

**Q: Can I use my own AI API keys?**
A: Yes! Set your API keys in the Actor's environment variables to use your own accounts and quotas.

### Support

- **Documentation**: [Apify Actor Documentation](https://docs.apify.com/actors)
- **Issues**: Report bugs or request features via Apify Console
- **Updates**: Follow the Actor for version updates and improvements

### Changelog

#### v1.0.0

- Initial release
- Support for OpenAI, Anthropic, Google, and Groq providers
- Comprehensive image analysis with 50+ output fields
- Custom field extraction support
- Multi-language output
- PPE pricing model

# Actor input Schema

## `imageUrl` (type: `string`):

Public URL of the image to analyze. Must be directly accessible without authentication. Supports JPEG, PNG, GIF, BMP, and WEBP formats up to 20MB.

## `imageBase64` (type: `string`):

Base64-encoded image data. Use this when you have the image as binary data rather than a URL. Include only the base64 string without the data URI prefix.

## `model` (type: `string`):

Vision AI model for analysis. Built-in aliases: gpt-4o (default, best accuracy), gpt-4o-mini (fast), claude-sonnet (nuanced), gemini-flash (fastest), gemini-pro (balanced). Or use provider:model format for any vision model.

## `language` (type: `string`):

ISO 639-1 language code for generated text (alt text, descriptions, titles, keywords). Examples: en (English), es (Spanish), fr (French), de (German), ja (Japanese), zh (Chinese).

## `imageContext` (type: `string`):

Optional context to guide the AI analysis. Helps improve accuracy for domain-specific images. Examples: 'E-commerce product photography', 'Real estate listing', 'Wildlife photography - identify species'.

## `customSchema` (type: `object`):

Define custom fields to extract from the image. Provide an object with field names as keys and empty strings as values. The AI will populate these fields based on image content. Example: {"productType": "", "material": "", "color": ""}

## Actor input object example

```json
{
  "imageUrl": "https://example.com/photo.jpg",
  "model": "gemini-flash",
  "language": "es",
  "imageContext": "E-commerce product photography for a furniture store",
  "customSchema": {
    "productType": "",
    "material": "",
    "style": ""
  }
}
```

# Actor output Schema

## `imageUrl` (type: `string`):

The URL of the analyzed image

## `identificationSubjects` (type: `string`):

Main subjects identified in the image (JSON array)

## `identificationCategory` (type: `string`):

Primary category of the image content

## `identificationTags` (type: `string`):

Relevant tags for the image (JSON array)

## `identificationObjects` (type: `string`):

Objects detected in the image (JSON array)

## `identificationLandmarks` (type: `string`):

Recognizable landmarks in the image (JSON array)

## `identificationLogos` (type: `string`):

Brand logos detected in the image (JSON array)

## `seoLanguage` (type: `string`):

Language code of the generated SEO content

## `seoAlt` (type: `string`):

Accessibility-compliant alt text for the image

## `seoTitle` (type: `string`):

SEO-optimized title for the image

## `seoDescription` (type: `string`):

Detailed description for SEO purposes

## `seoKeywords` (type: `string`):

SEO keywords extracted from the image (JSON array)

## `seoOgDescription` (type: `string`):

Description optimized for social media sharing

## `seoSuggestedFilename` (type: `string`):

SEO-friendly filename suggestion

## `visualColors` (type: `string`):

Dominant colors in hex format (JSON array)

## `visualBrightness` (type: `string`):

Overall brightness level (0-1)

## `visualContrast` (type: `string`):

Contrast level (0-1)

## `visualSaturation` (type: `string`):

Color saturation level (0-1)

## `visualSharpness` (type: `string`):

Image sharpness level (0-1)

## `visualNoise` (type: `string`):

Noise level in the image (0-1)

## `fileWidth` (type: `string`):

Image width in pixels

## `fileHeight` (type: `string`):

Image height in pixels

## `fileAspectRatio` (type: `string`):

Width to height ratio

## `fileFormat` (type: `string`):

Image file format (JPEG, PNG, etc.)

## `fileSizeBytes` (type: `string`):

File size in bytes

## `fileColorSpace` (type: `string`):

Color space (RGB, CMYK, etc.)

## `fileOrientation` (type: `string`):

EXIF orientation value

## `contentText` (type: `string`):

Text extracted from the image via OCR

## `contentFaces` (type: `string`):

Detected faces with position and attributes (JSON array)

## `contentWatermark` (type: `string`):

Detected watermark text or description

## `contentScene` (type: `string`):

Scene type classification

## `exifCamera` (type: `string`):

Camera make and model

## `exifLens` (type: `string`):

Lens information

## `exifIso` (type: `string`):

ISO sensitivity value

## `exifAperture` (type: `string`):

Aperture f-number

## `exifShutterSpeed` (type: `string`):

Shutter speed (e.g., 1/250)

## `exifFocalLength` (type: `string`):

Focal length in mm

## `exifFlash` (type: `string`):

Whether flash was used (true/false)

## `exifDateTaken` (type: `string`):

Original capture date/time

## `exifGpsLat` (type: `string`):

GPS latitude coordinate

## `exifGpsLng` (type: `string`):

GPS longitude coordinate

## `customFields` (type: `string`):

User-defined custom fields extracted from the image (JSON object)

## `configAppliedModel` (type: `string`):

AI model used for analysis

## `configAppliedLanguage` (type: `string`):

Output language code

## `configAppliedContext` (type: `string`):

Context provided for the analysis

## `usageTokensInput` (type: `string`):

Number of input tokens used

## `usageTokensOutput` (type: `string`):

Number of output tokens generated

## `usageTokensTotal` (type: `string`):

Total tokens used

## `usageCost` (type: `string`):

Estimated cost in USD

## `processedAt` (type: `string`):

ISO timestamp when the image was processed

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "imageUrl": "https://images.unsplash.com/photo-1501854140801-50d01698950b?w=800",
    "model": "gpt-4o"
};

// Run the Actor and wait for it to finish
const run = await client.actor("marielise.dev/ai-image-intelligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "imageUrl": "https://images.unsplash.com/photo-1501854140801-50d01698950b?w=800",
    "model": "gpt-4o",
}

# Run the Actor and wait for it to finish
run = client.actor("marielise.dev/ai-image-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "imageUrl": "https://images.unsplash.com/photo-1501854140801-50d01698950b?w=800",
  "model": "gpt-4o"
}' |
apify call marielise.dev/ai-image-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=marielise.dev/ai-image-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AI Image Intelligence",
        "description": "Make every image work harder for your business. Auto-generate SEO-optimized metadata, accessibility-compliant alt text, and rich descriptions using AI. Perfect for e-commerce, content sites, and stock agencies processing hundreds of images daily. $0.01/image.",
        "version": "0.0",
        "x-build-id": "5dS6Ij0rf6LNAd2I3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/marielise.dev~ai-image-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-marielise.dev-ai-image-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/marielise.dev~ai-image-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-marielise.dev-ai-image-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/marielise.dev~ai-image-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-marielise.dev-ai-image-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "imageUrl": {
                        "title": "Image URL",
                        "pattern": "^https?://.+",
                        "type": "string",
                        "description": "Public URL of the image to analyze. Must be directly accessible without authentication. Supports JPEG, PNG, GIF, BMP, and WEBP formats up to 20MB."
                    },
                    "imageBase64": {
                        "title": "Image Base64",
                        "type": "string",
                        "description": "Base64-encoded image data. Use this when you have the image as binary data rather than a URL. Include only the base64 string without the data URI prefix."
                    },
                    "model": {
                        "title": "AI Model",
                        "type": "string",
                        "description": "Vision AI model for analysis. Built-in aliases: gpt-4o (default, best accuracy), gpt-4o-mini (fast), claude-sonnet (nuanced), gemini-flash (fastest), gemini-pro (balanced). Or use provider:model format for any vision model.",
                        "default": "gpt-4o"
                    },
                    "language": {
                        "title": "Output Language",
                        "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                        "type": "string",
                        "description": "ISO 639-1 language code for generated text (alt text, descriptions, titles, keywords). Examples: en (English), es (Spanish), fr (French), de (German), ja (Japanese), zh (Chinese).",
                        "default": "en"
                    },
                    "imageContext": {
                        "title": "Image Context",
                        "type": "string",
                        "description": "Optional context to guide the AI analysis. Helps improve accuracy for domain-specific images. Examples: 'E-commerce product photography', 'Real estate listing', 'Wildlife photography - identify species'."
                    },
                    "customSchema": {
                        "title": "Custom Fields Schema",
                        "type": "object",
                        "description": "Define custom fields to extract from the image. Provide an object with field names as keys and empty strings as values. The AI will populate these fields based on image content. Example: {\"productType\": \"\", \"material\": \"\", \"color\": \"\"}"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
