Desenvolvedores
Construa com a API da Hoshika
OAuth2 para apps de terceiros (trackers, extensões, bots) e uma API JSON para listas de anime e mangá.
1. Registre seu app
Qualquer conta Hoshika pode criar credenciais OAuth em Configurações → Aplicativos.
- As redirect URIs devem ser https (http://localhost permitido em desenvolvimento).
- O client secret é mostrado só uma vez — guarde com segurança.
- Até 5 apps por conta.
2. OAuth 2.0 (authorization code + PKCE)
Fluxo padrão: envie o usuário para autorizar, ele aprova na tela de consentimento e você troca o code por tokens. PKCE é obrigatório.
# Discovery (OpenID Connect)
https://hoshika.app/api/auth/.well-known/openid-configuration
# 1) Authorization (PKCE required)
GET https://hoshika.app/api/auth/oauth2/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=https://yourapp.example/callback
&response_type=code
&scope=openid profile offline_access
&code_challenge=BASE64URL(SHA256(verifier))
&code_challenge_method=S256
# 2) Token exchange
POST https://hoshika.app/api/auth/oauth2/token
grant_type=authorization_code
code=...&code_verifier=...&client_id=...&client_secret=...
redirect_uri=https://yourapp.example/callback
# → { access_token, refresh_token, expires_in: 86400 }Access tokens duram 24 horas; refresh tokens, 90 dias. Envie o token como Authorization: Bearer em cada chamada.
3. A API
URL base https://hoshika.app/api/v1 — JSON de entrada e saída. Toda resposta inclui ok, e os erros carregam um code estável legível por máquina.
curl https://hoshika.app/api/v1/library?type=anime \
-H "Authorization: Bearer ACCESS_TOKEN"| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/v1/search?q= | Buscar anime e mangá |
| GET | /api/v1/anime/{shortId} | Detalhes do anime |
| GET | /api/v1/manga/{shortId} | Detalhes do mangá |
| GET | /api/v1/library?type=anime|manga | A lista do usuário (paginação por cursor) |
| POST | /api/v1/library/entry | Adicionar/atualizar entrada (upsert parcial) |
| DELETE | /api/v1/library/entry | Remover uma entrada |
| POST | /api/v1/ratings | Avaliar um anime |
# Upsert de progreso (campos parciales)
POST /api/v1/library/entry
{ "type": "anime", "mediaId": "<uuid>", "status": "watching",
"progress": 7, "userScore": 8 }
# Contrato de error (siempre):
{ "ok": false, "code": "unauthorized" | "invalid" | "rate_limited" | ... }4. Regras do jogo
- Rate limits valem por usuário e por IP; em caso de 429, aguarde e tente de novo.
- O conteúdo adulto segue as configurações de cada usuário: menores e usuários com o filtro ativado não podem ver nem adicionar títulos explícitos (adult_content_blocked).
- O usuário pode revogar o acesso do seu app a qualquer momento em Configurações → Aplicativos.
- O catálogo expõe mal_id e anilist_id quando conhecidos — mapeie seus IDs uma vez e faça cache.
Dúvidas, limites maiores ou quer seu tracker listado? Fale conosco