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
}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ódigo | Significado |
|---|---|
INVALID_API_KEY | O cabeçalho Authorization está ausente, malformado ou desconhecido |
MISSING_SCOPE | A chave não tem o escopo exigido por este endpoint |
INSUFFICIENT_CREDITS | Créditos insuficientes para completar a operação |
RATE_LIMITED | Requisições demais (veja limites de taxa abaixo) |
UPSTREAM_ERROR | Um serviço interno falhou |
VALIDATION_ERROR | O corpo da requisição ou a query falhou na validação |
INVALID_JSON | O corpo da requisição não é JSON válido |
NOT_FOUND | O recurso solicitado não existe |
ORIGIN_REJECTED | A 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: 30OAuth 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-serverCom 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
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.
Conceda apenas os escopos que uma integração precisa. Uma integração somente leitura nunca deveria ter escopos de escrita ou render:execute.
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.
Armazene X-Request-ID e X-Trace-ID das respostas para que você possa referenciar requisições exatas ao contatar o suporte.
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.