{
    "openapi": "3.1.0",
    "info": {
        "title": "Vidmfy REST API",
        "version": "1.0.0",
        "description": "Generated from the canonical Vidmfy endpoint catalog."
    },
    "servers": [
        {
            "url": "https://vidmfy.com/api/v1"
        }
    ],
    "paths": {
        "/projects": {
            "get": {
                "tags": [
                    "Projects"
                ],
                "summary": "List every publishing project with its editorial context and platform connections.",
                "operationId": "get_projects",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "id": "PRJ-A1B2C3D4E5",
                                            "name": "Historical facts",
                                            "default_language_code": "fr-BE",
                                            "connection_count": 8,
                                            "connections": {
                                                "youtube": [
                                                    {
                                                        "id": 4,
                                                        "connection_label": "History FR",
                                                        "default_language_code": "fr-BE"
                                                    }
                                                ]
                                            }
                                        }
                                    ],
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read"
            },
            "post": {
                "tags": [
                    "Projects"
                ],
                "summary": "Create a publishing project and enable Project mode. Available during Trial and with active Pro.",
                "operationId": "post_projects",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "PRJ-A1B2C3D4E5",
                                        "name": "Historical facts",
                                        "connection_count": 0
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "Project, brand, subject or customer name.",
                                        "example": "Historical facts"
                                    },
                                    "description": {
                                        "type": "string",
                                        "description": "Purpose and general context of the project.",
                                        "example": "Short educational history videos."
                                    },
                                    "content_theme": {
                                        "type": "string",
                                        "description": "Editorial subjects and boundaries.",
                                        "example": "Verified historical anecdotes."
                                    },
                                    "target_audience": {
                                        "type": "string",
                                        "description": "People the project should address.",
                                        "example": "Curious adults"
                                    },
                                    "editorial_tone": {
                                        "type": "string",
                                        "description": "Preferred style and tone.",
                                        "example": "Captivating and factual"
                                    },
                                    "default_language_code": {
                                        "type": "string",
                                        "description": "Default editorial language.",
                                        "example": "fr-BE"
                                    },
                                    "color": {
                                        "type": "string",
                                        "description": "Private organization color.",
                                        "example": "#596bde"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                }
            }
        },
        "/projects/{project_id}": {
            "get": {
                "tags": [
                    "Projects"
                ],
                "summary": "Return one project and all publishing connections currently linked to it.",
                "operationId": "get_projects_project_id",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "PRJ-A1B2C3D4E5",
                                        "name": "Historical facts",
                                        "default_language_code": "fr-BE",
                                        "connection_count": 8
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "project_id": {
                                        "type": "integer",
                                        "description": "Publishing project used to isolate channels, languages and campaigns.",
                                        "example": "PRJ-A1B2C3D4E5"
                                    }
                                },
                                "required": [
                                    "project_id"
                                ]
                            }
                        }
                    }
                }
            },
            "patch": {
                "tags": [
                    "Projects"
                ],
                "summary": "Edit the supplied project fields without changing linked connections.",
                "operationId": "patch_projects_project_id",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "PRJ-A1B2C3D4E5",
                                        "name": "Historical facts and discoveries",
                                        "connection_count": 8
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "project_id": {
                                        "type": "integer",
                                        "description": "Publishing project used to isolate channels, languages and campaigns.",
                                        "example": "PRJ-A1B2C3D4E5"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "Project, brand, subject or customer name.",
                                        "example": "Historical facts"
                                    },
                                    "description": {
                                        "type": "string",
                                        "description": "Purpose and general context of the project.",
                                        "example": "Short educational history videos."
                                    },
                                    "content_theme": {
                                        "type": "string",
                                        "description": "Editorial subjects and boundaries.",
                                        "example": "Verified historical anecdotes."
                                    },
                                    "target_audience": {
                                        "type": "string",
                                        "description": "People the project should address.",
                                        "example": "Curious adults"
                                    },
                                    "editorial_tone": {
                                        "type": "string",
                                        "description": "Preferred style and tone.",
                                        "example": "Captivating and factual"
                                    },
                                    "default_language_code": {
                                        "type": "string",
                                        "description": "Default editorial language.",
                                        "example": "fr-BE"
                                    },
                                    "color": {
                                        "type": "string",
                                        "description": "Private organization color.",
                                        "example": "#596bde"
                                    }
                                },
                                "required": [
                                    "project_id",
                                    "name"
                                ]
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Projects"
                ],
                "summary": "Delete an inactive project and its linked destination authorizations while preserving historical videos.",
                "operationId": "delete_projects_project_id",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "deleted": true,
                                        "project_id": "PRJ-A1B2C3D4E5",
                                        "linked_connections_deleted": true,
                                        "historical_videos_preserved": true
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "project_id": {
                                        "type": "integer",
                                        "description": "Publishing project used to isolate channels, languages and campaigns.",
                                        "example": "PRJ-A1B2C3D4E5"
                                    }
                                },
                                "required": [
                                    "project_id"
                                ]
                            }
                        }
                    }
                }
            }
        },
        "/": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Discover API version, base URL, documentation and resources.",
                "operationId": "get_",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "name": "Vidmfy API",
                                        "version": "v1",
                                        "documentation": "https://vidmfy.com/?page=api-documentation",
                                        "base_url": "https://vidmfy.com/api/v1",
                                        "authentication": "Authorization: Bearer vfm_live_…",
                                        "resources": [
                                            "account",
                                            "connection management",
                                            "language routing",
                                            "videos",
                                            "video translations",
                                            "campaigns",
                                            "billing",
                                            "analytics",
                                            "URL source checks"
                                        ]
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [],
                "x-vidmfy-scope": "Public"
            }
        },
        "/health": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Check whether API v1 and its database bootstrap are operational.",
                "operationId": "get_health",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "service": "Vidmfy API",
                                        "version": "v1",
                                        "status": "operational",
                                        "time": "2026-08-02T09:30:00+02:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [],
                "x-vidmfy-scope": "Public"
            }
        },
        "/routes": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Return the complete machine-readable REST route, scope and parameter catalog used by this documentation.",
                "operationId": "get_routes",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "base_url": "https://vidmfy.com/api/v1",
                                        "endpoint_count": 41,
                                        "generated_at": "2026-08-12T11:00:00+02:00",
                                        "routes": []
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [],
                "x-vidmfy-scope": "Public"
            }
        },
        "/openapi.json": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Return the OpenAPI 3.1 contract generated from the canonical REST endpoint catalog.",
                "operationId": "get_openapi_json",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "openapi": "3.1.0",
                                    "info": {
                                        "title": "Vidmfy REST API",
                                        "version": "1.0.0"
                                    },
                                    "paths": []
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [],
                "x-vidmfy-scope": "Public"
            }
        },
        "/me": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "Return the authenticated account, plan and current API key. Wallet data is included only with billing:read.",
                "operationId": "get_me",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": 42,
                                        "name": "Alex Martin",
                                        "email": "alex@example.com",
                                        "company": "Example Studio",
                                        "language": "English",
                                        "timezone": "Europe/Brussels",
                                        "plan": {
                                            "code": "creator",
                                            "subscription_status": "active"
                                        },
                                        "api_key": {
                                            "name": "Production website",
                                            "prefix": "vfm_live_9060E409",
                                            "scopes": [
                                                "account:read",
                                                "billing:read"
                                            ]
                                        },
                                        "wallet": {
                                            "balance_cents": 3595,
                                            "balance": "35.95"
                                        },
                                        "free_videos_remaining": 0
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "account:read"
            }
        },
        "/capabilities": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "List supported providers, destinations, formats, BCP-47 languages and the current account entitlements. Multiple same-platform connections and translations are available during Trial and with active Pro.",
                "operationId": "get_capabilities",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "video_providers": [
                                            "auto",
                                            "heygen",
                                            "openai",
                                            "google",
                                            "runway"
                                        ],
                                        "video_types": [
                                            "short",
                                            "youtube"
                                        ],
                                        "publishing_destinations": [
                                            "youtube",
                                            "instagram",
                                            "tiktok",
                                            "facebook"
                                        ],
                                        "languages": {
                                            "en": "English",
                                            "fr-BE": "French (Belgium)",
                                            "nl-BE": "Dutch (Belgium)"
                                        },
                                        "entitlements": {
                                            "multiple_destination_connections": true,
                                            "video_translations": true,
                                            "required_plan": "pro",
                                            "available_during_trial": true
                                        },
                                        "localization": {
                                            "maximum_target_languages": 20
                                        },
                                        "limits": {
                                            "publishing_connections_per_platform": null,
                                            "translation_languages_per_request": 20
                                        }
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read"
            }
        },
        "/connections": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "Return safe provider availability and connected publishing destinations, including their routing language, without secrets or OAuth tokens.",
                "operationId": "get_connections",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "content_and_video_providers": {
                                            "openai": {
                                                "credential_source": "vidmfy",
                                                "ready": true,
                                                "managed_status": {
                                                    "available": true,
                                                    "enabled": true,
                                                    "unit": "tokens"
                                                }
                                            }
                                        },
                                        "publishing_destinations": {
                                            "youtube": [
                                                {
                                                    "id": 4,
                                                    "name": "Example Channel",
                                                    "external_id": "UC123",
                                                    "default_language_code": "en",
                                                    "language": "English",
                                                    "is_default": true,
                                                    "last_verified_at": "2026-08-02 09:00:00"
                                                }
                                            ],
                                            "instagram": [
                                                {
                                                    "id": 12,
                                                    "name": "@examplebrand_fr",
                                                    "external_id": "17841400000000000",
                                                    "default_language_code": "fr-BE",
                                                    "language": "French (Belgium)",
                                                    "is_default": true,
                                                    "last_verified_at": "2026-08-02 09:00:00"
                                                }
                                            ]
                                        }
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read"
            }
        },
        "/connections/{platform}": {
            "get": {
                "tags": [
                    "Connections"
                ],
                "summary": "List every connected account for one destination platform, including custom label, official identity, default language and default flag.",
                "operationId": "get_connections_platform",
                "parameters": [
                    {
                        "name": "platform",
                        "in": "path",
                        "required": true,
                        "description": "Publishing platform whose connected accounts are being managed.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "platform": "instagram",
                                            "id": 12,
                                            "name": "French shop",
                                            "platform_name": "examplebrand_fr",
                                            "connection_label": "French shop",
                                            "default_language_code": "fr-BE",
                                            "language": "French (Belgium)",
                                            "external_id": "17841400000000000",
                                            "is_default": true,
                                            "last_verified_at": "2026-08-02 09:00:00"
                                        }
                                    ],
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read"
            }
        },
        "/connections/{platform}/{connection_id}": {
            "get": {
                "tags": [
                    "Connections"
                ],
                "summary": "Return one safe publishing connection without exposing OAuth tokens or application secrets.",
                "operationId": "get_connections_platform_connection_id",
                "parameters": [
                    {
                        "name": "platform",
                        "in": "path",
                        "required": true,
                        "description": "Publishing platform whose connected accounts are being managed.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    },
                    {
                        "name": "connection_id",
                        "in": "path",
                        "required": true,
                        "description": "Account ID returned by GET /connections or GET /connections/{platform}.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "12"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "platform": "instagram",
                                        "id": 12,
                                        "name": "French shop",
                                        "platform_name": "examplebrand_fr",
                                        "connection_label": "French shop",
                                        "default_language_code": "fr-BE",
                                        "language": "French (Belgium)",
                                        "external_id": "17841400000000000",
                                        "is_default": true,
                                        "last_verified_at": "2026-08-02 09:00:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read"
            },
            "patch": {
                "tags": [
                    "Connections"
                ],
                "summary": "Change a private connection label, its default routing language or the platform default account. Only supplied fields are changed.",
                "operationId": "patch_connections_platform_connection_id",
                "parameters": [
                    {
                        "name": "platform",
                        "in": "path",
                        "required": true,
                        "description": "Publishing platform whose connected accounts are being managed.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    },
                    {
                        "name": "connection_id",
                        "in": "path",
                        "required": true,
                        "description": "Account ID returned by GET /connections or GET /connections/{platform}.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "12"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "platform": "instagram",
                                        "id": 12,
                                        "name": "French shop",
                                        "platform_name": "examplebrand_fr",
                                        "connection_label": "French shop",
                                        "default_language_code": "fr-BE",
                                        "language": "French (Belgium)",
                                        "external_id": "17841400000000000",
                                        "is_default": true
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:write",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "connection_label": {
                                        "type": "string",
                                        "description": "Private label used to identify this connection in Vidmfy and API payloads. Empty or null removes the custom label.",
                                        "example": "French shop"
                                    },
                                    "default_language_code": {
                                        "type": "string",
                                        "description": "Default content language used by automatic translation routing. Empty or null disables language routing for this connection.",
                                        "example": "fr-BE"
                                    },
                                    "project_id": {
                                        "type": "string",
                                        "description": "Assign this publishing account to a project, or null to leave it unassigned.",
                                        "example": "PRJ-A1B2C3D4E5"
                                    },
                                    "is_default": {
                                        "type": "boolean",
                                        "description": "When true, makes this the platform default and removes the default flag from the other accounts on that platform.",
                                        "example": "true"
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Connections"
                ],
                "summary": "Completely remove one platform authorization when it is not used by an active production. Historical videos remain preserved.",
                "operationId": "delete_connections_platform_connection_id",
                "parameters": [
                    {
                        "name": "platform",
                        "in": "path",
                        "required": true,
                        "description": "Publishing platform whose connected accounts are being managed.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    },
                    {
                        "name": "connection_id",
                        "in": "path",
                        "required": true,
                        "description": "Account ID returned by GET /connections or GET /connections/{platform}.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "12"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "deleted": true,
                                        "platform": "instagram",
                                        "account_id": 12,
                                        "historical_videos_preserved": true,
                                        "new_default_account_id": 15
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:write"
            }
        },
        "/connections/{platform}/authorization": {
            "post": {
                "tags": [
                    "Connections"
                ],
                "summary": "Return an OAuth URL. The first account is available to every eligible subscription; adding another account on the same platform requires Trial or active Pro. Supply connection_id to reconnect an existing account without adding one.",
                "operationId": "post_connections_platform_authorization",
                "parameters": [
                    {
                        "name": "platform",
                        "in": "path",
                        "required": true,
                        "description": "Publishing platform whose connected accounts are being managed.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "platform": "instagram",
                                        "authorization_url": "https://vidmfy.com/instagram-oauth.php?account_id=12",
                                        "requires_user_consent": true,
                                        "supports_multiple_accounts": true,
                                        "multiple_accounts_entitlement": "trial_or_pro",
                                        "existing_connections": 2
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:write",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "connection_id": {
                                        "type": "integer",
                                        "description": "Existing connection to reauthorize. Omit it only when adding a new account.",
                                        "example": 12
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/connections/routing": {
            "get": {
                "tags": [
                    "Connections"
                ],
                "summary": "Preview automatic multilingual routing before creating a video. Shows all matching accounts and the account selected on each platform for every language.",
                "operationId": "get_connections_routing",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "routing_mode": "default_language",
                                        "languages": [
                                            {
                                                "language_code": "fr-BE",
                                                "language": "French (Belgium)",
                                                "platforms": {
                                                    "youtube": [
                                                        {
                                                            "platform": "youtube",
                                                            "account_id": 4,
                                                            "connection_label": "Belgium channel",
                                                            "platform_name": "Example Channel",
                                                            "is_default": true
                                                        }
                                                    ],
                                                    "instagram": [
                                                        {
                                                            "platform": "instagram",
                                                            "account_id": 12,
                                                            "connection_label": "French shop",
                                                            "platform_name": "examplebrand_fr",
                                                            "is_default": true
                                                        }
                                                    ]
                                                },
                                                "automatic_routes": {
                                                    "youtube": 4,
                                                    "instagram": 12
                                                }
                                            }
                                        ],
                                        "connections_without_language": [],
                                        "rule": "For each translated language, Vidmfy selects the default matching account on every platform."
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "connections:read"
            }
        },
        "/videos": {
            "get": {
                "tags": [
                    "Videos"
                ],
                "summary": "List, search and filter videos.",
                "operationId": "get_videos",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number. Default: 1.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "1"
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "Number of results per page. Default: 25.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "25"
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Filter by one or several production statuses.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "published,failed"
                    },
                    {
                        "name": "destination",
                        "in": "query",
                        "required": false,
                        "description": "Return videos targeting this platform.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    },
                    {
                        "name": "campaign_id",
                        "in": "query",
                        "required": false,
                        "description": "Return videos linked to one campaign.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "CMP-A1B2C3D4E5"
                    },
                    {
                        "name": "project_id",
                        "in": "query",
                        "required": false,
                        "description": "Return videos linked to one publishing project.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "PRJ-A1B2C3D4E5"
                    },
                    {
                        "name": "language_code",
                        "in": "query",
                        "required": false,
                        "description": "Return only this original or translated language.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "fr-BE"
                    },
                    {
                        "name": "localization_group_id",
                        "in": "query",
                        "required": false,
                        "description": "Return all language versions belonging to one localization group.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "MLG-K2L3M4N5P6"
                    },
                    {
                        "name": "localization_role",
                        "in": "query",
                        "required": false,
                        "description": "Return only originals or translated variants.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "translated"
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Minimum publication date/time.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "2026-08-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Maximum publication date/time.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "2026-08-31T23:59:59+02:00"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Search reference, title or topic.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "product"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "id": "VID-A1B2C3D4E5",
                                            "title": "Discover our new product",
                                            "topic": "Present the main customer benefits",
                                            "status": "draft",
                                            "progress": {
                                                "stage": null,
                                                "validation": null,
                                                "error": null,
                                                "retry_count": 0
                                            },
                                            "format": {
                                                "type": "short",
                                                "aspect_ratio": "9:16",
                                                "duration_value": 1,
                                                "billing_duration_seconds": 60
                                            },
                                            "generation": {
                                                "provider": "auto",
                                                "model": null,
                                                "provider_job_id": null
                                            },
                                            "localization": {
                                                "group_id": "MLG-K2L3M4N5P6",
                                                "role": "original",
                                                "language_code": "en",
                                                "language": "English",
                                                "source_video_id": null,
                                                "status": "grouped"
                                            },
                                            "destinations": {
                                                "instagram": {
                                                    "enabled": true,
                                                    "account_id": 12,
                                                    "external_id": null,
                                                    "url": null
                                                }
                                            },
                                            "campaign_id": null,
                                            "scheduled_at": "2026-08-05T10:00:00+02:00",
                                            "publish_at": null,
                                            "published_at": null,
                                            "created_at": "2026-08-02T09:30:00+02:00",
                                            "updated_at": "2026-08-02T09:30:00+02:00"
                                        }
                                    ],
                                    "meta": {
                                        "page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "pages": 1
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:read"
            },
            "post": {
                "tags": [
                    "Videos"
                ],
                "summary": "Create a draft or queue an original plus optional language variants. Each translated version receives its own VID reference and routes to matching destination languages.",
                "operationId": "post_videos",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "title": "Discover our new product",
                                        "topic": "Present the main customer benefits",
                                        "status": "draft",
                                        "progress": {
                                            "stage": null,
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 0
                                        },
                                        "format": {
                                            "type": "short",
                                            "aspect_ratio": "9:16",
                                            "duration_value": 1,
                                            "billing_duration_seconds": 60
                                        },
                                        "generation": {
                                            "provider": "auto",
                                            "model": null,
                                            "provider_job_id": null
                                        },
                                        "localization": {
                                            "group_id": "MLG-K2L3M4N5P6",
                                            "role": "original",
                                            "language_code": "en",
                                            "language": "English",
                                            "source_video_id": null,
                                            "status": "grouped"
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "campaign_id": null,
                                        "scheduled_at": "2026-08-05T10:00:00+02:00",
                                        "publish_at": null,
                                        "published_at": null,
                                        "created_at": "2026-08-02T09:30:00+02:00",
                                        "updated_at": "2026-08-02T09:30:00+02:00",
                                        "language_versions": [
                                            {
                                                "id": "VID-A1B2C3D4E5",
                                                "role": "original",
                                                "language_code": "en",
                                                "language": "English",
                                                "status": "draft",
                                                "destinations": {
                                                    "instagram": {
                                                        "enabled": true,
                                                        "account_id": 21
                                                    }
                                                }
                                            },
                                            {
                                                "id": "VID-F6G7H8J9K0",
                                                "role": "translated",
                                                "language_code": "fr-BE",
                                                "language": "French (Belgium)",
                                                "status": "draft",
                                                "destinations": {
                                                    "instagram": {
                                                        "enabled": true,
                                                        "account_id": 12
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "project_id": {
                                        "type": "string",
                                        "description": "Project returned by GET /projects. Every selected destination must belong to it.",
                                        "example": "PRJ-A1B2C3D4E5"
                                    },
                                    "title": {
                                        "type": "string",
                                        "description": "Human-readable video title.",
                                        "example": "Discover our new product"
                                    },
                                    "topic": {
                                        "type": "string",
                                        "description": "Subject, facts and instructions used to prepare the content.",
                                        "example": "Present the three main customer benefits"
                                    },
                                    "description": {
                                        "type": "string",
                                        "description": "Additional publication description.",
                                        "example": "A concise product presentation."
                                    },
                                    "video_type": {
                                        "type": "string",
                                        "description": "Video format. Default: short.",
                                        "example": "short"
                                    },
                                    "video_provider": {
                                        "type": "string",
                                        "description": "Generation provider. Auto selects a ready provider.",
                                        "example": "auto"
                                    },
                                    "provider_model": {
                                        "type": "string",
                                        "description": "Supported provider model override.",
                                        "example": "sora-2"
                                    },
                                    "heygen_generation_mode": {
                                        "type": "string",
                                        "description": "HeyGen production mode.",
                                        "example": "video_agent"
                                    },
                                    "visual_instructions": {
                                        "type": "string",
                                        "description": "Scenes, rhythm, framing and visual direction.",
                                        "example": "Vertical product shots with clean transitions."
                                    },
                                    "reference_media_urls": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "Public media references accessible by the provider.",
                                        "example": [
                                            "https://example.com/product.jpg"
                                        ]
                                    },
                                    "product_photo_id": {
                                        "type": "string",
                                        "description": "Protected photo returned by POST /media/photos. Activates the photo-led production workflow.",
                                        "example": "4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg"
                                    },
                                    "retouch_photo": {
                                        "type": "boolean",
                                        "description": "When product_photo_id is supplied, request the separately billed protected photo-retouch stage.",
                                        "example": "true"
                                    },
                                    "content_goal": {
                                        "type": "string",
                                        "description": "Communication goal used to direct a photo-led production. Default: sell.",
                                        "example": "sell"
                                    },
                                    "duration_seconds": {
                                        "type": "integer",
                                        "description": "Presenter: 1–1200. OpenAI, Veo and Runway: 4, 8 or 12.",
                                        "example": "60"
                                    },
                                    "language": {
                                        "type": "string",
                                        "description": "Original video language. Kept for backward compatibility; prefer localization.source_language_code.",
                                        "example": "English"
                                    },
                                    "language_code": {
                                        "type": "string",
                                        "description": "Original language code. Kept for backward compatibility; prefer localization.source_language_code.",
                                        "example": "en"
                                    },
                                    "translation_languages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "Backward-compatible alias of localization.target_languages. An empty array creates no translation.",
                                        "example": [
                                            "fr-BE",
                                            "nl-BE"
                                        ]
                                    },
                                    "localization": {
                                        "type": "string",
                                        "description": "Controls the source language, optional translations and automatic routing.",
                                        "example": {
                                            "source_language_code": "en",
                                            "translate": true,
                                            "target_languages": [
                                                "fr-BE",
                                                "nl-BE"
                                            ]
                                        }
                                    },
                                    "localization.source_language_code": {
                                        "type": "string",
                                        "description": "Language of the original title, topic and description.",
                                        "example": "en"
                                    },
                                    "localization.translate": {
                                        "type": "boolean",
                                        "description": "Set false to create only the original video, even when target_languages is present. Default: true.",
                                        "example": "true"
                                    },
                                    "localization.target_languages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "One independently billed and tracked video is created per language and routed by connection default language.",
                                        "example": [
                                            "fr-BE",
                                            "nl-BE"
                                        ]
                                    },
                                    "tone": {
                                        "type": "string",
                                        "description": "Editorial tone.",
                                        "example": "Professional and friendly"
                                    },
                                    "audience": {
                                        "type": "string",
                                        "description": "Target audience and useful context.",
                                        "example": "Small business owners"
                                    },
                                    "call_to_action": {
                                        "type": "string",
                                        "description": "Closing action requested from viewers.",
                                        "example": "Visit our website"
                                    },
                                    "aspect_ratio": {
                                        "type": "string",
                                        "description": "Instagram, TikTok and Facebook Reels require 9:16.",
                                        "example": "9:16"
                                    },
                                    "visibility": {
                                        "type": "string",
                                        "description": "YouTube visibility. Default: private.",
                                        "example": "private"
                                    },
                                    "thumbnail_prompt": {
                                        "type": "string",
                                        "description": "Optional YouTube thumbnail direction.",
                                        "example": "Bright product close-up"
                                    },
                                    "scheduled_at": {
                                        "type": "string",
                                        "description": "Desired publication time with timezone. Defaults to now.",
                                        "example": "2026-08-05T10:00:00+02:00"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "Draft saves without production. Queue starts preflights and protected billing. Default: draft.",
                                        "example": "draft"
                                    },
                                    "destinations": {
                                        "type": "string",
                                        "description": "At least one keyed destination object: youtube, instagram, tiktok or facebook.",
                                        "example": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12
                                            }
                                        }
                                    },
                                    "destinations.*.enabled": {
                                        "type": "boolean",
                                        "description": "Enables that destination.",
                                        "example": "true"
                                    },
                                    "destinations.*.account_id": {
                                        "type": "integer",
                                        "description": "Connected account ID. Omit to use the default account.",
                                        "example": "12"
                                    },
                                    "destinations.*.connection_label": {
                                        "type": "string",
                                        "description": "Alternative to account_id. Must exactly match one custom connection label; ambiguous labels are rejected.",
                                        "example": "Main French channel"
                                    },
                                    "destinations.tiktok.consent": {
                                        "type": "boolean",
                                        "description": "Confirms the TikTok publication choices.",
                                        "example": "true"
                                    }
                                },
                                "required": [
                                    "project_id",
                                    "title",
                                    "topic",
                                    "destinations",
                                    "destinations.*.enabled",
                                    "destinations.tiktok.consent"
                                ]
                            }
                        }
                    }
                }
            }
        },
        "/videos/{video_id}": {
            "get": {
                "tags": [
                    "Videos"
                ],
                "summary": "Return complete content, generation, destination and publication details for one video.",
                "operationId": "get_videos_video_id",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "title": "Discover our new product",
                                        "topic": "Present the main customer benefits",
                                        "status": "draft",
                                        "progress": {
                                            "stage": null,
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 0
                                        },
                                        "format": {
                                            "type": "short",
                                            "aspect_ratio": "9:16",
                                            "duration_value": 1,
                                            "billing_duration_seconds": 60
                                        },
                                        "generation": {
                                            "provider": "auto",
                                            "model": null,
                                            "provider_job_id": null
                                        },
                                        "localization": {
                                            "group_id": "MLG-K2L3M4N5P6",
                                            "role": "original",
                                            "language_code": "en",
                                            "language": "English",
                                            "source_video_id": null,
                                            "status": "grouped"
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "campaign_id": null,
                                        "scheduled_at": "2026-08-05T10:00:00+02:00",
                                        "publish_at": null,
                                        "published_at": null,
                                        "created_at": "2026-08-02T09:30:00+02:00",
                                        "updated_at": "2026-08-02T09:30:00+02:00",
                                        "content": {
                                            "description": "A concise product presentation.",
                                            "language": "English",
                                            "tone": "Professional and friendly",
                                            "audience": "Small business owners",
                                            "call_to_action": "Visit our website",
                                            "script": null,
                                            "visibility": "private"
                                        }
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:read"
            },
            "patch": {
                "tags": [
                    "Videos"
                ],
                "summary": "Edit an existing draft or queued video. Only supplied fields are changed.",
                "operationId": "patch_videos_video_id",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "title": "Updated product presentation",
                                        "topic": "Present the main customer benefits",
                                        "status": "draft",
                                        "progress": {
                                            "stage": null,
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 0
                                        },
                                        "format": {
                                            "type": "short",
                                            "aspect_ratio": "9:16",
                                            "duration_value": 1,
                                            "billing_duration_seconds": 60
                                        },
                                        "generation": {
                                            "provider": "auto",
                                            "model": null,
                                            "provider_job_id": null
                                        },
                                        "localization": {
                                            "group_id": "MLG-K2L3M4N5P6",
                                            "role": "original",
                                            "language_code": "en",
                                            "language": "English",
                                            "source_video_id": null,
                                            "status": "grouped"
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "campaign_id": null,
                                        "scheduled_at": "2026-08-05T10:00:00+02:00",
                                        "publish_at": null,
                                        "published_at": null,
                                        "created_at": "2026-08-02T09:30:00+02:00",
                                        "updated_at": "2026-08-02T09:30:00+02:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "project_id": {
                                        "type": "string",
                                        "description": "Project returned by GET /projects. Every selected destination must belong to it.",
                                        "example": "PRJ-A1B2C3D4E5"
                                    },
                                    "title": {
                                        "type": "string",
                                        "description": "Human-readable video title.",
                                        "example": "Discover our new product"
                                    },
                                    "topic": {
                                        "type": "string",
                                        "description": "Subject, facts and instructions used to prepare the content.",
                                        "example": "Present the three main customer benefits"
                                    },
                                    "description": {
                                        "type": "string",
                                        "description": "Additional publication description.",
                                        "example": "A concise product presentation."
                                    },
                                    "video_type": {
                                        "type": "string",
                                        "description": "Video format. Default: short.",
                                        "example": "short"
                                    },
                                    "video_provider": {
                                        "type": "string",
                                        "description": "Generation provider. Auto selects a ready provider.",
                                        "example": "auto"
                                    },
                                    "provider_model": {
                                        "type": "string",
                                        "description": "Supported provider model override.",
                                        "example": "sora-2"
                                    },
                                    "heygen_generation_mode": {
                                        "type": "string",
                                        "description": "HeyGen production mode.",
                                        "example": "video_agent"
                                    },
                                    "visual_instructions": {
                                        "type": "string",
                                        "description": "Scenes, rhythm, framing and visual direction.",
                                        "example": "Vertical product shots with clean transitions."
                                    },
                                    "reference_media_urls": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "Public media references accessible by the provider.",
                                        "example": [
                                            "https://example.com/product.jpg"
                                        ]
                                    },
                                    "product_photo_id": {
                                        "type": "string",
                                        "description": "Protected photo returned by POST /media/photos. Activates the photo-led production workflow.",
                                        "example": "4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg"
                                    },
                                    "retouch_photo": {
                                        "type": "boolean",
                                        "description": "When product_photo_id is supplied, request the separately billed protected photo-retouch stage.",
                                        "example": "true"
                                    },
                                    "content_goal": {
                                        "type": "string",
                                        "description": "Communication goal used to direct a photo-led production. Default: sell.",
                                        "example": "sell"
                                    },
                                    "duration_seconds": {
                                        "type": "integer",
                                        "description": "Presenter: 1–1200. OpenAI, Veo and Runway: 4, 8 or 12.",
                                        "example": "60"
                                    },
                                    "language": {
                                        "type": "string",
                                        "description": "Original video language. Kept for backward compatibility; prefer localization.source_language_code.",
                                        "example": "English"
                                    },
                                    "language_code": {
                                        "type": "string",
                                        "description": "Original language code. Kept for backward compatibility; prefer localization.source_language_code.",
                                        "example": "en"
                                    },
                                    "translation_languages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "Backward-compatible alias of localization.target_languages. An empty array creates no translation.",
                                        "example": [
                                            "fr-BE",
                                            "nl-BE"
                                        ]
                                    },
                                    "localization": {
                                        "type": "string",
                                        "description": "Controls the source language, optional translations and automatic routing.",
                                        "example": {
                                            "source_language_code": "en",
                                            "translate": true,
                                            "target_languages": [
                                                "fr-BE",
                                                "nl-BE"
                                            ]
                                        }
                                    },
                                    "localization.source_language_code": {
                                        "type": "string",
                                        "description": "Language of the original title, topic and description.",
                                        "example": "en"
                                    },
                                    "localization.translate": {
                                        "type": "boolean",
                                        "description": "Set false to create only the original video, even when target_languages is present. Default: true.",
                                        "example": "true"
                                    },
                                    "localization.target_languages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "One independently billed and tracked video is created per language and routed by connection default language.",
                                        "example": [
                                            "fr-BE",
                                            "nl-BE"
                                        ]
                                    },
                                    "tone": {
                                        "type": "string",
                                        "description": "Editorial tone.",
                                        "example": "Professional and friendly"
                                    },
                                    "audience": {
                                        "type": "string",
                                        "description": "Target audience and useful context.",
                                        "example": "Small business owners"
                                    },
                                    "call_to_action": {
                                        "type": "string",
                                        "description": "Closing action requested from viewers.",
                                        "example": "Visit our website"
                                    },
                                    "aspect_ratio": {
                                        "type": "string",
                                        "description": "Instagram, TikTok and Facebook Reels require 9:16.",
                                        "example": "9:16"
                                    },
                                    "visibility": {
                                        "type": "string",
                                        "description": "YouTube visibility. Default: private.",
                                        "example": "private"
                                    },
                                    "thumbnail_prompt": {
                                        "type": "string",
                                        "description": "Optional YouTube thumbnail direction.",
                                        "example": "Bright product close-up"
                                    },
                                    "scheduled_at": {
                                        "type": "string",
                                        "description": "Desired publication time with timezone. Defaults to now.",
                                        "example": "2026-08-05T10:00:00+02:00"
                                    },
                                    "destinations": {
                                        "type": "string",
                                        "description": "At least one keyed destination object: youtube, instagram, tiktok or facebook.",
                                        "example": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12
                                            }
                                        }
                                    },
                                    "destinations.*.enabled": {
                                        "type": "boolean",
                                        "description": "Required only inside a destination object supplied by the PATCH request.",
                                        "example": "true"
                                    },
                                    "destinations.*.account_id": {
                                        "type": "integer",
                                        "description": "Connected account ID. Omit to use the default account.",
                                        "example": "12"
                                    },
                                    "destinations.*.connection_label": {
                                        "type": "string",
                                        "description": "Alternative to account_id. Must exactly match one custom connection label; ambiguous labels are rejected.",
                                        "example": "Main French channel"
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Videos"
                ],
                "summary": "Cancel an eligible draft or queued video while preserving its audit history.",
                "operationId": "delete_videos_video_id",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "title": "Discover our new product",
                                        "topic": "Present the main customer benefits",
                                        "status": "cancelled",
                                        "progress": {
                                            "stage": null,
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 0
                                        },
                                        "format": {
                                            "type": "short",
                                            "aspect_ratio": "9:16",
                                            "duration_value": 1,
                                            "billing_duration_seconds": 60
                                        },
                                        "generation": {
                                            "provider": "auto",
                                            "model": null,
                                            "provider_job_id": null
                                        },
                                        "localization": {
                                            "group_id": "MLG-K2L3M4N5P6",
                                            "role": "original",
                                            "language_code": "en",
                                            "language": "English",
                                            "source_video_id": null,
                                            "status": "grouped"
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "campaign_id": null,
                                        "scheduled_at": "2026-08-05T10:00:00+02:00",
                                        "publish_at": null,
                                        "published_at": null,
                                        "created_at": "2026-08-02T09:30:00+02:00",
                                        "updated_at": "2026-08-02T09:30:00+02:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write"
            }
        },
        "/videos/{video_id}/translations": {
            "get": {
                "tags": [
                    "Translations"
                ],
                "summary": "Return the original video and every active translated version with its own VID reference, language, destinations and publication status. A translated VID may also be supplied.",
                "operationId": "get_videos_video_id_translations",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "group_id": "MLG-K2L3M4N5P6",
                                        "source_video": {
                                            "id": "VID-A1B2C3D4E5",
                                            "title": "Discover our new product",
                                            "topic": "Present the main customer benefits",
                                            "status": "draft",
                                            "progress": {
                                                "stage": null,
                                                "validation": null,
                                                "error": null,
                                                "retry_count": 0
                                            },
                                            "format": {
                                                "type": "short",
                                                "aspect_ratio": "9:16",
                                                "duration_value": 1,
                                                "billing_duration_seconds": 60
                                            },
                                            "generation": {
                                                "provider": "auto",
                                                "model": null,
                                                "provider_job_id": null
                                            },
                                            "localization": {
                                                "group_id": "MLG-K2L3M4N5P6",
                                                "role": "original",
                                                "language_code": "en",
                                                "language": "English",
                                                "source_video_id": null,
                                                "status": "grouped"
                                            },
                                            "destinations": {
                                                "instagram": {
                                                    "enabled": true,
                                                    "account_id": 12,
                                                    "external_id": null,
                                                    "url": null
                                                }
                                            },
                                            "campaign_id": null,
                                            "scheduled_at": "2026-08-05T10:00:00+02:00",
                                            "publish_at": null,
                                            "published_at": null,
                                            "created_at": "2026-08-02T09:30:00+02:00",
                                            "updated_at": "2026-08-02T09:30:00+02:00"
                                        },
                                        "translations": [
                                            {
                                                "id": "VID-F6G7H8J9K0",
                                                "title": "Découvrez notre nouveau produit",
                                                "topic": "Present the main customer benefits",
                                                "status": "draft",
                                                "progress": {
                                                    "stage": null,
                                                    "validation": null,
                                                    "error": null,
                                                    "retry_count": 0
                                                },
                                                "format": {
                                                    "type": "short",
                                                    "aspect_ratio": "9:16",
                                                    "duration_value": 1,
                                                    "billing_duration_seconds": 60
                                                },
                                                "generation": {
                                                    "provider": "auto",
                                                    "model": null,
                                                    "provider_job_id": null
                                                },
                                                "localization": {
                                                    "group_id": "MLG-K2L3M4N5P6",
                                                    "role": "translated",
                                                    "language_code": "fr-BE",
                                                    "language": "French (Belgium)",
                                                    "source_video_id": "VID-A1B2C3D4E5",
                                                    "status": "pending_translation"
                                                },
                                                "destinations": {
                                                    "instagram": {
                                                        "enabled": true,
                                                        "account_id": 12,
                                                        "external_id": null,
                                                        "url": null
                                                    }
                                                },
                                                "campaign_id": null,
                                                "scheduled_at": "2026-08-05T10:00:00+02:00",
                                                "publish_at": null,
                                                "published_at": null,
                                                "created_at": "2026-08-02T09:30:00+02:00",
                                                "updated_at": "2026-08-02T09:30:00+02:00"
                                            }
                                        ],
                                        "translation_count": 1
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:read"
            },
            "post": {
                "tags": [
                    "Translations"
                ],
                "summary": "Trial or active Pro only. Replace the optional translation choices of an original draft. Use mode queue to start the original and every selected language after routing and billing preflights.",
                "operationId": "post_videos_video_id_translations",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "group_id": "MLG-K2L3M4N5P6",
                                        "source_video": {
                                            "id": "VID-A1B2C3D4E5",
                                            "title": "Discover our new product",
                                            "topic": "Present the main customer benefits",
                                            "status": "draft",
                                            "progress": {
                                                "stage": null,
                                                "validation": null,
                                                "error": null,
                                                "retry_count": 0
                                            },
                                            "format": {
                                                "type": "short",
                                                "aspect_ratio": "9:16",
                                                "duration_value": 1,
                                                "billing_duration_seconds": 60
                                            },
                                            "generation": {
                                                "provider": "auto",
                                                "model": null,
                                                "provider_job_id": null
                                            },
                                            "localization": {
                                                "group_id": "MLG-K2L3M4N5P6",
                                                "role": "original",
                                                "language_code": "en",
                                                "language": "English",
                                                "source_video_id": null,
                                                "status": "grouped"
                                            },
                                            "destinations": {
                                                "instagram": {
                                                    "enabled": true,
                                                    "account_id": 12,
                                                    "external_id": null,
                                                    "url": null
                                                }
                                            },
                                            "campaign_id": null,
                                            "scheduled_at": "2026-08-05T10:00:00+02:00",
                                            "publish_at": null,
                                            "published_at": null,
                                            "created_at": "2026-08-02T09:30:00+02:00",
                                            "updated_at": "2026-08-02T09:30:00+02:00"
                                        },
                                        "translations": [
                                            {
                                                "id": "VID-F6G7H8J9K0",
                                                "status": "draft",
                                                "localization": {
                                                    "role": "translated",
                                                    "language_code": "fr-BE",
                                                    "source_video_id": "VID-A1B2C3D4E5"
                                                },
                                                "destinations": {
                                                    "instagram": {
                                                        "enabled": true,
                                                        "account_id": 12
                                                    }
                                                }
                                            }
                                        ],
                                        "translation_count": 1,
                                        "requested_languages": [
                                            "fr-BE"
                                        ],
                                        "mode": "draft"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "translation_languages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "Required unless localization.target_languages or translate=false is supplied. Empty removes draft translations.",
                                        "example": [
                                            "fr-BE",
                                            "nl-BE"
                                        ]
                                    },
                                    "translate": {
                                        "type": "boolean",
                                        "description": "Set false to remove every draft translation and keep only the original.",
                                        "example": "true"
                                    },
                                    "localization.target_languages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "Structured alternative to translation_languages.",
                                        "example": [
                                            "fr-BE",
                                            "nl-BE"
                                        ]
                                    },
                                    "localization.translate": {
                                        "type": "boolean",
                                        "description": "Structured alternative to translate.",
                                        "example": "true"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "Draft only prepares variants. Queue starts protected production. Default: draft.",
                                        "example": "draft"
                                    }
                                },
                                "required": [
                                    "translation_languages"
                                ]
                            }
                        }
                    }
                }
            }
        },
        "/videos/{video_id}/status": {
            "get": {
                "tags": [
                    "Videos"
                ],
                "summary": "Retrieve a lightweight production status suitable for polling.",
                "operationId": "get_videos_video_id_status",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "status": "generating_video",
                                        "progress": {
                                            "stage": "video_generation",
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 0
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "updated_at": "2026-08-02T09:42:00+02:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:read"
            }
        },
        "/videos/{video_id}/events": {
            "get": {
                "tags": [
                    "Videos"
                ],
                "summary": "Return ordered activity and error events for production tracking.",
                "operationId": "get_videos_video_id_events",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "type": "activity",
                                            "status": "success",
                                            "message": "Script generation completed.",
                                            "process_name": null,
                                            "stage": null,
                                            "created_at": "2026-08-02 09:35:00"
                                        },
                                        {
                                            "type": "activity",
                                            "status": "info",
                                            "message": "Video generation started.",
                                            "process_name": null,
                                            "stage": null,
                                            "created_at": "2026-08-02 09:36:00"
                                        }
                                    ],
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:read"
            }
        },
        "/videos/{video_id}/costs": {
            "get": {
                "tags": [
                    "Videos"
                ],
                "summary": "Return provider estimates, Vidmfy charges, reservations and refunds for one video.",
                "operationId": "get_videos_video_id_costs",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "video_id": "VID-A1B2C3D4E5",
                                        "currency": "USD",
                                        "totals": {
                                            "provider_cost_estimate_cents": 120.5,
                                            "customer_charge_cents": 185,
                                            "refunded_cents": 0,
                                            "net_customer_charge_cents": 185
                                        },
                                        "charges": [
                                            {
                                                "reference": "MAC-EXAMPLE",
                                                "provider": "heygen",
                                                "operation": "video_agent",
                                                "model": "video_agent",
                                                "credential_source": "vidmfy",
                                                "pricing_unit": "second",
                                                "actual_quantity": 55,
                                                "customer_charge_cents": 185,
                                                "refunded_cents": 0,
                                                "status": "finalized"
                                            }
                                        ]
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "billing:read"
            }
        },
        "/videos/{video_id}/analytics": {
            "get": {
                "tags": [
                    "Videos"
                ],
                "summary": "Return daily platform metrics attached to one published video.",
                "operationId": "get_videos_video_id_analytics",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "video_id": "VID-A1B2C3D4E5",
                                        "items": [
                                            {
                                                "platform": "instagram",
                                                "metric_date": "2026-08-02",
                                                "views": 1250,
                                                "reach": 980,
                                                "impressions": 1400,
                                                "likes": 84,
                                                "comments": 9,
                                                "shares": 17,
                                                "saves": 25,
                                                "watch_time_seconds": 22100,
                                                "average_watch_time_seconds": 17.68,
                                                "followers_gained": 12,
                                                "followers_lost": 0,
                                                "updated_at": "2026-08-02 10:00:00"
                                            }
                                        ]
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "analytics:read"
            }
        },
        "/videos/{video_id}/queue": {
            "post": {
                "tags": [
                    "Videos"
                ],
                "summary": "Start an existing draft after capacity, destination, provider and billing preflights.",
                "operationId": "post_videos_video_id_queue",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "title": "Discover our new product",
                                        "topic": "Present the main customer benefits",
                                        "status": "queued",
                                        "progress": {
                                            "stage": null,
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 0
                                        },
                                        "format": {
                                            "type": "short",
                                            "aspect_ratio": "9:16",
                                            "duration_value": 1,
                                            "billing_duration_seconds": 60
                                        },
                                        "generation": {
                                            "provider": "auto",
                                            "model": null,
                                            "provider_job_id": null
                                        },
                                        "localization": {
                                            "group_id": "MLG-K2L3M4N5P6",
                                            "role": "original",
                                            "language_code": "en",
                                            "language": "English",
                                            "source_video_id": null,
                                            "status": "grouped"
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "campaign_id": null,
                                        "scheduled_at": "2026-08-05T10:00:00+02:00",
                                        "publish_at": "2026-08-05T10:00:00+02:00",
                                        "published_at": null,
                                        "created_at": "2026-08-02T09:30:00+02:00",
                                        "updated_at": "2026-08-02T09:30:00+02:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write"
            }
        },
        "/videos/{video_id}/retry": {
            "post": {
                "tags": [
                    "Videos"
                ],
                "summary": "Retry an eligible failure. Completed reusable media resumes at publication without regenerating the video.",
                "operationId": "post_videos_video_id_retry",
                "parameters": [
                    {
                        "name": "video_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy video reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "VID-A1B2C3D4E5"
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "VID-A1B2C3D4E5",
                                        "title": "Discover our new product",
                                        "topic": "Present the main customer benefits",
                                        "status": "ready_to_upload",
                                        "progress": {
                                            "stage": "publication_retry",
                                            "validation": null,
                                            "error": null,
                                            "retry_count": 1
                                        },
                                        "format": {
                                            "type": "short",
                                            "aspect_ratio": "9:16",
                                            "duration_value": 1,
                                            "billing_duration_seconds": 60
                                        },
                                        "generation": {
                                            "provider": "auto",
                                            "model": null,
                                            "provider_job_id": null
                                        },
                                        "localization": {
                                            "group_id": "MLG-K2L3M4N5P6",
                                            "role": "original",
                                            "language_code": "en",
                                            "language": "English",
                                            "source_video_id": null,
                                            "status": "grouped"
                                        },
                                        "destinations": {
                                            "instagram": {
                                                "enabled": true,
                                                "account_id": 12,
                                                "external_id": null,
                                                "url": null
                                            }
                                        },
                                        "campaign_id": null,
                                        "scheduled_at": "2026-08-05T10:00:00+02:00",
                                        "publish_at": null,
                                        "published_at": null,
                                        "created_at": "2026-08-02T09:30:00+02:00",
                                        "updated_at": "2026-08-02T09:30:00+02:00"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write"
            }
        },
        "/campaigns": {
            "get": {
                "tags": [
                    "Campaigns"
                ],
                "summary": "List campaigns, production counts and multilingual configuration.",
                "operationId": "get_campaigns",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number. Default: 1.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "1"
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "Number of results per page. Default: 25.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "25"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "id": "CMP-A1B2C3D4E5",
                                            "user_id": 42,
                                            "name": "August product launch",
                                            "campaign_type": "normal",
                                            "content_mode": "manual",
                                            "theme": "Present the new collection",
                                            "start_date": "2026-08-05",
                                            "end_date": "2026-08-31",
                                            "weekdays": [
                                                "1",
                                                "3",
                                                "5"
                                            ],
                                            "publish_time": "10:00:00",
                                            "language": "English",
                                            "translation_languages": [
                                                "fr-BE",
                                                "nl-BE"
                                            ],
                                            "localization": {
                                                "source_language_code": "en",
                                                "translation_languages": [
                                                    "fr-BE",
                                                    "nl-BE"
                                                ],
                                                "language_versions_per_publication": 3
                                            },
                                            "destinations": "instagram,tiktok",
                                            "planned_videos": 36,
                                            "video_count": 36
                                        }
                                    ],
                                    "meta": {
                                        "page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "pages": 1
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "campaigns:read"
            }
        },
        "/campaigns/{campaign_id}": {
            "get": {
                "tags": [
                    "Campaigns"
                ],
                "summary": "Return the selected campaign configuration, languages and counts.",
                "operationId": "get_campaigns_campaign_id",
                "parameters": [
                    {
                        "name": "campaign_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy campaign reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "CMP-A1B2C3D4E5"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "id": "CMP-A1B2C3D4E5",
                                        "name": "August product launch",
                                        "campaign_type": "normal",
                                        "content_mode": "manual",
                                        "theme": "Present the new collection",
                                        "start_date": "2026-08-05",
                                        "end_date": "2026-08-31",
                                        "weekdays": [
                                            "1",
                                            "3",
                                            "5"
                                        ],
                                        "publish_time": "10:00:00",
                                        "language": "English",
                                        "translation_languages": [
                                            "fr-BE",
                                            "nl-BE"
                                        ],
                                        "localization": {
                                            "source_language_code": "en",
                                            "translation_languages": [
                                                "fr-BE",
                                                "nl-BE"
                                            ],
                                            "language_versions_per_publication": 3
                                        },
                                        "destinations": "instagram,tiktok",
                                        "planned_videos": 36,
                                        "video_count": 36
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "campaigns:read"
            }
        },
        "/campaigns/{campaign_id}/videos": {
            "get": {
                "tags": [
                    "Campaigns"
                ],
                "summary": "List videos belonging to one campaign. Video list filters remain available.",
                "operationId": "get_campaigns_campaign_id_videos",
                "parameters": [
                    {
                        "name": "campaign_id",
                        "in": "path",
                        "required": true,
                        "description": "Permanent Vidmfy campaign reference.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "CMP-A1B2C3D4E5"
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number. Default: 1.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "1"
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "Number of results per page. Default: 25.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "25"
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Filter by one or several production statuses.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "published,failed"
                    },
                    {
                        "name": "destination",
                        "in": "query",
                        "required": false,
                        "description": "Return videos targeting this platform.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "instagram"
                    },
                    {
                        "name": "project_id",
                        "in": "query",
                        "required": false,
                        "description": "Return videos linked to one publishing project.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "PRJ-A1B2C3D4E5"
                    },
                    {
                        "name": "language_code",
                        "in": "query",
                        "required": false,
                        "description": "Return only this original or translated language.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "fr-BE"
                    },
                    {
                        "name": "localization_group_id",
                        "in": "query",
                        "required": false,
                        "description": "Return all language versions belonging to one localization group.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "MLG-K2L3M4N5P6"
                    },
                    {
                        "name": "localization_role",
                        "in": "query",
                        "required": false,
                        "description": "Return only originals or translated variants.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "translated"
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Minimum publication date/time.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "2026-08-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Maximum publication date/time.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "2026-08-31T23:59:59+02:00"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Search reference, title or topic.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "product"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "id": "VID-A1B2C3D4E5",
                                            "title": "Discover our new product",
                                            "topic": "Present the main customer benefits",
                                            "status": "draft",
                                            "progress": {
                                                "stage": null,
                                                "validation": null,
                                                "error": null,
                                                "retry_count": 0
                                            },
                                            "format": {
                                                "type": "short",
                                                "aspect_ratio": "9:16",
                                                "duration_value": 1,
                                                "billing_duration_seconds": 60
                                            },
                                            "generation": {
                                                "provider": "auto",
                                                "model": null,
                                                "provider_job_id": null
                                            },
                                            "localization": {
                                                "group_id": "MLG-K2L3M4N5P6",
                                                "role": "original",
                                                "language_code": "en",
                                                "language": "English",
                                                "source_video_id": null,
                                                "status": "grouped"
                                            },
                                            "destinations": {
                                                "instagram": {
                                                    "enabled": true,
                                                    "account_id": 12,
                                                    "external_id": null,
                                                    "url": null
                                                }
                                            },
                                            "campaign_id": "CMP-A1B2C3D4E5",
                                            "scheduled_at": "2026-08-05T10:00:00+02:00",
                                            "publish_at": null,
                                            "published_at": null,
                                            "created_at": "2026-08-02T09:30:00+02:00",
                                            "updated_at": "2026-08-02T09:30:00+02:00"
                                        }
                                    ],
                                    "meta": {
                                        "page": 1,
                                        "per_page": 25,
                                        "total": 12,
                                        "pages": 1
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "campaigns:read"
            }
        },
        "/billing": {
            "get": {
                "tags": [
                    "Billing"
                ],
                "summary": "Return wallet balance, subscription, production limits and free-video counter.",
                "operationId": "get_billing",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "currency": "USD",
                                        "wallet": {
                                            "balance_cents": 3595,
                                            "balance": "35.95"
                                        },
                                        "subscription": {
                                            "status": "active",
                                            "plan": "creator",
                                            "interval": "month",
                                            "current_period_end": "2026-09-01T00:00:00+02:00"
                                        },
                                        "limits": {
                                            "monthly_videos": 30,
                                            "used_this_month": 7
                                        },
                                        "free_videos_remaining": 0
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "billing:read"
            }
        },
        "/billing/transactions": {
            "get": {
                "tags": [
                    "Billing"
                ],
                "summary": "Return paginated wallet movements with video references when applicable.",
                "operationId": "get_billing_transactions",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number. Default: 1.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "1"
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "Number of results per page. Default: 25.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "25"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": [
                                        {
                                            "id": 901,
                                            "type": "debit",
                                            "amount_cents": -185,
                                            "balance_after_cents": 3595,
                                            "description": "Vidmfy API · HeyGen · video agent",
                                            "created_at": "2026-08-02 09:36:00",
                                            "video_id": "VID-A1B2C3D4E5"
                                        }
                                    ],
                                    "meta": {
                                        "page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "pages": 1
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "billing:read"
            }
        },
        "/analytics/summary": {
            "get": {
                "tags": [
                    "Analytics"
                ],
                "summary": "Return consolidated platform performance, top content and analytics connection state.",
                "operationId": "get_analytics_summary",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum number of top-performing content items. Default: 12.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": "12"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "summary": {
                                            "platforms": {
                                                "youtube": {
                                                    "label": "YouTube",
                                                    "views": 4200,
                                                    "likes": 210
                                                },
                                                "instagram": {
                                                    "label": "Instagram",
                                                    "views": 7600,
                                                    "likes": 540
                                                }
                                            }
                                        },
                                        "top_content": [
                                            {
                                                "video_id": "VID-A1B2C3D4E5",
                                                "platform": "instagram",
                                                "title": "Discover our new product",
                                                "views": 1250,
                                                "permalink": "https://instagram.com/reel/example"
                                            }
                                        ],
                                        "connections": [
                                            {
                                                "platform": "instagram",
                                                "status": "connected",
                                                "last_success_at": "2026-08-02 09:55:00"
                                            }
                                        ]
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "analytics:read"
            }
        },
        "/media/photos": {
            "post": {
                "tags": [
                    "Media"
                ],
                "summary": "Upload and validate a protected product photo before creating a photo-led video.",
                "operationId": "post_media_photos",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "photo_id": "4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg",
                                        "name": "product.jpg",
                                        "size": 57988,
                                        "mime": "image/jpeg",
                                        "width": 1080,
                                        "height": 1350,
                                        "content_url": "https://vidmfy.com/api/v1/media/photos/4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "photo": {
                                        "type": "string",
                                        "format": "binary",
                                        "description": "Product image within the configured upload size and dimension limits."
                                    }
                                },
                                "required": [
                                    "photo"
                                ]
                            }
                        }
                    }
                }
            }
        },
        "/media/photos/{photo_id}": {
            "get": {
                "tags": [
                    "Media"
                ],
                "summary": "Stream an owned protected product photo.",
                "operationId": "get_media_photos_photo_id",
                "parameters": [
                    {
                        "name": "photo_id",
                        "in": "path",
                        "required": true,
                        "description": "Photo identifier returned by POST /media/photos.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "binary": "Image bytes",
                                    "content_type": "image/jpeg | image/png | image/webp"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:read"
            },
            "delete": {
                "tags": [
                    "Media"
                ],
                "summary": "Delete an owned protected photo that is no longer needed.",
                "operationId": "delete_media_photos_photo_id",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    },
                    {
                        "name": "photo_id",
                        "in": "path",
                        "required": true,
                        "description": "Photo identifier returned by POST /media/photos.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "deleted": true,
                                        "photo_id": "4f7c1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b.jpg"
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write"
            }
        },
        "/sources/url/check": {
            "post": {
                "tags": [
                    "Sources"
                ],
                "summary": "Verify and safely extract a public web page before it is used as a content source.",
                "operationId": "post_sources_url_check",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Unique safe value for this write operation. Reusing it with the same payload replays the response.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order-1842-video-1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful JSON response",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "data": {
                                        "url": "https://example.com/product",
                                        "final_url": "https://example.com/product",
                                        "domain": "example.com",
                                        "title": "Example product",
                                        "description": "A practical product for small businesses.",
                                        "canonical_url": "https://example.com/product",
                                        "preview_image_url": "https://example.com/product.jpg",
                                        "word_count": 640,
                                        "content_hash": "d2a72e74b183f18c…",
                                        "headings": [
                                            "A better way to work",
                                            "Main benefits"
                                        ],
                                        "reference_media_urls": [
                                            "https://example.com/product.jpg"
                                        ]
                                    },
                                    "request_id": "2f19a913-8f91-4d9b-9f95-62d43af81362"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Authentication required"
                    },
                    "403": {
                        "description": "Insufficient permission"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit reached"
                    }
                },
                "security": [
                    {
                        "apiKeyAuth": []
                    }
                ],
                "x-vidmfy-scope": "videos:write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "description": "Public URL to validate. Private, local, authenticated and unsafe hosts are blocked.",
                                        "example": "https://example.com/product"
                                    }
                                },
                                "required": [
                                    "url"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "apiKeyAuth": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "vfm_live_*"
            }
        }
    },
    "request_id": "25b4752c-d2cc-424d-a7cd-74436cf9b75e"
}