video_eval

POST /api/video_eval/

Changed on

Judge a generated video for product fidelity, realism, quality, prompt adherence and audio.

Async only — POST returns immediately with a job id; poll the detail route or supply webhook_url.

Request

  • The document declares no server URL.
  • Auth
    API key in header X-API-ID and API key in header X-API-KEY

Request body

video_urlstring uri required

URL of the video to evaluate. Must end in a video file extension.

judge'dimensions' | 'tunable'
  • dimensions - Dimensions
  • tunable - Tunable
tolerancenumber double

Only for judge='tunable'. How much imperfection to forgive, 0-10. 0 flags anything questionable and misses almost nothing; 10 flags only flagrant failures. Defaults to 1.

reference_image_urlsstring[]

Images the video should stay faithful to — normally the images the generation was conditioned on. Required for the product_fidelity dimension, which is skipped when omitted. Max 5.

product_titlestring

Product name. Used as rubric context only, not judged directly.

generation_promptstring

The prompt the video was generated from. Enables the prompt_adherence dimension, which is skipped when omitted.

webhook_urlstring uri

Webhook URL called once the eval finishes or fails.

Response

idstring uuid required
status'pending' | 'running' | 'failed' | 'done' required
  • pending - Pending
  • running - Running
  • failed - Failed
  • done - Done
judge'dimensions' | 'tunable' required
  • dimensions - Dimensions
  • tunable - Tunable
tolerancenumber double nullable required

How much imperfection the tunable judge forgives, 0-10. Null for the dimensions judge, which has no adjustable bar.

video_urlstring uri required

URL of the video to evaluate.

passedboolean nullable required

True only when every evaluated dimension returned PASS.

dimensionsobject required

Per-dimension verdicts, keyed by dimension name: product_fidelity, physical_realism, visual_quality, prompt_adherence, audio_quality. Keys are input-dependent — do not assume all five are present. Always empty for judge='tunable', which does not decompose its verdict — see reasoning instead.

reasoningstring required

Why the verdict came out the way it did, for judges that argue to one answer instead of scoring dimensions. Empty for judge='dimensions', whose reasoning is per-dimension above.

duration_secondsnumber required

Wall-clock seconds the eval took.

credits_usednumber required

Credits charged for this call. Refunded to 0 when the eval fails.

failed_reasonstring required

Reason for failure if status is failed.

created_atstring date-time required
updated_atstring date-time required

Changes