Documentación de la Provider API
Todos los endpoints, campos, respuestas y errores en una sola página. Los ejemplos usan curl y JSON.
Primeros pasos
JSON sobre HTTPS. Envía una llamada por cliente cada vez que cambie su interruptor. Cualquier llamada se puede repetir sin riesgo.
URL basehttps://api.anuto.app/v1
Endpoints
| Endpoint | Significado |
|---|---|
POST/provider/clients | Activar o actualizar un cliente |
GET/provider/clients/{externalId} | Estado de un cliente |
DELETE/provider/clients/{externalId} | Desactivar un cliente y retirar sus anuncios |
POST/provider/clients/{externalId}/changes | Avisar a Anuto de que cambió el stock de un cliente |
GET/provider/me | Comprobar la clave: nombre del proveedor, formatos y estado |
Reintentar es seguro
Las llamadas con el mismo externalId actualizan ese cliente. Nunca crean duplicados, así que puedes reintentar tras un timeout.
Autenticación
Envía tu clave en la cabecera Authorization de cada petición. Las claves empiezan por anp_, se muestran una sola vez y se pueden rotar en la página de claves de API.
Authorization: Bearer anp_…Activar o actualizar un cliente
POST/provider/clients
Envía los datos del cliente cuando su interruptor se active. Repetir la llamada con el mismo externalId actualiza ese cliente.
curl -X POST https://api.anuto.app/v1/provider/clients \
-H "Authorization: Bearer $ANUTO_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "12345",
"name": "Casa Sol Real Estate",
"email": "[email protected]",
"phone": "+34 600 000 000",
"website": "https://casasol.es",
"country": "ES",
"listingsCount": 85
}'| Campo | Obligatorio | Significado |
|---|---|---|
externalId | Obligatorio | Tu ID de este cliente (por ejemplo, su número de cuenta o de empresa en tu software). De 1 a 100 caracteres. |
name | Obligatorio | Nombre comercial (hasta 120 caracteres). |
email | Obligatorio | Email de contacto del cliente. Se usa para crear su cuenta de Anuto si es nuevo en Anuto. |
country | Obligatorio | Código de país ISO de dos letras, por ejemplo ES. |
phone | Opcional | Teléfono de contacto (hasta 40 caracteres). |
website | Opcional | Web del cliente, http o https. |
format | Opcional | Solo es necesario si tu acceso cubre varias integraciones. |
connection | Opcional | Campos de conexión para tu integración, si los hay. Te indicamos cuáles al aprobar tu acceso. |
listingsCount | Opcional | Número de anuncios del cliente, para planificar. |
test | Opcional | Solo valida los datos y comprueba la conexión. No se crea nada. |
Respuesta
Cada llamada devuelve el estado del cliente, el número de anuncios y el plan.
{
"externalId": "12345",
"clientId": "Xw3kQ9mZr2LpT7vNa4Bc",
"status": "active",
"shopUrl": "https://es.anuto.app/@casa-sol",
"listings": { "active": 10, "waiting": 0, "planWaiting": 75 },
"plan": { "tier": "free", "maxActive": 10, "freeMaxActive": 10 },
"upgradeUrl": "https://es.anuto.app/user/manage/plan",
"lastSyncAt": "2026-10-08T09:30:00.000Z"
}Consultar el estado de un cliente
GET/provider/clients/{externalId}
Devuelve el estado actual del cliente, el número de anuncios y su plan, con la misma forma que la respuesta de activación.
curl https://api.anuto.app/v1/provider/clients/12345 \
-H "Authorization: Bearer $ANUTO_KEY"Desactivar un cliente
DELETE/provider/clients/{externalId}
Eliminar un cliente lo desactiva y retira sus anuncios de Anuto.
curl -X DELETE https://api.anuto.app/v1/provider/clients/12345 \
-H "Authorization: Bearer $ANUTO_KEY"Avisar de cambios
POST/provider/clients/{externalId}/changes
Llámalo cada vez que cambie el stock de un cliente: se crea, se modifica, se vende o se elimina un anuncio. Volvemos a sincronizar ese cliente en minutos, en lugar de esperar a la sincronización habitual cada pocas horas. Las llamadas en un plazo de 5 minutos se agrupan, así que puedes llamarlo en cada cambio.
- El cuerpo es opcional. Añade itemIds para indicar hasta 100 de tus IDs de inmuebles o productos que hayan cambiado.
- Una llamada correcta devuelve 202. nextSyncAt es la hora (UTC) en la que se programa la nueva sincronización.
- En el caso de un cliente inactivo, la respuesta tiene queued: false y un mensaje. No se encola nada.
curl -X POST https://api.anuto.app/v1/provider/clients/12345/changes \
-H "Authorization: Bearer $ANUTO_KEY" \
-H "Content-Type: application/json" \
-d '{ "itemIds": ["123", "456"] }'{
"queued": true,
"nextSyncAt": "2026-10-08T12:00:00Z"
}Comprobar tu clave
GET/provider/me
Devuelve el nombre de tu proveedor, los formatos que cubre tu acceso y el estado de la clave. Llámalo primero para comprobar que una clave nueva funciona.
curl https://api.anuto.app/v1/provider/me \
-H "Authorization: Bearer $ANUTO_KEY"{
"providerId": "Xw3kQ9mZr2LpT7vNa4Bc",
"name": "Your software company",
"formats": ["…"],
"status": "approved"
}Modo de prueba
Pon test en true para validar los datos y comprobar la conexión. No se crea nada: recibes el estado que tendría y el resultado de las comprobaciones.
{
"externalId": "12345",
"name": "Casa Sol Real Estate",
"email": "[email protected]",
"country": "ES",
"test": true
}
{
"ok": true,
"wouldBe": "active",
"checks": { "connection": "ok", "owner": "new_account" }
}Estados del cliente
- activeActivo y sincronizándose.
- pendingLa conexión aún no funciona, así que no se publica nada.
- reviewAnuto lo está revisando, porque el email de este cliente nuevo ya pertenece a otra cuenta de Anuto.
- inactiveDesactivado por ti o eliminado por Anuto.
Errores
Las llamadas fallidas devuelven JSON con statusCode, code y message. Decide según code; message es para personas.
{
"statusCode": 404,
"code": "PROVIDER_CLIENT_NOT_FOUND",
"message": "No client with externalId 12345"
}| Código | HTTP | Significado |
|---|---|---|
PROVIDER_KEY_INVALID | 401 | Clave ausente, mal formada o desconocida. |
PROVIDER_REVOKED | 403 | Anuto ha revocado tu acceso de proveedor. |
PROVIDER_FORMAT_REQUIRED | 400 | Tu software tiene varios formatos, así que el cuerpo necesita format. |
PROVIDER_FORMAT_NOT_ALLOWED | 400 | El formato no está entre tus formatos aprobados. |
PROVIDER_CLIENT_NOT_FOUND | 404 | No hay ningún cliente con ese externalId en tu cuenta de proveedor. |
Límites de uso
Si superas el límite, recibes 429 con la cabecera Retry-After. Espera esos segundos y vuelve a intentarlo.
¿Dudas sobre la API o sobre tu acceso? [email protected]