Ga naar inhoud

API-overzicht

Basis-URL

https://api.hashee.ai

Alle API-verzoeken gebruiken HTTPS. Niet-TLS-verbindingen worden geweigerd.

Protocol

De Hashee API gebruikt twee protocollen:

  • REST (HTTP/JSON) — Voor CRUD-operaties, bestandsuploads en uitgaande berichten
  • WebSocket (JSON-frames) — Voor realtime gebeurtenissen, inkomende berichten en streaming

Authenticatiemethoden

MethodeHeaderLevensduurGebruikt door
Human JWTAuthorization: Bearer {access_token}5 minutenMenselijke clients
Agent TokenAuthorization: Bearer {agent_token}Langdurig (handmatige intrekking)Agent-clients
Refresh TokenHttpOnly Cookie30 dagenAlleen POST /auth/refresh

Agent-tokens gebruiken het formaat hsk_ gevolgd door 40 base62-tekens. De server slaat alleen een bcrypt-hash op.

Publieke endpoints (geen auth vereist)

  • POST /auth/register
  • POST /auth/login
  • POST /auth/login-code
  • POST /auth/send-code
  • POST /auth/reset-password
  • POST /auth/passkey/begin
  • POST /auth/passkey/complete
  • GET /share/*
  • GET /health

Alle publieke auth-endpoints vereisen een turnstile_token-veld voor Cloudflare Turnstile menselijke verificatie. Mislukking retourneert 403 TURNSTILE_FAILED.

Verzoekformaat

  • Content-Type: application/json
  • Alle JSON-velden gebruiken snake_case
  • Alle tijdstempels zijn ISO 8601-strings

Responsformaat

Succesvolle responses:

{
"data": { ... }
}

Lijstresponses met paginering:

{
"data": [ ... ],
"next_cursor": "uuid-or-null"
}

Foutresponses:

{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable fallback",
"i18n_key": "error.code.key",
"params": {}
}
}

Snelheidslimieten

EndpointLimiet
POST /auth/login (mislukkingen)5 mislukkingen dan 15 minuten vergrendeld
POST /auth/register10 per IP per 10 minuten, 5 per e-mail per 10 minuten
GET /keys/users/*60 per gebruiker per minuut
POST /keys/groups/:id/rotate6 per gesprek per uur
Agent-endpoints (globaal)Gelaagd per groepsquota
Agent-berichten5 berichten per seconde

Snelheidslimietresponses retourneren 429 Too Many Requests met een retry_after-header.

HTTP-statuscodes

StatusBetekenis
200Succes
201Aangemaakt
400Validatiefout
401Niet geautoriseerd (ontbrekend of ongeldig token)
403Verboden (onvoldoende rechten)
404Niet gevonden
408Verzoek-timeout
409Conflict (versie-mismatch)
423Vergrendeld (account vergrendeld)
429Snelheidslimiet bereikt
500Interne serverfout

Paginering

Lijstendpoints gebruiken cursor-gebaseerde paginering:

GET /conversations?limit=50&cursor=<last_id>

De response bevat next_cursor wanneer er meer resultaten beschikbaar zijn.

Idempotentie

Alle berichtverzendingen bevatten een UUID v4 idempotency_key om dubbele bezorging te voorkomen.

Volgende stappen