Skip to Content

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.

i
Somente no servidor

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 exemplo https://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ódigoSignificado
INVALID_API_KEYO cabeçalho Authorization está ausente, malformado ou não reconhecido.
MISSING_SCOPEA chave é válida, mas não tem o escopo exigido pelo endpoint.
INSUFFICIENT_CREDITSA conta não tem créditos suficientes para a operação.
RATE_LIMITEDRequisições demais. Retornado com HTTP 429 e um cabeçalho Retry-After.
UPSTREAM_ERRORUm serviço interno falhou. Seguro para repetir com backoff.
VALIDATION_ERRORO corpo da requisição ou os parâmetros de query falharam na validação.
INVALID_JSONO corpo da requisição não pôde ser parseado como JSON.
NOT_FOUNDO recurso solicitado não existe ou não é visível para esta chave.
ORIGIN_REJECTEDA requisição veio de um navegador ou origem não permitida.
i
Limite de taxa

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.

RecursoEscopoConcede
Contavdclip:account:readLer perfil da conta, plano e saldo de créditos.
Projetosvdclip:projects:readListar e ler projetos, clipes e links de compartilhamento.
Projetosvdclip:projects:writeCriar e excluir projetos e gerenciar links de compartilhamento.
Resultadosvdclip:results:readLer detalhes do clipe.
Resultadosvdclip:results:writeCurtir e descurtir clipes.
Rendervdclip:render:executeIniciar renderizações e ler o status do render. Restrito por plano.
Socialvdclip:social:readListar contas sociais conectadas.
Socialvdclip:social:publishPublicar ou agendar clipes. Restrito por plano.
Calendáriovdclip:calendar:readListar conteúdo agendado e publicado.
Calendáriovdclip:calendar:writeReagendar, atualizar e cancelar postagens agendadas.
Templatesvdclip:templates:readListar e ler templates.
Templatesvdclip:templates:writeCriar, atualizar e excluir templates.
Assetsvdclip:assets:readListar e ler assets do brand kit.
Assetsvdclip:assets:writeGerenciar 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étodoPathEscopoResumo
GET/v1/accountvdclip:account:readObter perfil da conta e plano
GET/v1/creditsvdclip:account:readObter saldo de créditos

Projects

MétodoPathEscopoResumo
GET/v1/projectsvdclip:projects:readListar projetos
POST/v1/projectsvdclip:projects:writeCriar um projeto de clipagem/legendas
GET/v1/projects/{project_id}vdclip:projects:readObter status e detalhes do projeto
DELETE/v1/projects/{project_id}vdclip:projects:writeExcluir um projeto
GET/v1/projects/{project_id}/clipsvdclip:projects:readListar os clipes que um projeto produziu
GET/v1/projects/{project_id}/sharevdclip:projects:readObter o link de compartilhamento do projeto
POST/v1/projects/{project_id}/sharevdclip:projects:writeCriar um link de compartilhamento do projeto
POST/v1/projects/{project_id}/share/regeneratevdclip:projects:writeRegenerar o link de compartilhamento do projeto
DELETE/v1/projects/{project_id}/sharevdclip:projects:writeExcluir o link de compartilhamento do projeto

Clips

MétodoPathEscopoResumo
GET/v1/clips/{clip_id}vdclip:results:readObter detalhes do clipe
POST/v1/clips/{clip_id}/likevdclip:results:writeCurtir um clipe
POST/v1/clips/{clip_id}/dislikevdclip:results:writeDescurtir um clipe
POST/v1/clips/{clip_id}/rendersvdclip:render:executeIniciar uma renderização
GET/v1/clips/{clip_id}/renders/latestvdclip:render:executeObter o status do render mais recente
POST/v1/clips/{clip_id}/publishvdclip:social:publishPublicar ou agendar um clipe

Templates

MétodoPathEscopoResumo
GET/v1/templatesvdclip:templates:readListar templates
POST/v1/templatesvdclip:templates:writeCriar um template
GET/v1/templates/{template_id}vdclip:templates:readObter um template
PATCH/v1/templates/{template_id}vdclip:templates:writeAtualizar um template
DELETE/v1/templates/{template_id}vdclip:templates:writeExcluir um template

Assets

MétodoPathEscopoResumo
GET/v1/assetsvdclip:assets:readListar assets do brand kit
GET/v1/assets/{asset_id}vdclip:assets:readObter um asset do brand kit

Calendar

MétodoPathEscopoResumo
GET/v1/calendarvdclip:calendar:readListar conteúdo agendado/publicado
PATCH/v1/calendar/{post_id}vdclip:calendar:writeReagendar/atualizar uma postagem agendada
DELETE/v1/calendar/{post_id}vdclip:calendar:writeCancelar uma postagem agendada

Social

MétodoPathEscopoResumo
GET/v1/social-accountsvdclip:social:readListar 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.

i
Corpos no formato RFC, não o formato /v1

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étodoPathResumo
GET/.well-known/oauth-authorization-serverMetadados do Servidor de Autorização (RFC 8414)
GET/.well-known/jwks.jsonJWKS, as chaves públicas de assinatura ES256
POST/oauth2/applicationDynamic Client Registration (RFC 7591)
GET/oauth2/application/{client_id}Ler registro do cliente (RFC 7592)
POST/oauth2/tokenEndpoint de token, authorization code e refresh
POST/oauth2/revokeRevogação de token (RFC 7009)

Páginas relacionadas

🔑

Autenticação

Chaves de API, escopos e OAuth 2.1 em profundidade

📦

API de Projetos

Crie projetos e leia os clipes que eles produzem

🎬

API de Clipes

Renderize clipes, faça polling de status e publique

Dicas e Boas Práticas

Mantenha a chave no servidor

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.

Solicite apenas os escopos necessários

Uma chave com escopo restrito limita o raio de impacto caso ela seja exposta.

Sempre leia o X-Request-ID

Registre-o em toda chamada para que o suporte possa rastrear uma requisição específica quando você contatar contact@vdclip.com.

Respeite o Retry-After

Em um 429, aguarde os segundos no cabeçalho Retry-After e use backoff exponencial para falhas repetidas.

Nunca faça parse do cursor

Trate o cursor de paginação como opaco. Passe de volta exatamente o que a resposta anterior retornou.

Perguntas Frequentes

Última atualização em