Skip to Content
Referência da APIAuthentication

Autenticação

A URL base é https://api.vdclip.com e a superfície REST fica sob /v1/*. Há duas formas de autenticação:

🔑

Chave de API

Authorization: Bearer vdck_... em toda requisição /v1. Somente servidor-a-servidor.

🤖

OAuth 2.1

Authorization: Bearer <JWT> para servidores MCP, agentes de IA e integrações atuando por um usuário.

Chaves de API

Envie sua chave de API no cabeçalho Authorization como Bearer token em toda requisição /v1. As chaves têm o prefixo vdck_.

curl https://api.vdclip.com/v1/account \ -H "Authorization: Bearer vdck_your_key_here"

Uma resposta bem-sucedida retorna o recurso diretamente:

{ "id": "acc_...", "plan": "pro", "credits": 120 }
i
Nunca exponha sua chave de API em um navegador

A API é somente servidor-a-servidor. Não tem CORS, então requisições de navegador são rejeitadas com ORIGIN_REJECTED. Trate as chaves vdck_... como uma senha: mantenha-as em variáveis de ambiente ou em um gerenciador de segredos, nunca em código front-end, apps móveis ou qualquer coisa que um usuário possa inspecionar. Se uma chave for exposta, rotacione-a imediatamente.

Paginação

Os endpoints de listagem usam paginação por cursor. Passe um limit e, para buscar a próxima página, use o cursor retornado. Os padrões e máximos variam por endpoint e estão na spec OpenAPI.

curl "https://api.vdclip.com/v1/projects?limit=20" \ -H "Authorization: Bearer vdck_your_key_here"

Escopos

Cada escopo segue o padrão vdclip:<resource>:<action>. Uma requisição sem o escopo que seu endpoint precisa é rejeitada com MISSING_SCOPE. Os clientes OAuth solicitam os mesmos escopos. O catálogo completo está em Servidores MCP, e cada página de endpoint lista o escopo que exige.

vdclip:render:execute e vdclip:social:publish são restritos por plano: só funcionam em planos que os incluem, mesmo quando a chave carrega o escopo. Os endpoints de render também consomem créditos, retornando INSUFFICIENT_CREDITS quando eles acabam. Veja a página de preços  para saber o que cada plano inclui.

Respostas de erro

Todos os erros /v1 usam um array errors, com um code legível por máquina e uma description legível por humanos:

{ "errors": [ { "code": "MISSING_SCOPE", "description": "This credential is not authorized for vdclip:render:execute." } ] }
CódigoSignificado
INVALID_API_KEYO cabeçalho Authorization está ausente, malformado ou desconhecido
MISSING_SCOPEA chave não tem o escopo exigido por este endpoint
INSUFFICIENT_CREDITSCréditos insuficientes para completar a operação
RATE_LIMITEDRequisições demais (veja limites de taxa abaixo)
UPSTREAM_ERRORUm serviço interno falhou
VALIDATION_ERRORO corpo da requisição ou a query falhou na validação
INVALID_JSONO corpo da requisição não é JSON válido
NOT_FOUNDO recurso solicitado não existe
ORIGIN_REJECTEDA requisição veio de uma origem não permitida (navegador)

Inclua o cabeçalho X-Request-ID de uma resposta com falha ao contatar contact@vdclip.com.

Limites de taxa

Quando você excede o limite de taxa, a API responde com HTTP 429 e um cabeçalho Retry-After (em segundos). Aguarde pelo menos esse tempo e use backoff exponencial para respostas 429 repetidas.

HTTP/1.1 429 Too Many Requests Retry-After: 30

OAuth 2.1 para clientes que agem em nome de um usuário

Para servidores MCP, agentes de IA e integrações de terceiros que atuam em nome de um usuário, o VDClip executa um Servidor de Autorização OAuth 2.1. Esses clientes enviam Authorization: Bearer <JWT> em vez de uma chave de API.

  • O emissor é https://api.vdclip.com. Os endpoints OAuth ficam sob /oauth2/*, a descoberta sob /.well-known/*.
  • Os access tokens são JWTs (at+jwt, ES256).
  • Esses endpoints usam corpos padrão RFC, não o envelope /v1.
  • Usam os mesmos escopos vdclip:<resource>:<action>, com a mesma restrição por plano.

Os clientes começam pela descoberta (RFC 8414), que anuncia o emissor, os endpoints de autorização/token/revogação, os escopos suportados e o JWKS URI para verificar as assinaturas dos tokens:

curl https://api.vdclip.com/.well-known/oauth-authorization-server

Com um access token, um cliente chama os mesmos endpoints /v1 com o mesmo cabeçalho Bearer:

curl https://api.vdclip.com/v1/projects \ -H "Authorization: Bearer <JWT>"

Veja OAuth 2.1 para o fluxo completo.

Dicas e Boas Práticas

Mantenha as chaves no servidor

Armazene chaves vdck_ em variáveis de ambiente ou em um gerenciador de segredos. Uma chave em código de navegador não funciona e só corre risco de exposição.

Restrinja os escopos das chaves

Conceda apenas os escopos que uma integração precisa. Uma integração somente leitura nunca deveria ter escopos de escrita ou render:execute.

Trate o 429 com backoff

Respeite o cabeçalho Retry-After e use backoff exponencial para que uma rajada de requisições não fique acionando o limitador de taxa.

Registre os headers de request

Armazene X-Request-ID e X-Trace-ID das respostas para que você possa referenciar requisições exatas ao contatar o suporte.

Use OAuth apenas para clientes delegados pelo usuário

Use o fluxo Bearer OAuth 2.1 quando um cliente atua por um usuário. Para o seu próprio backend, uma chave de API é mais simples.

Perguntas Frequentes

Última atualização em