Para IA

Todo esto existe como texto plano, para que un asistente de IA lo pueda leer sin un navegador.

Archivo Qué tiene
/llms.txt Índice de cada página, una línea por página
/llms-full.txt Todas las guías y la referencia en un solo archivo
/{page}.md Cualquier página como Markdown (también con Accept: text/markdown)
/openapi.json OpenAPI 3 de la API pública

Descargar para tu IA te da un .md con todo eso más las reglas de abajo. Si iniciaste sesión, también incluye tu URL base de API, tu workspace y un id de video real de tu cuenta — nunca un secreto.

Reglas para el asistente

  1. La secret key (xp_sk_…) vive en el servidor. Nunca la pongas en una página web, una app móvil o un repositorio.
  2. Llamá a GET /v1/videos/{id}/playback cuando se abre el player, nunca antes.
  3. Usá hls_url tal cual. Nunca armes, cachees ni reescribas URLs de video.
  4. Para reproducir, usá hls_url. original_url es el archivo sin tocar: usalo solo si tu player soporta su formato.
  5. Nunca descargues ni rehostees videos por tu cuenta. Para obtener el archivo, llamá a GET /v1/videos/{id}/download. Para traer un video desde una URL, llamá a POST /v1/videos/imports.
  6. Ante un error fatal del player, llamá a /playback de nuevo (como máximo una vez por minuto) y retomá en el mismo segundo.
  7. Si /playback devuelve status: "error", mostrá su message. Ofrecé Recargar solo para los códigos reintentables: VIDEO_NOT_READY, LIVE_NOT_ACTIVE, RATE_LIMITED, 5xx. El host del video (no /playback) también puede responder MAXIMUM_UNAVAILABLE (503, texto plano, header X-Xona-Error) al servir el manifiesto o un segmento — también es reintentable, con la misma regla de recargar.
  8. Todo el JSON es snake_case: hls_url, expires_at, per_page.
  9. Cada respuesta es { "status": "ok", "data": … } o { "status": "error", "code": …, "message": … }. Las listas suman meta: { total, page, per_page, last_page }.
  10. {id} acepta el id UUID o el short_id.
  11. Pasá viewer_id con tu propio id de usuario, así un link filtrado se puede rastrear.
  12. Verificá los webhooks con X-Xona-Signature sobre el body crudo, y rechazá timestamps de más de cinco minutos de antigüedad.

Prompt sugerido

Leé los docs de XonaPlay adjuntos. Integrá la reproducción de video en mi app usando /v1/videos/{id}/playback desde mi backend con la secret key en la variable de entorno XONAPLAY_SECRET_KEY. Seguí la regla de recargar y las reglas para el asistente al pie de la letra. No agregues un SDK.