> For the documentation index, fetch https://sync.so/docs/llms.txt. Append .md to a page URL for Markdown. Documentation-search MCP: https://sync.so/docs/_mcp/server.

# Skill sync-api

> La skill de agente sync-api de sync. labs ayuda a tu agente de programación a integrar sync. en una app, un backend, un script o un pipeline: subidas, generaciones con claves de idempotencia, webhooks verificados, polling, errores y límites de concurrencia.

> **Tip**
>
> Instala esta skill con `npx skills add synchronicity-labs/skills --skill sync-api`, o consigue todas las skills con el plugin de Claude Code. Consulta [Skills de agente](/docs/plugins-and-extensions/agent-skills/overview).

## Qué hace

`sync-api` ayuda a tu agente de programación a integrar sync. en tu propia app, backend, script o pipeline. Escribe código de servidor que sube contenido multimedia, crea generaciones con claves de idempotencia, verifica webhooks, consulta el estado como alternativa y gestiona errores y límites de concurrencia, usando la API REST o los [SDK](/docs/developer-guides/sdk) oficiales de Python (`syncsdk`) y TypeScript (`@sync.so/sdk`).

## Cuándo usarla

| Lo que estás haciendo                                 | Usa                                                                                                                                                                                                       |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Escribir o revisar código que llama a la API de sync. | `sync-api`                                                                                                                                                                                                |
| Depurar un 429, un webhook o un cobro duplicado       | `sync-api`                                                                                                                                                                                                |
| Crear un vídeo en este chat                           | [lipsync](/docs/plugins-and-extensions/agent-skills/lipsync), [talking-photo](/docs/plugins-and-extensions/agent-skills/talking-photo), [translate-and-dub](/docs/plugins-and-extensions/agent-skills/translate-and-dub) |
| Procesar una vez un CSV de trabajos                   | [batch-lipsync](/docs/plugins-and-extensions/agent-skills/batch-lipsync)                                                                                                                                       |

## Prueba

* «Añade a mi app de Express un endpoint que sincronice los labios de una URL de vídeo con una URL de audio usando sync.»
* «Escribe un script de Python que doble al español cada vídeo de ./in»
* «Añade una ruta de Next.js que verifique los webhooks de sync.»
* «Nuestro worker recibe una y otra vez 429 concurrency_limit_reached. ¿Cuál es la solución correcta?»

## Qué necesitas

* Una clave API de sync. de [sync.so/settings/api-keys](https://sync.so/settings/api-keys), definida como `SYNC_API_KEY` en el servidor. Consulta [Autenticación](/docs/api-reference/guides/authentication).
* Python 3.8 o posterior, o Node 18 o posterior, para los SDK.

## Preguntas frecuentes

#### ¿Por qué el código guarda una clave antes de llamar a la API?

`POST /v2/generate` acepta un `Idempotency-Key`. Si se crea una vez por trabajo y se reutiliza en cada reintento, un reintento tras un timeout se convierte en una repetición de la generación original en lugar de una segunda generación de pago. Consulta [Idempotent Requests](/docs/api-reference/guides/idempotency).

#### ¿Webhooks o polling?

[Webhooks](/docs/api-reference/guides/webhooks), verificados con la cabecera `Sync-Signature`, para producción. Una consulta periódica recoge las entregas que tu endpoint se haya perdido.

#### El SDK no tiene un campo que menciona la documentación.

Los SDK pueden ir por detrás de la API. La skill llama a ese endpoint por HTTP en lugar de forzar los tipos.

#### ¿Qué hago con un 429?

Espera el tiempo que indica la respuesta, reintenta con la misma clave de idempotencia y mantén como máximo tantos trabajos en curso como permita el límite de concurrencia de tu plan, con una cola de tu lado. Consulta [Concurrencia y límites de tasa](/docs/api-reference/guides/rate-limits).

## Funciona si

* La clave API vive en el servidor, nunca en código de navegador o de móvil.
* Cada creación lleva una clave de idempotencia que se guardó antes de la llamada.
* El gestor de webhooks comprueba la firma con el cuerpo sin procesar antes de analizarlo.