Base URLDesenvolvimento local:
http://localhost:8080/v1Todas as rotas da API pública usam esse prefixo. Chaves de produção usam o prefixo shp_live_; em ambiente local (não-produção), o prefixo é shp_test_.Pré-requisitos
- Conta em shappire.tools com login Google
curlou Postman no seu backend (não no browser do usuário)- URL pública de mídia suportada (TikTok, Instagram, SoundCloud, etc.)
API keys são credenciais secretasTrate
shp_live_... como senha de banco de dados. Qualquer pessoa com a chave pode consumir sua cota e enfileirar downloads no seu projeto.Nunca:- commite no Git (
.envno.gitignore) - coloque em código frontend (React, Vue, Svelte, Next.js client components)
- envie em apps mobile sem proxy backend
- armazene em
localStorage,sessionStorageou cookies do browser - exponha em URLs, query strings ou repositórios públicos
Arquitetura correta
Arquitetura incorreta
Onde armazenar
Veja também: Chaves de API · Boas práticas
1. Criar um projeto
- Acesse Developer → Projetos
- Clique em Novo projeto
- Dê um nome (ex.
Integração Produção)
2. Criar uma API key
- Abra o projeto criado
- Vá em API Keys → Nova API Key
- Nome descritivo (ex.
Worker Downloads) - Marque os escopos:
media:resolve— resolver metadadosmedia:download— enfileirar downloads
- Clique em Criar
shp_live_... aparece uma única vez. Copie agora.
3. Guardar a API key com segurança
4. Testar autenticação
Confirme que a chave funciona com o endpoint público de health (não exige auth):GET /platforms:
5. Consultar plataformas suportadas
A lista é dinâmica — sempre consulte antes de integrar:
A resposta inclui
Cache-Control: public, max-age=300 — pode cachear por 5 minutos.
Detalhes e exclusões: Plataformas.
6. Resolver uma mídia
POST /media/resolve analisa a URL e retorna metadados + formatos disponíveis. Requer escopo media:resolve.
O campo
data.id (ex. med_a1b2c3d4) é o identificador usado como media_id no download. TTL padrão: 1 hora — após isso, media_not_found.7. Escolher um formato
Use umformats[].id da resposta do resolve. Os mais comuns:
Guarde o
data.id e o format escolhido para o próximo passo.
8. Enfileirar o download (criar job)
POST /media/download cria um job assíncrono. Requer escopo media:download. Retorna 202 Accepted.
Você também pode enviar
url + format direto, sem resolve prévio. Resolver antes é recomendado para exibir metadados no seu UI e validar formatos.queued ou processing por projeto. Exceder retorna 429 concurrency_limit_exceeded.
9. Consultar status do job (polling)
GET /jobs/{jobId} não exige escopo específico — só chave válida do mesmo projeto.
Faça polling a cada 2–5 segundos até
completed ou failed. Não consulte mais rápido que isso.
10. Obter o resultado e baixar
Quandostatus for completed:
result.expires_at:
11. Tratar erros
Todas as rotas/v1/* retornam erros no formato:
Sempre registre
request_id nos logs do seu servidor. Referência completa: Erros e códigos.
12. Mesmo fluxo em outras linguagens
Os passos 4–10 usamcurl de ponta a ponta. Para clientes prontos em Node.js, Python, Go, PHP, Ruby e Java — com process.env.SHAPPIRE_API_KEY — veja Exemplos por linguagem.