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/clientsActivar 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}/changesAvisar a Anuto de que cambió el stock de un cliente
GET/provider/meComprobar 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_INVALID401Clave ausente, mal formada o desconocida.
PROVIDER_REVOKED403Anuto ha revocado tu acceso de proveedor.
PROVIDER_FORMAT_REQUIRED400Tu software tiene varios formatos, así que el cuerpo necesita format.
PROVIDER_FORMAT_NOT_ALLOWED400El formato no está entre tus formatos aprobados.
PROVIDER_CLIENT_NOT_FOUND404No 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]