Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Cerrado Apto para principiantes
#491 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@tombeckenham ya está trabajando en esto.

Desde el 3/10/2026.

  • #492 de @tombeckenham — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript, openapi, typescript
Área
api, backend

Línea de trabajo

Empieza en dist/openrouter-video.js, en handleOpenRouterVideoCreate, e inspecciona la ruta del fixture y la ruta de record/proxy que replica. Reproduce la llamada con @openrouter/sdk y verifica que la creación del vídeo devuelve 202 con el cuerpo de respuesta existente, mientras que el polling y la descarga permanecen sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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).

Lenguaje dominante
TypeScript
Estrellas
979
Forks
84
Merge medio
1 d 5 h
PR fusionados (30 d)
58

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de CopilotKit/aimock

Todos los issues de CopilotKit/aimock

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.