Referencia
API REST
Crea, programa y publica publicaciones, sube archivos multimedia y consulta resultados desde tu propio código. La API sigue las mismas reglas y la misma validación que el propio SPREVA.
Tu primera petición
- 1
Crea una clave de API en SPREVA en Desarrollo y luego Claves de API. Para este ejemplo basta una clave Solo lectura; para publicar hace falta una clave con acceso Publicación.
- 2
Lista tus cuentas sociales:
Terminal curl https://dev-app.spreva.ai/api/v1/social-accounts \ -H "Authorization: Bearer spreva_sk_..." - 3
Lee la respuesta. Los resultados vienen dentro de
data, y elidde una cuenta es lo que pasas comoconnectionIdal crear una publicación para ella. El ejemplo está resumido: el objeto real tiene más campos.JSON { "data": [ { "id": "e81b3f52-0000-4000-8000-000000000005", "provider": "instagram", "displayName": "Acme Studio", "username": "acme", "status": "ACTIVE", "needsReconnect": false } ] }
Lo básico
Todos los endpoints están en esta dirección. Envía JSON, con la clave como Authorization: Bearer seguido de la clave.
https://dev-app.spreva.ai/api/v1- Una clave pertenece a un espacio de trabajo y solo ve ese espacio de trabajo.
- Límite: 120 peticiones por minuto para cada persona en un espacio de trabajo, compartidas entre todas las claves que creó. Por encima de eso, la respuesta es un
429cuyo mensaje dice cuántos segundos esperar. - Los errores llegan en el idioma de la cabecera
Accept-Languagede la petición; sucodenunca cambia. - Desde un navegador con sesión iniciada en SPREVA, envía
x-workspace-idcon el id del espacio de trabajo en lugar de una clave.
Claves y permisos
Una clave actúa en nombre de la persona que la creó y nunca puede hacer más de lo que permite el rol de esa persona. Las crean propietarios y administradores, en un plan que incluya acceso a la API, y la clave completa se muestra una sola vez. Cada clave tiene los permisos que se le dieron:
posts:read- Ver publicaciones, su estado, sus resultados y las colas
media:read- Ver la biblioteca multimedia
accounts:read- Ver las cuentas sociales conectadas
analytics:read- Ver las analíticas
posts:write- Crear, editar, programar, publicar y eliminar publicaciones, y gestionar colas
media:write- Subir, renombrar y eliminar multimedia
webhooks:write- Ver y añadir endpoints de webhook
ai:write- Usar la IA. Los subtítulos y los hashtags también necesitan posts:write; el texto alternativo y las imágenes también necesitan media:write
Solo lectura da los cuatro permisos de lectura. Publicación añade posts:write, media:write y ai:write, suficiente para una automatización o un agente de IA. Un 403 significa que a la clave le falta el permiso, o que el rol de quien la creó ya no lo permite.
Errores
Todos los errores tienen la misma forma. Decide según code y muestra message.
{
"error": {
"code": "FORBIDDEN",
"message": "API key needs the posts:write scope for posts:create"
}
}- 400
INVALID_REQUEST · INVALID_JSON · WORKSPACE_REQUIREDEl cuerpo o la consulta no encajan con el endpoint. details lista cada campo que está mal. Una llamada desde el navegador sin x-workspace-id recibe WORKSPACE_REQUIRED.
- 401
UNAUTHENTICATEDFalta la clave, está mal escrita, revocada o caducada. Envía «Authorization: Bearer <key>».
- 402
ENTITLEMENT_EXCEEDED · AI_LIMIT_REACHEDEl espacio de trabajo no tiene un plan activo, se ha quedado sin créditos de IA o su plan no incluye esto. Un propietario puede elegir un plan o comprar créditos en Ajustes, Facturación.
- 403
FORBIDDENLa clave no tiene permiso para esta petición, o tu rol no lo permite. Crea una clave con más acceso.
- 404
NOT_FOUNDNo existe ese objeto en este espacio de trabajo. Una clave solo ve el espacio de trabajo en el que se creó.
- 409
CONCURRENT_MODIFICATION · INVALID_STATE_TRANSITION · CONFLICT · AI_NOT_CONFIGUREDLa publicación cambió desde que la leíste, está en un estado que no permite esto (publicar algo ya publicado), un archivo que estás eliminando todavía se usa en una publicación, o la IA no está configurada en esta instalación. Vuelve a obtenerla y reinténtalo.
- 422
VALIDATION_FAILED · PROVIDER_VALIDATION_FAILED · AI_REFUSEDEl contenido no encaja con la cuenta a la que va, o una petición a la IA fue rechazada. GET /providers lista las reglas de cada red.
- 429
RATE_LIMITED · AI_BUSYMás de 120 peticiones en un minuto hechas por ti en este espacio de trabajo, o demasiadas peticiones a la IA a la vez. Con RATE_LIMITED, el mensaje dice cuántos segundos hay que esperar; con AI_BUSY, espera un momento.
- 500
INTERNALAlgo falló al atender la petición, en SPREVA o en una red social. Reinténtalo en un momento.
- 503
AI_UNAVAILABLEEl proveedor de IA no está disponible ahora mismo. Reinténtalo en un momento.
Endpoints
Las rutas son relativas a la URL base. El documento OpenAPI describe cada cuerpo y parámetro, y puedes generar un cliente a partir de él:
https://dev-app.spreva.ai/api/openapi.jsonCuentas sociales y redes
get /social-accountsLas cuentas sociales conectadas.get /providersLas reglas de cada red: formatos, ubicaciones y límites.
Publicaciones
get /postsPublicaciones, filtradas por estado, fechas, cuenta, red o campaña.post /postsCrear un borrador para una o varias cuentas.get /posts/{id}Una publicación con sus cuentas, su validación y sus archivos.patch /posts/{id}Cambiar una publicación. Envía laversionque leíste; si cambió desde entonces, la respuesta es409.delete /posts/{id}Eliminar una publicación.post /posts/{id}/publishPublicar ahora. La respuesta es202: sigue la publicación, o un webhook, para saber el resultado.post /posts/{id}/scheduleProgramarla a una hora, con una zona horaria.post /posts/{id}/queueAñadirla al siguiente hueco libre de una cola.post /posts/{id}/retryReintentar una cuenta que falló.
Multimedia
get /mediaLa biblioteca, con búsqueda y filtros.post /media/uploadsEmpezar una subida: la respuesta dice adónde enviar el archivo.post /media/uploads/{id}/completeTerminar una subida. Después el archivo se comprueba y se procesa.get /media/{id}Un archivo, con su estado y lo que se sabe de él.delete /media/{id}Eliminar un archivo. Un archivo que todavía usa una publicación responde409.put /media/{id}/alt-textGuardar o borrar el texto alternativo de un archivo.post /media/{id}/alt-text/suggestionSugerir texto alternativo con IA, sin guardarlo.
Estadísticas
get /analyticsResultados de un periodo.get /analytics/exportLos mismos resultados en un archivo CSV.
Colas
get /queuesLas colas de publicación.post /queuesCrear una cola con sus horarios semanales.patch /queues/{id}Cambiar una cola.delete /queues/{id}Eliminar una cola.
Webhooks
get /webhooksLos endpoints de webhook.post /webhooksAñadir un endpoint. La respuesta trae su secreto, solo esta vez.
IA
get /aiSi la IA está disponible, los créditos que quedan y lo que cuesta cada acción.post /ai/captionsSugerir nuevas versiones de un texto, traducciones o hashtags, sin guardarlos.post /ai/imagesGenerar una imagen. ConsultaGET /media/{id}hasta que esté lista.