Skip to main content
Code: embeddings_video_unsupported HTTP status: 400 Type: invalid_request

When it fires

The input content-parts array on POST /v1/embeddings (or POST /v1/embeddings/estimate) contains a video_url part. As of 2026-05-24, video input is no longer accepted on the v1 embeddings surface. The previously published embedding_pricing.video rate on GET /v1/models has been removed too — the published rate never actually fired because the provider folds video frames into the visual billing bucket. To avoid a contract where customers pay one rate while reading another, we removed the input shape entirely. Submit videos through a frame-extraction pipeline of your own and embed the frames as image_url parts at the visual rate.

How to fix it

Drop the video_url part from your request. If you need to embed visual content from a video, extract a representative frame (or frames) and submit them as image_url:
// Before — REJECTED
await client.embeddings.create({
  model: "aurous-embed-vision-1.0",
  input: [
    { type: "text", text: "Scene caption" },
    { type: "video_url", video_url: { url: "https://.../clip.mp4" } }, // ✗
  ],
});

// After — extract a representative frame in your pipeline
await client.embeddings.create({
  model: "aurous-embed-vision-1.0",
  input: [
    { type: "text", text: "Scene caption" },
    { type: "image_url", image_url: { url: "https://.../clip-frame-0.jpg" } },
  ],
});
The image_url part bills at the visual rate published on embedding_pricing.visual.credits_per_M.

Why the change

A live probe on 2026-05-24 confirmed that BytePlus’s multimodal embedding extracts frames from video_url input and bills the frames as visual tokens. The embedding_pricing.video rate documented on /v1/models never actually fired — every video_url part billed as visual. Keeping the input shape while removing the published rate would have meant customers paid one rate for input they submitted under another rate’s contract. Removing the shape entirely keeps the receipt honest. This is a breaking change for any caller that pinned the input shape. Zero customers were affected at release time.

Example response

{
  "error": {
    "type": "invalid_request",
    "code": "embeddings_video_unsupported",
    "message": "Video input is not supported on v1 embeddings. Submit text or image_url parts; the visual rate applies to image inputs.",
    "param": "input",
    "doc_url": "https://docs.aurous-labs.com/errors#embeddings_video_unsupported",
    "request_id": "req_01HXMQ7Z3K8Y2ABCDEFGHJKM"
  }
}
No credits are charged for a request rejected at this gate.