{
  "$schema": "https://chinaapi.ai/data/workflows/workflow.v1.schema.json",
  "canonical_url": "https://chinaapi.ai/workflows/image-to-video/",
  "generated_by": "scripts/gen_workflows.py",
  "schema_version": "chinaapi.workflow.v1",
  "contract_status": "contract_locked_not_executable",
  "workflow_id": "image-to-video",
  "slug": "image-to-video",
  "title": "Turn an image into a short video",
  "summary": "Prepare one authorized reference image and a motion description, then inspect the locked task contract before runtime, price, availability, and privacy evidence is complete.",
  "last_modified": "2026-09-04",
  "discovery": {
    "indexable": false,
    "sitemap": false,
    "locales": [
      "en"
    ]
  },
  "inputs": [
    {
      "id": "reference_image",
      "type": "asset",
      "required": true,
      "description": "A user-supplied image the user is authorized to process.",
      "evidence_status": "semantic_stable",
      "default": null,
      "allowed_values": [],
      "cost_sensitive": false
    },
    {
      "id": "motion_prompt",
      "type": "string",
      "required": true,
      "description": "Plain-language instructions describing subject motion, camera motion, and constraints.",
      "evidence_status": "semantic_stable",
      "default": null,
      "allowed_values": [],
      "cost_sensitive": false
    },
    {
      "id": "aspect_ratio",
      "type": "enum",
      "required": false,
      "description": "Output aspect ratio; supported values must come from the verified runtime contract.",
      "evidence_status": "runtime_contract_required",
      "default": null,
      "allowed_values": [],
      "cost_sensitive": false
    },
    {
      "id": "duration_seconds",
      "type": "integer",
      "required": false,
      "description": "Requested duration; supported values and billing effects must come from the verified runtime contract.",
      "evidence_status": "runtime_contract_required",
      "default": null,
      "allowed_values": [],
      "cost_sensitive": true
    },
    {
      "id": "audio",
      "type": "boolean",
      "required": false,
      "description": "Optional audio behavior; availability and billing effects must come from the verified runtime contract.",
      "evidence_status": "runtime_contract_required",
      "default": null,
      "allowed_values": [],
      "cost_sensitive": true
    }
  ],
  "executor_query": {
    "input_modalities": [
      "image",
      "text"
    ],
    "output_modalities": [
      "video"
    ],
    "required_capabilities": [
      "image-to-video",
      "async-task"
    ],
    "selection_policy": "Resolve model IDs, availability, price, privacy, and request fields from a verified runtime contract; never infer them from marketing copy."
  },
  "runtime_binding": {
    "status": "contract_only_not_executable",
    "contract_version": "task-first.v1.0.0",
    "dash_commit_sha": "a5d2b80bf0b498c60b8764aca18449e663a496f1",
    "openapi_path": "config/task-first-contract/v1/openapi.json",
    "fixture_path": "config/task-first-contract/v1/fixtures/workflow-image-to-video.json",
    "endpoint": "/v1/video/generations",
    "operation_id": "image_to_video_submit",
    "operation_status": "served_legacy_task_first_not_active",
    "workflow_version": "2026-09-04.1",
    "semantic_digest_sha256": "023c0ef7992c7e959a04ceac9bf0fc6edd4f962212b1b7efdd4dea332b98fe7c",
    "package_status": "contract_only_not_implemented",
    "capability_profile_version": "2026-09-04.1",
    "capability_evidence": "routing_verified_capability_incomplete",
    "known_unimplemented_fields": [
      "aspect_ratio",
      "audio",
      "resolution",
      "quote",
      "idempotency",
      "safe_task_response"
    ],
    "request_field_map": {
      "reference_image": "parameters.reference_images[first_frame]",
      "motion_prompt": "parameters.motion_prompt",
      "aspect_ratio": "parameters.aspect_ratio",
      "duration_seconds": "parameters.duration_seconds",
      "audio": "parameters.audio"
    },
    "model_ids": [
      "doubao-seedance-2-5-260628"
    ],
    "price_source": null,
    "availability_source": null,
    "last_verified_at": "2026-09-04",
    "blocking_reason": "The Dash contract is version-locked, but Intent and Quote are not registered and the legacy video route does not yet provide task-first validation, idempotency, safe task responses, live pricing, or privacy evidence."
  },
  "privacy_preflight": {
    "required_before_transfer": true,
    "processing_region": "unknown",
    "retention": "unknown",
    "training_use": "unknown",
    "deletion": "unknown",
    "commercial_use": "unknown",
    "watermark": "unknown"
  },
  "recovery_policy": {
    "resume_same_task_first": true,
    "automatic_fallback": false,
    "stop_when_charge_state_unknown": true,
    "confirmation_required_for": [
      "price_change",
      "provider_change",
      "privacy_change",
      "new_billable_submission"
    ]
  },
  "acceptance_checks": [
    "The task reaches an explicit succeeded terminal state.",
    "The returned artifact is downloadable and has a readable video container.",
    "Any requested duration, aspect ratio, or audio setting is checked only when the verified runtime contract exposes that field."
  ],
  "continue_action": {
    "enabled": false,
    "href": null,
    "reason": "Execution remains unavailable until Dash implements the locked contract and runtime, pricing, availability, charge-state, and privacy gates pass."
  },
  "provenance": {
    "requirement_id": "CA-701",
    "source_kind": "version-locked Dash contract snapshot",
    "runtime_evidence": "contract_only"
  }
}
