인증 및 속도 제한
Bearer / X-API-Key / 쿼리 세 가지 쓰기 방법, 패키지 속도 제한, HTTP 상태 코드 의미.
오픈 플랫폼의 모든 엔드포인트는 API Key를 통해 균일하게 인증됩니다. 이 페이지에서는 토큰을 작성하는 세 가지 방법, 패키지 속도 제한 및 오류 응답의 의미를 명확하게 설명합니다.
세 가지 인증 작성 방법
1. 권한 : Bearer (권장)
curl https://braidrun.com/api/v1/workflows \
-H "Authorization: Bearer dyk_<id>_<secret>"가장 표준적인 작성 방법으로 모든 SDK에서 기본적으로 지원됩니다. 생산 환경이 선호됩니다.
2.X-API-키 헤더
curl https://braidrun.com/api/v1/workflows \
-H "X-API-Key: dyk_<id>_<secret>"일부 폐쇄 네트워크의 프록시가 인증 헤더를 전달할 수 없는 시나리오에 적합합니다. 기능적으로 Bearer와 동일합니다.
3. 쿼리 매개변수 ?api_key=(헤더를 쓸 수 없는 시나리오에만 해당)
https://braidrun.com/api/webhook-trigger/approval/appr-123/approve?api_key=dyk_<id>_<secret>쿼리 매개변수는 브라우저 기록, 리퍼러 헤더, HTTP 서버 액세스 로그 및 CDN 로그에 기록됩니다. GET 링크(예: 이메일/Slack/텔레그램 원클릭 승인 링크) 형식으로 트리거되어야 하는 시나리오에서만 사용되며 짧은 TTL 키와 함께 사용됩니다. 쿼리 매개변수에 대한 Bearer 우선순위를 절대로 포기하지 마십시오.
우선순위
Authorization: Bearer dyk_…X-API-Key: dyk_…?api_key=dyk_…
위에서 아래로 시도하고 비어 있지 않은 것을 찾으면 구문 분석을 중지하십시오.
속도 제한
각 API Key에는 "분당"과 "일일"이라는 두 가지 상한이 있으며, 이는 키 소유자의 패키지에 따라 자동으로 적용됩니다. 각 키에는 독립적인 할당량이 있으며 동일한 계정의 다른 키와 공유되지 않습니다.
패키지 비교표
| 패키지 | 분당 | 매일 |
|---|---|---|
| Free | 60 | 2,000 |
| Pro | 300 | 50,000 |
| Team | 1,200 | 500,000 |
| Enterprise | 6,000 | 제한 없음 |
창 의미론
- 분 창 · epoch 분을 키로 사용하면 경계가 1분마다 자동으로 재설정됩니다(첫 번째 호출에서 시작하는 슬라이딩 창이 아님).
- 매일(요일 창) · UTC 날짜를 키로 사용하고 매일 UTC 00:00에 자동으로 재설정됩니다.
한도에 도달하면
HTTP/1.1 429 Too Many Requests
Retry-After: 38
X-RateLimit-Limit: 60
X-RateLimit-Window: minute
Content-Type: application/json
{
"error": "Rate limit exceeded",
"window": "minute",
"limit": 60,
"retryAfterSeconds": 38
}클라이언트는 다음을 수행해야 합니다.
- Retry-After 헤더(초)를 읽고 해당 시간 동안 지연한 후 다시 시도하십시오.
X-RateLimit-Window어떤 창에 도달했는지 알려줍니다(분/일).- 지수 백오프 + 지터; 429를 받은 후 즉시 재시도하지 마세요.
더 높은 처리량이 필요합니까? 서로 다른 환경/다양한 통합을 위해 독립 키가 발급되며 각 키는 전체 할당량을 받습니다. 3개의 키를 여는 Pro 사용자는 총 용량 900RPM과 같습니다. 이는 사고 위치에 대한 모범 사례이기도 합니다. 문제가 발생하면 어떤 키가 비정상적인 용도로 사용되는지 살펴보기만 하면 됩니다.
HTTP 응답 코드
| 상태 코드 | 의미 | 대처 전략 |
|---|---|---|
200 | 성공 | — |
202 | 승인(실행 시작 시) | 반환된 실행 ID로 상태를 폴링합니다. |
400 | 잘못된 요청 본문(JSON/필드 오류) | 요청 수정; 재시도하지 마세요 |
401 | 토큰이 누락되었거나 형식이 잘못되었거나 취소되었거나 만료되었거나 범위가 충분하지 않습니다. | 토큰과 범위를 다시 확인하세요. 다시 시도하지 마세요 |
403 | 토큰 소유자 계정이 비활성화/잠겨졌습니다. | 계정 관리자에게 문의하세요. 다시 시도하지 마세요 |
404 | 리소스가 존재하지 않거나 표시되지 않습니다. | ID/범위를 확인하세요. 다시 시도하지 마세요 |
409 | 상태 충돌(예: 승인이 결정됨) | 현재 상태를 다시 쿼리해 보세요. |
429 | 속도 제한 | Retry-After 준수 후 재시도 |
500/502/503 | 서버 오류 | 지수 백오프 + 지터, 3~5회 재시도 |
토큰 누락, 만료, 취소 및 불충분한 범위는 모두 특정 실패 이유를 노출하지 않고 균일하게 401을 반환합니다. 이를 통해 공격자가 시행착오를 통해 어떤 키가 존재하는지/어떤 범위가 활성화되어 있는지 감지하는 것을 방지할 수 있습니다. 전체 실패 사유(이유 필드)는 감사 로그에 보관되며 관리자가 확인할 수 있습니다.