참고Reference · v1 preview
에러 · 레이트 리밋Errors & rate limits
에러 형식
HTTP/1.1 403 Forbidden
Content-Type: application/json
{ "error": "not_whitelisted", "message": "key 'boiler_setpoint_c' has no remote write path", "key": "boiler_setpoint_c", "request_id": "req_01JB…" }
| HTTP | error | 언제 |
|---|
| 400 | out_of_range · invalid_param | 값이 범위 밖 (클램프하지 않음) · 쿼리 형식 오류 |
| 401 | unauthenticated | 키 없음·만료·폐기 |
| 403 | not_whitelisted · insufficient_scope | 허용 목록 밖 키 · 범위 부족 |
| 404 | not_found | 없는 리소스, 또는 키 범위 밖 머신 (존재를 누설하지 않음) |
| 409 | epoch_mismatch | 다른 곳에서 먼저 바뀜 — 다시 읽고 결정 |
| 422 | identity_conflict | 두 기기가 같은 장치 키로 체크인 중 — 쓰기 거부 |
| 429 | rate_limited | Retry-After 헤더 참조 |
| 503 | machine_offline · live_unavailable | 허브 미연결 · 라이브 소스 없음 |
레이트 리밋
| 티어 | 읽기 | 쓰기 (PATCH) | SSE 동시 연결 | 웹훅 엔드포인트 |
|---|
| Free | 60 req/min | — | 1 | — |
| Pro | 600 req/min | 60 req/min | 5 | 10 |
| Enterprise | 계약 | 계약 | 계약 | 계약 |
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 597
X-RateLimit-Reset: 1761739500
Error shape
{ "error": "not_whitelisted", "message": "…", "key": "boiler_setpoint_c", "request_id": "req_…" }
| HTTP | error |
|---|
| 400 | out_of_range · invalid_param |
| 401 | unauthenticated |
| 403 | not_whitelisted · insufficient_scope |
| 404 | not_found (never leaks existence) |
| 409 | epoch_mismatch |
| 422 | identity_conflict |
| 429 | rate_limited (Retry-After) |
| 503 | machine_offline · live_unavailable |
Rate limits
| Tier | Reads | Writes | SSE | Webhooks |
|---|
| Free | 60/min | — | 1 | — |
| Pro | 600/min | 60/min | 5 | 10 |
| Enterprise | contract | contract | contract | contract |
이 문서의 원본은 이 HTML 파일이에요 (빌드 없음).