Referência
API REST
Crie, agende e publique publicações, envie mídia e consulte resultados pelo seu próprio código. A API segue as mesmas regras e a mesma validação do próprio SPREVA.
Sua primeira requisição
- 1
Crie uma chave de API no SPREVA em Desenvolvimento, depois Chaves de API. Uma chave Só leitura basta para este exemplo; para publicar, é preciso uma chave com acesso Publicação.
- 2
Liste suas contas sociais:
Terminal curl https://dev-app.spreva.ai/api/v1/social-accounts \ -H "Authorization: Bearer spreva_sk_..." - 3
Leia a resposta. Os resultados vêm dentro de
data, e oidde uma conta é o que você passa comoconnectionIdao criar uma publicação para ela. O exemplo está resumido: o objeto real tem mais campos.JSON { "data": [ { "id": "e81b3f52-0000-4000-8000-000000000005", "provider": "instagram", "displayName": "Acme Studio", "username": "acme", "status": "ACTIVE", "needsReconnect": false } ] }
O básico
Todos os endpoints ficam neste endereço. Envie JSON, com a chave como Authorization: Bearer seguido da chave.
https://dev-app.spreva.ai/api/v1- Uma chave pertence a um espaço de trabalho e só enxerga esse espaço de trabalho.
- Limite: 120 requisições por minuto para cada pessoa em um espaço de trabalho, divididas entre todas as chaves que ela criou. Acima disso, a resposta é um
429cuja mensagem diz quantos segundos esperar. - Os erros vêm no idioma do cabeçalho
Accept-Languageda requisição; ocodenunca muda. - De um navegador com login no SPREVA, envie
x-workspace-idcom o id do espaço de trabalho em vez de uma chave.
Chaves e permissões
Uma chave age em nome da pessoa que a criou e nunca pode fazer mais do que a função dessa pessoa permite. Proprietários e administradores criam chaves, em um plano que inclua acesso à API, e a chave completa aparece só uma vez. Cada chave tem as permissões que recebeu:
posts:read- Ver publicações, o status delas, os resultados e as filas
media:read- Ver a biblioteca de mídia
accounts:read- Ver as contas sociais conectadas
analytics:read- Ver as análises
posts:write- Criar, editar, agendar, publicar e excluir publicações, e gerenciar filas
media:write- Enviar, renomear e excluir mídia
webhooks:write- Ver e adicionar endpoints de webhook
ai:write- Usar a IA. Legendas e hashtags também precisam de posts:write; texto alternativo e imagens também precisam de media:write
Só leitura dá as quatro permissões de leitura. Publicação acrescenta posts:write, media:write e ai:write, o suficiente para uma automação ou um agente de IA. Um 403 quer dizer que falta a permissão à chave, ou que a função de quem a criou não permite mais.
Erros
Todo erro tem o mesmo formato. Decida pelo code e mostre a message.
{
"error": {
"code": "FORBIDDEN",
"message": "API key needs the posts:write scope for posts:create"
}
}- 400
INVALID_REQUEST · INVALID_JSON · WORKSPACE_REQUIREDO corpo ou a query não batem com o endpoint. details lista cada campo que está errado. Uma chamada do navegador sem x-workspace-id recebe WORKSPACE_REQUIRED.
- 401
UNAUTHENTICATEDA chave está faltando, escrita errado, revogada ou expirada. Mande “Authorization: Bearer <key>”.
- 402
ENTITLEMENT_EXCEEDED · AI_LIMIT_REACHEDO espaço de trabalho não tem nenhum plano ativo, ficou sem créditos de IA ou o plano não inclui isto. Um proprietário pode escolher um plano ou comprar créditos em Configurações, Cobrança.
- 403
FORBIDDENA chave não tem permissão para esta requisição, ou sua função não permite. Crie uma chave com mais acesso.
- 404
NOT_FOUNDNão existe esse objeto neste espaço de trabalho. Uma chave só enxerga o espaço de trabalho em que foi criada.
- 409
CONCURRENT_MODIFICATION · INVALID_STATE_TRANSITION · CONFLICT · AI_NOT_CONFIGUREDA publicação mudou depois que você leu, está em um estado que não permite isso (publicar algo já publicado), um arquivo que você está excluindo ainda é usado em uma publicação, ou a IA não está configurada nesta instalação. Busque de novo e tente outra vez.
- 422
VALIDATION_FAILED · PROVIDER_VALIDATION_FAILED · AI_REFUSEDO conteúdo não serve para a conta para onde vai, ou uma requisição à IA foi recusada. GET /providers lista as regras de cada rede.
- 429
RATE_LIMITED · AI_BUSYMais de 120 requisições em um minuto feitas por você neste espaço de trabalho, ou requisições demais à IA de uma vez. Para RATE_LIMITED, a mensagem diz quantos segundos esperar; para AI_BUSY, espere um pouco.
- 500
INTERNALAlgo falhou ao tratar a requisição, no SPREVA ou em uma rede social. Tente de novo em instantes.
- 503
AI_UNAVAILABLEO provedor de IA está indisponível agora. Tente de novo em instantes.
Endpoints
Os caminhos são relativos ao URL base. O documento OpenAPI descreve cada corpo e parâmetro, e você pode gerar um cliente a partir dele:
https://dev-app.spreva.ai/api/openapi.jsonContas sociais e redes
get /social-accountsAs contas sociais conectadas.get /providersAs regras de cada rede: formatos, posicionamentos e limites.
Publicações
get /postsPublicações, filtradas por status, datas, conta, rede ou campanha.post /postsCriar um rascunho para uma ou mais contas.get /posts/{id}Uma publicação com suas contas, validação e mídia.patch /posts/{id}Alterar uma publicação. Envie aversionque você leu; se ela mudou nesse meio-tempo, a resposta é409.delete /posts/{id}Excluir uma publicação.post /posts/{id}/publishPublicar agora. A resposta é202: acompanhe a publicação, ou um webhook, para saber o resultado.post /posts/{id}/scheduleAgendar para um horário, com um fuso horário.post /posts/{id}/queueColocar no próximo horário livre de uma fila.post /posts/{id}/retryTentar de novo uma conta que falhou.
Mídia
get /mediaA biblioteca, com busca e filtros.post /media/uploadsComeçar um envio: a resposta diz para onde mandar o arquivo.post /media/uploads/{id}/completeTerminar um envio. O arquivo é então verificado e processado.get /media/{id}Um arquivo, com seu status e o que se sabe sobre ele.delete /media/{id}Excluir um arquivo. Um arquivo ainda usado em uma publicação responde409.put /media/{id}/alt-textSalvar ou limpar o texto alternativo de um arquivo.post /media/{id}/alt-text/suggestionSugerir texto alternativo com IA, sem salvar.
Estatísticas
get /analyticsResultados de um período.get /analytics/exportOs mesmos resultados em um arquivo CSV.
Filas
get /queuesAs filas de publicação.post /queuesCriar uma fila com seus horários semanais.patch /queues/{id}Alterar uma fila.delete /queues/{id}Excluir uma fila.
Webhooks
get /webhooksOs endpoints de webhook.post /webhooksAdicionar um endpoint. A resposta traz o segredo, só desta vez.
IA
get /aiSe a IA está disponível, os créditos que restam e quanto custa cada ação.post /ai/captionsSugerir novas versões de uma legenda, traduções ou hashtags, sem salvar.post /ai/imagesGerar uma imagem. ConsulteGET /media/{id}até ela ficar pronta.