REST API
A API pública do VDClip é uma interface REST servidor-a-servidor sob https://api.vdclip.com/v1. Você autentica com Authorization: Bearer <token>, onde o token é uma chave de API do VDClip (vdck_...) ou um access token OAuth. Cada credencial tem escopo para os recursos que você conceder.
A API não tem CORS e rejeita requisições de navegador. Mantenha sua chave vdck_... em um servidor que você controla, nunca em código de cliente. Se ela vazar, rotacione-a e contate contact@vdclip.com.
URL base e versionamento
- URL base:
https://api.vdclip.com - Superfície REST: todo endpoint tem o prefixo
/v1, por exemplohttps://api.vdclip.com/v1/projects. - Superfície OAuth: o servidor OAuth 2.1 fica sob
/oauth2/*e/.well-known/*. Esses endpoints seguem as RFCs relevantes. Veja Autenticação.
Autenticação
Envie sua chave de API no cabeçalho Authorization como Bearer token em toda requisição /v1.
curl https://api.vdclip.com/v1/account \
-H 'Authorization: Bearer vdck_your_key_here'As chaves de API carregam um conjunto fixo de escopos e consomem do seu saldo de créditos. Para clientes que atuam em nome de um usuário, use OAuth 2.1 com um token Bearer; veja OAuth 2.1.
Respostas
Endpoints /v1 bem-sucedidos retornam o recurso diretamente como JSON. Erros retornam um array errors. Inclua os cabeçalhos X-Request-ID e X-Trace-ID ao contatar contact@vdclip.com.
{
"errors": [
{
"code": "INSUFFICIENT_CREDITS",
"description": "Your account does not have enough credits for this operation."
}
]
}Códigos de erro
| Código | Significado |
|---|---|
INVALID_API_KEY | O cabeçalho Authorization está ausente, malformado ou não reconhecido. |
MISSING_SCOPE | A chave é válida, mas não tem o escopo exigido pelo endpoint. |
INSUFFICIENT_CREDITS | A conta não tem créditos suficientes para a operação. |
RATE_LIMITED | Requisições demais. Retornado com HTTP 429 e um cabeçalho Retry-After. |
UPSTREAM_ERROR | Um serviço interno falhou. Seguro para repetir com backoff. |
VALIDATION_ERROR | O corpo da requisição ou os parâmetros de query falharam na validação. |
INVALID_JSON | O corpo da requisição não pôde ser parseado como JSON. |
NOT_FOUND | O recurso solicitado não existe ou não é visível para esta chave. |
ORIGIN_REJECTED | A requisição veio de um navegador ou origem não permitida. |
Em RATE_LIMITED a API retorna HTTP 429 com um cabeçalho Retry-After que diz quantos segundos esperar. Respeite-o e use backoff exponencial. Os limites de plano estão na página de preços.
Paginação
Os endpoints de listagem usam paginação por cursor: limit define o tamanho da página, e cursor é um token opaco da página anterior (não faça parse nem o construa você mesmo). Os padrões e máximos variam por endpoint e estão definidos na spec OpenAPI.
# First page
curl 'https://api.vdclip.com/v1/projects?limit=20' \
-H 'Authorization: Bearer vdck_your_key_here'
# Next page, using the cursor from the previous response
curl 'https://api.vdclip.com/v1/projects?limit=20&cursor=eyJpZCI6IjEyMyJ9' \
-H 'Authorization: Bearer vdck_your_key_here'Escopos
Os escopos seguem o padrão vdclip:<resource>:<action>. Há 15. Uma requisição sem o escopo que um endpoint exige falha com MISSING_SCOPE. Dois escopos são restritos por plano: vdclip:render:execute e vdclip:social:publish exigem um plano que os inclua. Veja a página de preços.
| Recurso | Escopo | Concede |
|---|---|---|
| Conta | vdclip:account:read | Ler perfil da conta, plano e saldo de créditos. |
| Projetos | vdclip:projects:read | Listar e ler projetos, clipes e links de compartilhamento. |
| Projetos | vdclip:projects:write | Criar e excluir projetos e gerenciar links de compartilhamento. |
| Resultados | vdclip:results:read | Ler detalhes do clipe. |
| Resultados | vdclip:results:write | Curtir e descurtir clipes. |
| Render | vdclip:render:execute | Iniciar renderizações e ler o status do render. Restrito por plano. |
| Social | vdclip:social:read | Listar contas sociais conectadas. |
| Social | vdclip:social:publish | Publicar ou agendar clipes. Restrito por plano. |
| Calendário | vdclip:calendar:read | Listar conteúdo agendado e publicado. |
| Calendário | vdclip:calendar:write | Reagendar, atualizar e cancelar postagens agendadas. |
| Templates | vdclip:templates:read | Listar e ler templates. |
| Templates | vdclip:templates:write | Criar, atualizar e excluir templates. |
| Assets | vdclip:assets:read | Listar e ler assets do brand kit. |
| Assets | vdclip:assets:write | Gerenciar vocabulário e listas de palavras censuradas do brand kit. |
Referência de endpoints
Todos os endpoints /v1, agrupados por recurso. Schemas completos, corpos de requisição são gerados a partir da spec OpenAPI.
Account
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/account | vdclip:account:read | Obter perfil da conta e plano |
GET | /v1/credits | vdclip:account:read | Obter saldo de créditos |
Projects
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/projects | vdclip:projects:read | Listar projetos |
POST | /v1/projects | vdclip:projects:write | Criar um projeto de clipagem/legendas |
GET | /v1/projects/{project_id} | vdclip:projects:read | Obter status e detalhes do projeto |
DELETE | /v1/projects/{project_id} | vdclip:projects:write | Excluir um projeto |
GET | /v1/projects/{project_id}/clips | vdclip:projects:read | Listar os clipes que um projeto produziu |
GET | /v1/projects/{project_id}/share | vdclip:projects:read | Obter o link de compartilhamento do projeto |
POST | /v1/projects/{project_id}/share | vdclip:projects:write | Criar um link de compartilhamento do projeto |
POST | /v1/projects/{project_id}/share/regenerate | vdclip:projects:write | Regenerar o link de compartilhamento do projeto |
DELETE | /v1/projects/{project_id}/share | vdclip:projects:write | Excluir o link de compartilhamento do projeto |
Clips
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/clips/{clip_id} | vdclip:results:read | Obter detalhes do clipe |
POST | /v1/clips/{clip_id}/like | vdclip:results:write | Curtir um clipe |
POST | /v1/clips/{clip_id}/dislike | vdclip:results:write | Descurtir um clipe |
POST | /v1/clips/{clip_id}/renders | vdclip:render:execute | Iniciar uma renderização |
GET | /v1/clips/{clip_id}/renders/latest | vdclip:render:execute | Obter o status do render mais recente |
POST | /v1/clips/{clip_id}/publish | vdclip:social:publish | Publicar ou agendar um clipe |
Templates
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/templates | vdclip:templates:read | Listar templates |
POST | /v1/templates | vdclip:templates:write | Criar um template |
GET | /v1/templates/{template_id} | vdclip:templates:read | Obter um template |
PATCH | /v1/templates/{template_id} | vdclip:templates:write | Atualizar um template |
DELETE | /v1/templates/{template_id} | vdclip:templates:write | Excluir um template |
Assets
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/assets | vdclip:assets:read | Listar assets do brand kit |
GET | /v1/assets/{asset_id} | vdclip:assets:read | Obter um asset do brand kit |
Calendar
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/calendar | vdclip:calendar:read | Listar conteúdo agendado/publicado |
PATCH | /v1/calendar/{post_id} | vdclip:calendar:write | Reagendar/atualizar uma postagem agendada |
DELETE | /v1/calendar/{post_id} | vdclip:calendar:write | Cancelar uma postagem agendada |
Social
| Método | Path | Escopo | Resumo |
|---|---|---|---|
GET | /v1/social-accounts | vdclip:social:read | Listar contas sociais conectadas |
OAuth 2.1 para clientes que agem em nome de um usuário
Para servidores MCP, agentes de IA e integrações que atuam em nome de um usuário, o VDClip executa um Servidor de Autorização OAuth 2.1 (emissor https://api.vdclip.com). Esses clientes enviam Authorization: Bearer <JWT> em vez de uma chave de API.
Os endpoints OAuth 2.1 usam corpos de requisição e resposta padrão RFC. Eles não usam o array errors[] do /v1. Trate suas respostas e erros separadamente.
| Método | Path | Resumo |
|---|---|---|
GET | /.well-known/oauth-authorization-server | Metadados do Servidor de Autorização (RFC 8414) |
GET | /.well-known/jwks.json | JWKS, as chaves públicas de assinatura ES256 |
POST | /oauth2/application | Dynamic Client Registration (RFC 7591) |
GET | /oauth2/application/{client_id} | Ler registro do cliente (RFC 7592) |
POST | /oauth2/token | Endpoint de token, authorization code e refresh |
POST | /oauth2/revoke | Revogação de token (RFC 7009) |
Páginas relacionadas
Dicas e Boas Práticas
A API não tem CORS. Armazene chaves vdck_ em variáveis de ambiente do servidor, nunca em código de cliente de navegador ou móvel.
Uma chave com escopo restrito limita o raio de impacto caso ela seja exposta.
Registre-o em toda chamada para que o suporte possa rastrear uma requisição específica quando você contatar contact@vdclip.com.
Em um 429, aguarde os segundos no cabeçalho Retry-After e use backoff exponencial para falhas repetidas.
Trate o cursor de paginação como opaco. Passe de volta exatamente o que a resposta anterior retornou.