Memory API
에러·제한
에러 코드, 응답 형식, 레이트리밋.
응답 형식
모든 /v1/* 응답은 일관된 envelope 를 씁니다.
// 성공
{ "ok": true, "data": { /* … */ } }
// 실패
{ "ok": false, "error": { "code": "validation", "message": "query is required" } }ok 로 성공/실패를 분기하고, 실패 시 error.code 로 처리하세요. error.message 는 사람이 읽는 설명입니다.
에러 코드
| 코드 | HTTP | 의미 |
|---|---|---|
validation | 400 | 요청 바디/파라미터가 잘못됨 |
unauthorized | 401 | Bearer 토큰 누락/무효 |
forbidden | 403 | 키는 유효하나 권한 없음 |
not_found | 404 | 대상 없음 |
conflict | 409 | 충돌 (예: 중복 스킬 이름) |
rate_limited | 429 | 레이트리밋 초과 |
internal | 500 | 서버 오류 |
수집(/sources/api/*) 응답도 같은 { ok, ... } 모양이며, 실패 시 code 와 message 를 포함합니다.
레이트리밋
읽기 /v1/* 는 IP·엔드포인트당 60초에 30요청, 쓰기(POST /v1/memories)는 워크스페이스·IP당 60초에 10요청입니다. 초과 시 429 / rate_limited.
{ "ok": false, "error": { "code": "rate_limited", "message": "too many requests" } }429 를 받으면 지수 백오프로 재시도하세요. 배치 작업은 엔드포인트별 한도를 고려해 분산하면 안정적입니다.
흔한 실수
- 401 —
Authorization: Bearer <키>형식인지, 키가 폐기되지 않았는지 확인. - 400 on search —
query가 비었거나 4000자를 초과. - 409 on skills — 같은 이름의 스킬이 이미 존재.