Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

OpenRouter video: POST /api/v1/videos returns 200, but the official SDK only accepts 202

Đã đóng Phù hợp với người mới
#491 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@tombeckenham đang làm issue này rồi.

Từ ngày 3/10/2026.

  • #492 của @tombeckenham — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
javascript, openapi, typescript
Lĩnh vực
api, backend

Hướng nghiên cứu

Bắt đầu tại dist/openrouter-video.js ở handleOpenRouterVideoCreate và kiểm tra đường dẫn fixture cùng đường dẫn record/proxy mà nó mô phỏng. Tái hiện lệnh gọi bằng @openrouter/sdk và xác minh rằng việc tạo video trả về 202 với phần thân phản hồi hiện có, trong khi polling và tải xuống vẫn không thay đổi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

The OpenRouter video mock added for #261 answers job creation (POST /api/v1/videos) with HTTP 200. The official @openrouter/sdk accepts only 202 for that call, so every job created through the real SDK fails before polling starts.

Poll (GET /api/v1/videos/{id}) and download (GET /api/v1/videos/{id}/content) work correctly.

Versions

  • @copilotkit/aimock 1.43.0
  • @openrouter/sdk 0.13.20 and 1.4.21 (same behavior in both)

Reproduce

import { LLMock } from '@copilotkit/aimock'
import { OpenRouter } from '@openrouter/sdk'

const mock = new LLMock({ port: 4099, host: '127.0.0.1' })
mock.onVideo('a guitar being played in a store', {
  video: { id: 'job-1', status: 'completed', url: 'https://example.com/v.mp4' },
})
await mock.start()

const client = new OpenRouter({
  apiKey: 'test',
  serverURL: 'http://127.0.0.1:4099/api/v1',
})
await client.videoGeneration.generate({
  videoGenerationRequest: {
    model: 'google/veo-3.1-lite',
    prompt: 'a guitar being played in a store',
  },
})

Actual

The SDK throws:

OpenRouterDefaultError: Unexpected Status or Content-Type: Status 200
Body: {"id":"e8c64b76-…","polling_url":"http://127.0.0.1:4099/api/v1/videos/e8c64b76-…","status":"pending"}

The body is correct. Only the status code is rejected.

Expected

202 Accepted with the same body.

Why 202

The SDK is generated from OpenRouter's OpenAPI spec, and its response matcher for this operation lists 202 as the only success status (esm/funcs/videoGenerationGenerate.js):

M.match(
  M.json(202, models.VideoGenerationResponse$inboundSchema),
  M.jsonErr(400, …), M.jsonErr(401, …), M.jsonErr(402, …),
  M.jsonErr(404, …), M.jsonErr(429, …), M.jsonErr(500, …),
  M.fail("4XX"), M.fail("5XX"),
)

This is unchanged between SDK 0.13.20 and 1.4.21.

Where

In dist/openrouter-video.js, the create handler (handleOpenRouterVideoCreate) ends with res.writeHead(200, { "Content-Type": "application/json" }). The fixture path and, if it mirrors the upstream status, the record/proxy path should both send 202.

Impact

TanStack AI cannot add openrouter to its video-gen e2e matrix with the built-in handler. The adapter uses the official SDK, so creation fails on the status code. We are keeping OpenRouter video on unit tests until this is fixed (TanStack/ai#1541).

Ngôn ngữ chính
TypeScript
Star
979
Fork
84
Merge trung bình
1 ngày 5 giờ
Pull request đã merge (30 ngày)
75

Chuẩn bị môi trường

  • Có Dockerfile hoặc tệp Docker Compose
  • Không có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của CopilotKit/aimock

Tất cả issue của CopilotKit/aimock

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.