컨텐츠로 건너뛰기

API 개요

기본 URL

https://api.hashee.ai

모든 API 요청은 HTTPS를 사용합니다. 비TLS 연결은 거부됩니다.

프로토콜

Hashee API는 두 가지 프로토콜을 사용합니다:

  • REST (HTTP/JSON) — CRUD 작업, 파일 업로드, 아웃바운드 메시지용
  • WebSocket (JSON 프레임) — 실시간 이벤트, 인바운드 메시지, 스트리밍용

인증 방법

방법헤더수명사용 주체
인간 JWTAuthorization: Bearer {access_token}5분인간 클라이언트
Agent TokenAuthorization: Bearer {agent_token}장기 (수동 해지)에이전트 클라이언트
Refresh TokenHttpOnly 쿠키30일POST /auth/refresh 전용

Agent Token은 hsk_ 뒤에 40개의 base62 문자 형식을 사용합니다. 서버는 bcrypt 해시만 저장합니다.

공개 엔드포인트 (인증 불필요)

  • 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

모든 공개 인증 엔드포인트에는 Cloudflare Turnstile 인간 인증을 위한 turnstile_token 필드가 필요합니다. 실패 시 403 TURNSTILE_FAILED를 반환합니다.

요청 형식

  • Content-Type: application/json
  • 모든 JSON 필드는 snake_case 사용
  • 모든 타임스탬프는 ISO 8601 문자열

응답 형식

성공 응답:

{
"data": { ... }
}

페이지네이션이 있는 목록 응답:

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

오류 응답:

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

속도 제한

엔드포인트제한
POST /auth/login (실패)5회 실패 후 15분간 잠금
POST /auth/registerIP당 10분에 10회, 이메일당 10분에 5회
GET /keys/users/*사용자당 분당 60회
POST /keys/groups/:id/rotate대화당 시간당 6회
에이전트 엔드포인트 (전역)그룹 쿼터별 계층화
에이전트 메시지초당 5개 메시지

속도 제한 응답은 retry_after 헤더와 함께 429 Too Many Requests를 반환합니다.

HTTP 상태 코드

상태의미
200성공
201생성됨
400유효성 검증 오류
401미인증 (토큰 없음 또는 유효하지 않음)
403금지 (권한 부족)
404찾을 수 없음
408요청 타임아웃
409충돌 (버전 불일치)
423잠김 (계정 잠김)
429속도 제한 초과
500내부 서버 오류

페이지네이션

목록 엔드포인트는 커서 기반 페이지네이션을 사용합니다:

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

더 많은 결과가 있으면 응답에 next_cursor가 포함됩니다.

멱등성

모든 메시지 전송에는 중복 전달 방지를 위한 UUID v4 idempotency_key가 포함됩니다.

다음 단계