Développeurs
Construisez avec l'API Hoshika
OAuth2 pour applications tierces (trackers, extensions, bots) et une API JSON pour les listes d'anime et de manga.
1. Enregistre ton application
N'importe quel compte Hoshika peut créer des identifiants OAuth depuis Paramètres → Applications.
- Les redirect URIs doivent être en https (http://localhost autorisé en développement).
- Le client secret n'est affiché qu'une seule fois — conserve-le en lieu sûr.
- Jusqu'à 5 applications par compte.
2. OAuth 2.0 (authorization code + PKCE)
Flux standard : envoie l'utilisateur autoriser, il approuve sur l'écran de consentement, puis tu échanges le code contre des tokens. PKCE est obligatoire.
# 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 }Les access tokens durent 24 heures ; les refresh tokens, 90 jours. Envoie le token en Authorization: Bearer à chaque appel.
3. L'API
URL de base https://hoshika.app/api/v1 — JSON en entrée et en sortie. Chaque réponse inclut ok, et les erreurs portent un code stable lisible par machine.
curl https://hoshika.app/api/v1/library?type=anime \
-H "Authorization: Bearer ACCESS_TOKEN"| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/v1/search?q= | Rechercher anime et manga |
| GET | /api/v1/anime/{shortId} | Détail d'un anime |
| GET | /api/v1/manga/{shortId} | Détail d'un manga |
| GET | /api/v1/library?type=anime|manga | La liste de l'utilisateur (pagination par curseur) |
| POST | /api/v1/library/entry | Ajouter/mettre à jour une entrée (upsert partiel) |
| DELETE | /api/v1/library/entry | Retirer une entrée |
| POST | /api/v1/ratings | Noter un 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. Règles de conduite
- Des rate limits s'appliquent par utilisateur et par IP ; en cas de 429, attends puis réessaie.
- Le contenu adulte suit les réglages de chaque utilisateur : mineurs et utilisateurs avec le filtre activé ne peuvent ni voir ni ajouter de titres explicites (adult_content_blocked).
- L'utilisateur peut révoquer l'accès de ton application à tout moment depuis Paramètres → Applications.
- Le catalogue expose mal_id et anilist_id quand ils sont connus — mappe tes IDs une fois et mets-les en cache.
Des questions, des limites plus élevées, ou envie que ton tracker soit listé ? Contacte-nous