Docs API
Toutes les réponses d'erreur sont en JSON { "statusCode", "message" }. Un identifiant invalide ou inconnu répond 404.
URL de capture
Toute méthode sur https://<domaine>/h/:id et n'importe quel sous-chemin. La requête est stockée puis la réponse est un 200 JSON :
{ "ok": true, "id": "…" }- Les 50 dernières requêtes sont conservées par session.
- 1 Mo maximum par requête, headers compris : au-delà,
413et rien n'est stocké. OPTIONSest stocké et répond204avec les en-têtes CORS.- Le contenu reçu n'est jamais renvoyé.
- Session effacée 24 h après la dernière activité.
Sessions
| Méthode | Route | Réponse | Limite |
|---|---|---|---|
| POST | /api/sessions | 201 · SessionMeta | 10 / min / IP |
| GET | /api/sessions/:id | 200 · SessionMeta | 300 / min / IP |
| DELETE | /api/sessions/:id | 204 | 300 / min / IP |
| GET | /api/sessions/:id/requests | 200 · { session, requests[] } | 300 / min / IP |
| DELETE | /api/sessions/:id/requests | 204 | 300 / min / IP |
| GET | /api/sessions/:id/stream | 200 · text/event-stream | 30 / min / IP |
| PUT | /api/sessions/:id/password | 200 · cookie hs_<id> | 300 / min / IP |
| DELETE | /api/sessions/:id/password | 204 | 300 / min / IP |
| POST | /api/sessions/:id/unlock | 200 · cookie hs_<id> | 5 / min / IP · 20 / min / session |
Mot de passe (optionnel)
Une session peut être protégée par un mot de passe (8–128 caractères). Seul le navigateur qui l'a créée peut poser le premier mot de passe (jeton ownerToken renvoyé une seule fois par POST /api/sessions). Une session protégée répond 401 à la lecture sans cookie d'accès ; POST …/unlock avec { "password" } pose un cookie HttpOnly valable 12 h, limité au chemin de la session. L'URL de capture reste ouverte : vos webhooks n'ont rien à changer. Le mot de passe n'est jamais stocké, seulement une empreinte scrypt dans le marqueur chiffré.
Flux SSE
Chaque message utilise le champ event: et un data: JSON. Événements : ready, request, cleared, evicted, deleted, ping. Un ping est envoyé toutes les 15 s.
Limites de débit
Les réponses portent RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset. Quand une limite est atteinte, vous recevez un 429 avec Retry-After.