API Reference v1 읽기 전용
현재 외부에 열려 있는 엔드포인트는 조회(GET) 5개가 전부입니다. 쓰기(생성·수정·삭제)는 열려 있지 않습니다.
Base URL https://inlink.to/api/v1
기계판독 스펙 /api/v1/openapi.json (OpenAPI 3.1.0 · 이 페이지가 그대로 읽어 그리는 원본)
| 엔드포인트 | 설명 |
|---|---|
| GET /campaigns | 내 캠페인 목록 |
| GET /campaigns/:id | 캠페인 상세 |
| GET /campaigns/:id/applicants | 캠페인 지원자 현황(선정·제출) |
| GET /proposals | 내가 보낸 제안 목록 |
| GET /influencers | 공개 인플루언서 디렉터리 검색 |
- 설명
- 내 캠페인 목록
- 설명
- 캠페인 상세
- 설명
- 캠페인 지원자 현황(선정·제출)
- 설명
- 내가 보낸 제안 목록
- 설명
- 공개 인플루언서 디렉터리 검색
응답에 개인정보가 없습니다
어떤 응답에도 실명 · 휴대폰 번호 · 이메일 · 배송 주소 · 송장 번호 · 지원 시 작성한 자기소개·기획안 · 브랜드 내부 메모는 포함되지 않습니다.
지원자·제안에 딸려 나오는 influencer 객체는 id, username, nickname, avatar_url 4칸이 전부입니다. 각각 회원번호·닉네임·프로필 이미지입니다. 캠페인에 지원했다는 사실이 그 사람의 프로필 전체를 보여줄 근거가 되지는 않기 때문에 여기까지만 나갑니다.
인플루언서 디렉터리 검색(GET /influencers)은 이보다 넓습니다 — id, username, nickname, avatar_url, bio, tagline, city, country, categories, platforms, total_followers, channels. 서비스의 '인플루언서 찾기' 화면이 이미 누구에게나 보여주는 것과 같은 공개 정보입니다(같은 조회 경로를 씁니다). 실명·연락처·정확한 주소·이메일은 여기에도 들어가지 않습니다.
/campaigns내 캠페인 목록
내 계정이 소유한 브랜드의 캠페인만 최신순(created_at 내림차순)으로 반환합니다. 삭제된 캠페인은 빠집니다. 아직 브랜드가 없는 계정은 빈 목록과 함께 pagination.limit 이 0 으로 나갑니다.
파라미터
| 이름 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
page | 쿼리 | integer | 선택 | 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1) |
limit | 쿼리 | integer | 선택 | 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50) |
status | 쿼리 | string | 선택 | 캠페인 상태 정확일치 필터(예: active). 생략하면 전체를 반환합니다. |
page- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1)
limit- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50)
status- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 캠페인 상태 정확일치 필터(예: active). 생략하면 전체를 반환합니다.
요청 예시
curl https://inlink.to/api/v1/campaigns \
-H "Authorization: Bearer $INLINK_API_KEY"응답 예시 (200)
{
"data": [
{
"id": "3f2b7c9e-5d41-4a8e-9c10-6b2f0a7d1e34",
"campaign_number": 10241,
"title": "글로우 선크림 체험단 모집",
"status": "active",
"category": "beauty",
"platform": "instagram",
"campaign_type": "sns_content",
"delivery_type": "delivery",
"sns_platform": "instagram",
"shopping_channel": null,
"recruits": 10,
"chosen_count": 4,
"applicants_count": 15,
"reward_per_person": 30000,
"cost_estimated": 120000,
"cost_final": 330000,
"paid_at": "2026-07-28T02:12:40+00:00",
"reward_paid_total": 90000,
"product_provided": true,
"request_start_at": "2026-08-01T00:00:00+00:00",
"request_end_at": "2026-08-10T14:59:59+00:00",
"submit_start_at": "2026-08-11T00:00:00+00:00",
"submit_end_at": "2026-08-25T14:59:59+00:00",
"thumbnail_url": "https://example.supabase.co/storage/v1/object/public/campaigns/sample.jpg",
"created_at": "2026-07-28T02:11:07+00:00",
"brand": {
"id": "b1a2c3d4-0000-4000-8000-1234567890ab",
"company_name": "글로우코스메틱"
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"totalPages": 3
}
}상태 코드
| 코드 | 의미 | 응답 본문 |
|---|---|---|
200 | OK | — |
401 | 키 없음·무효·폐기 — { "error": "Invalid or missing API key" } | {"error":"Invalid or missing API key"} |
403 | Pro 자격 없음(강등·만료 포함) | {"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."} |
429 | 호출 한도 초과(IP 분당 300 또는 키 분당 60) | {"error":"Rate limit exceeded"} |
500 | 서버 내부 오류(일시 장애) — 재시도 대상 | {"error":"Failed to resolve brand scope"} |
200- 의미
- OK
- 응답 본문
- —
401- 의미
- 키 없음·무효·폐기 — { "error": "Invalid or missing API key" }
- 응답 본문
{"error":"Invalid or missing API key"}
403- 의미
- Pro 자격 없음(강등·만료 포함)
- 응답 본문
{"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."}
429- 의미
- 호출 한도 초과(IP 분당 300 또는 키 분당 60)
- 응답 본문
{"error":"Rate limit exceeded"}
500- 의미
- 서버 내부 오류(일시 장애) — 재시도 대상
- 응답 본문
{"error":"Failed to resolve brand scope"}
/campaigns/:id캠페인 상세
내 소유 캠페인 1건을 반환합니다. 없거나 내 소유가 아니면 똑같이 404 입니다(남의 캠페인이 존재하는지 알려주지 않습니다).
파라미터
| 이름 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
id | 경로 | string(uuid) | 필수 | 캠페인 id(uuid) |
id- 위치
- 경로
- 타입
- string(uuid)
- 필수
- 필수
- 설명
- 캠페인 id(uuid)
요청 예시
curl https://inlink.to/api/v1/campaigns/CAMPAIGN_ID \
-H "Authorization: Bearer $INLINK_API_KEY"응답 예시 (200)
{
"data": {
"id": "3f2b7c9e-5d41-4a8e-9c10-6b2f0a7d1e34",
"campaign_number": 10241,
"title": "글로우 선크림 체험단 모집",
"status": "active",
"category": "beauty",
"platform": "instagram",
"campaign_type": "sns_content",
"delivery_type": "delivery",
"sns_platform": "instagram",
"shopping_channel": null,
"recruits": 10,
"chosen_count": 4,
"applicants_count": 15,
"reward_per_person": 30000,
"cost_estimated": 120000,
"cost_final": 330000,
"paid_at": "2026-07-28T02:12:40+00:00",
"reward_paid_total": 90000,
"product_provided": true,
"request_start_at": "2026-08-01T00:00:00+00:00",
"request_end_at": "2026-08-10T14:59:59+00:00",
"submit_start_at": "2026-08-11T00:00:00+00:00",
"submit_end_at": "2026-08-25T14:59:59+00:00",
"thumbnail_url": null,
"created_at": "2026-07-28T02:11:07+00:00",
"brand": {
"id": "b1a2c3d4-0000-4000-8000-1234567890ab",
"company_name": "글로우코스메틱"
}
}
}상태 코드
| 코드 | 의미 | 응답 본문 |
|---|---|---|
200 | OK | — |
401 | 키 없음·무효·폐기 — { "error": "Invalid or missing API key" } | {"error":"Invalid or missing API key"} |
403 | Pro 자격 없음(강등·만료 포함) | {"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."} |
404 | 캠페인이 없거나 내 소유가 아님(두 경우를 구분해 알려주지 않습니다) | {"error":"Campaign not found"} |
429 | 호출 한도 초과(IP 분당 300 또는 키 분당 60) | {"error":"Rate limit exceeded"} |
500 | 서버 내부 오류(일시 장애) — 재시도 대상 | {"error":"Failed to resolve brand scope"} |
200- 의미
- OK
- 응답 본문
- —
401- 의미
- 키 없음·무효·폐기 — { "error": "Invalid or missing API key" }
- 응답 본문
{"error":"Invalid or missing API key"}
403- 의미
- Pro 자격 없음(강등·만료 포함)
- 응답 본문
{"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."}
404- 의미
- 캠페인이 없거나 내 소유가 아님(두 경우를 구분해 알려주지 않습니다)
- 응답 본문
{"error":"Campaign not found"}
429- 의미
- 호출 한도 초과(IP 분당 300 또는 키 분당 60)
- 응답 본문
{"error":"Rate limit exceeded"}
500- 의미
- 서버 내부 오류(일시 장애) — 재시도 대상
- 응답 본문
{"error":"Failed to resolve brand scope"}
/campaigns/:id/applicants캠페인 지원자 현황(선정·제출)
내 소유 캠페인의 지원(신청) 목록을 최신순으로 반환합니다. 지원자의 개인정보(실명·연락처·배송 주소·지원서 자유기재)는 조회조차 하지 않으며, 인플루언서는 공개 신원(회원번호·닉네임·프로필 이미지)만 붙습니다.
- 선정 인원을 세는 정본 규칙은 is_selected=true 입니다. status 문자열만으로 세면 '선정된 뒤 취소 확정된 사람'(status=accepted 이지만 is_cancelled=true)이 함께 세어져 Campaign.chosen_count 와 어긋납니다.
- 1.1.0-read 까지는 is_selected 가 옛 서비스 이관용 내부 플래그를 그대로 실어, inlink 에서 만든 캠페인에서는 실제 선정자도 false 로 나갔습니다. 1.2.0-read 부터 내부 화면과 같은 규칙으로 계산됩니다.
- ★이미 수집·저장해 두신 is_selected 값이 있다면 이 엔드포인트로 다시 받아 갱신하시길 권장합니다 — 1.2.0-read 이전에 받아 두신 값은 실제 선정 여부와 다를 수 있습니다.
파라미터
| 이름 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
id | 경로 | string(uuid) | 필수 | 캠페인 id(uuid) |
page | 쿼리 | integer | 선택 | 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1) |
limit | 쿼리 | integer | 선택 | 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50) |
status | 쿼리 | string | 선택 | 신청 상태 정확일치 필터. 실측 사용값: pending · accepted · submitted · completed · rejected · cancelled · withdrawn. ★선정자만 뽑을 때 이 필터를 세 번 호출해 합치지 마세요 — 취소 확정자가 accepted 로 남아 섞입니다. 선정 판별은 응답의 is_selected 를 쓰세요(1.2.0-read). |
id- 위치
- 경로
- 타입
- string(uuid)
- 필수
- 필수
- 설명
- 캠페인 id(uuid)
page- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1)
limit- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50)
status- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 신청 상태 정확일치 필터. 실측 사용값: pending · accepted · submitted · completed · rejected · cancelled · withdrawn. ★선정자만 뽑을 때 이 필터를 세 번 호출해 합치지 마세요 — 취소 확정자가 accepted 로 남아 섞입니다. 선정 판별은 응답의 is_selected 를 쓰세요(1.2.0-read).
요청 예시
curl https://inlink.to/api/v1/campaigns/CAMPAIGN_ID/applicants \
-H "Authorization: Bearer $INLINK_API_KEY"응답 예시 (200)
{
"data": [
{
"id": "9c8b7a65-4321-4d0e-9f8a-0b1c2d3e4f50",
"campaign_id": "3f2b7c9e-5d41-4a8e-9c10-6b2f0a7d1e34",
"status": "submitted",
"is_selected": true,
"is_submitted": true,
"is_cancelled": false,
"selected_at": "2026-08-11T01:20:00+00:00",
"submitted_at": "2026-08-19T09:42:13+00:00",
"cancelled_at": null,
"created_at": "2026-08-03T11:05:44+00:00",
"review_url": "https://www.instagram.com/p/EXAMPLE/",
"proof_image_url": null,
"order_number": null,
"purchase_proof_order_number": "20260902-0004871",
"purchase_proof_submitted_at": "2026-08-30T05:12:40+00:00",
"reward_paid_amount": 30000,
"reward_paid_at": "2026-09-02T00:11:03+00:00",
"deposit_amount": 10000,
"deposit_status": "returned",
"deposit_held_at": "2026-08-11T01:20:05+00:00",
"deposit_returned_at": "2026-09-02T00:11:03+00:00",
"deposit_forfeited_at": null,
"influencer": {
"id": "5d6e7f80-1122-4334-8556-77889900aabb",
"username": "312045",
"nickname": "매일뷰티",
"avatar_url": "https://example.supabase.co/storage/v1/object/public/avatars/sample.jpg"
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 15,
"totalPages": 1
}
}상태 코드
| 코드 | 의미 | 응답 본문 |
|---|---|---|
200 | OK | — |
401 | 키 없음·무효·폐기 — { "error": "Invalid or missing API key" } | {"error":"Invalid or missing API key"} |
403 | Pro 자격 없음(강등·만료 포함) | {"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."} |
404 | 캠페인이 없거나 내 소유가 아님(두 경우를 구분해 알려주지 않습니다) | {"error":"Campaign not found"} |
429 | 호출 한도 초과(IP 분당 300 또는 키 분당 60) | {"error":"Rate limit exceeded"} |
500 | 서버 내부 오류(일시 장애) — 재시도 대상 | {"error":"Failed to resolve brand scope"} |
200- 의미
- OK
- 응답 본문
- —
401- 의미
- 키 없음·무효·폐기 — { "error": "Invalid or missing API key" }
- 응답 본문
{"error":"Invalid or missing API key"}
403- 의미
- Pro 자격 없음(강등·만료 포함)
- 응답 본문
{"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."}
404- 의미
- 캠페인이 없거나 내 소유가 아님(두 경우를 구분해 알려주지 않습니다)
- 응답 본문
{"error":"Campaign not found"}
429- 의미
- 호출 한도 초과(IP 분당 300 또는 키 분당 60)
- 응답 본문
{"error":"Rate limit exceeded"}
500- 의미
- 서버 내부 오류(일시 장애) — 재시도 대상
- 응답 본문
{"error":"Failed to resolve brand scope"}
/proposals내가 보낸 제안 목록
내 브랜드가 인플루언서에게 보낸 제안을 최신순으로 반환합니다. 제안 본문(메시지)은 응답에 포함되지 않습니다. 아직 브랜드가 없는 계정은 빈 목록과 함께 pagination.limit 이 0 으로 나갑니다.
파라미터
| 이름 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
page | 쿼리 | integer | 선택 | 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1) |
limit | 쿼리 | integer | 선택 | 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50) |
status | 쿼리 | string | 선택 | 제안 상태 정확일치 필터(예: pending). 생략하면 전체를 반환합니다. |
page- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1)
limit- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50)
status- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 제안 상태 정확일치 필터(예: pending). 생략하면 전체를 반환합니다.
요청 예시
curl https://inlink.to/api/v1/proposals \
-H "Authorization: Bearer $INLINK_API_KEY"응답 예시 (200)
{
"data": [
{
"id": "11223344-5566-4778-8899-aabbccddeeff",
"proposal_number": 3312,
"title": "가을 신제품 협업 제안",
"status": "pending",
"budget": 500000,
"created_at": "2026-08-05T04:00:00+00:00",
"expires_at": "2026-08-12T04:00:00+00:00",
"responded_at": null,
"accepted_at": null,
"rejected_at": null,
"submitted_at": null,
"influencer": {
"id": "5d6e7f80-1122-4334-8556-77889900aabb",
"username": "312045",
"nickname": "매일뷰티",
"avatar_url": null
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 7,
"totalPages": 1
}
}상태 코드
| 코드 | 의미 | 응답 본문 |
|---|---|---|
200 | OK | — |
401 | 키 없음·무효·폐기 — { "error": "Invalid or missing API key" } | {"error":"Invalid or missing API key"} |
403 | Pro 자격 없음(강등·만료 포함) | {"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."} |
429 | 호출 한도 초과(IP 분당 300 또는 키 분당 60) | {"error":"Rate limit exceeded"} |
500 | 서버 내부 오류(일시 장애) — 재시도 대상 | {"error":"Failed to resolve brand scope"} |
200- 의미
- OK
- 응답 본문
- —
401- 의미
- 키 없음·무효·폐기 — { "error": "Invalid or missing API key" }
- 응답 본문
{"error":"Invalid or missing API key"}
403- 의미
- Pro 자격 없음(강등·만료 포함)
- 응답 본문
{"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."}
429- 의미
- 호출 한도 초과(IP 분당 300 또는 키 분당 60)
- 응답 본문
{"error":"Rate limit exceeded"}
500- 의미
- 서버 내부 오류(일시 장애) — 재시도 대상
- 응답 본문
{"error":"Failed to resolve brand scope"}
/influencers공개 인플루언서 디렉터리 검색
닉네임·지역·채널·팔로워로 공개 인플루언서를 검색합니다. 실명·연락처·주소·이메일은 포함되지 않습니다.
- platform·category·min_followers·max_followers 는 페이지를 먼저 가져온 뒤 그 페이지 안에서 걸러냅니다 — 한 페이지에 limit 보다 적게 담길 수 있고, 그렇다고 결과가 끝난 것은 아닙니다.
- 그래서 이 엔드포인트의 pagination.total 은 '조건에 맞는 전체 건수'가 아니라 '이번 페이지에서 필터를 통과한 건수'입니다. totalPages 도 그에 따른 근사치입니다.
- 전부 모아야 한다면 필터 없이 page 를 1씩 올려 빈 배열이 나올 때까지 받은 뒤, 걸러내기는 받는 쪽에서 하는 편이 정확합니다.
파라미터
| 이름 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
page | 쿼리 | integer | 선택 | 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1) |
limit | 쿼리 | integer | 선택 | 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50) |
keyword | 쿼리 | string | 선택 | 검색어 — 닉네임만 검색합니다(실명·아이디는 검색 대상이 아닙니다). |
region | 쿼리 | string | 선택 | 지역 — 프로필의 공개 도시(city) 값과 대조합니다. |
platform | 쿼리 | string | 선택 | 채널 플랫폼 필터(instagram 등). 페이지를 가져온 뒤 걸러내는 방식이라 아래 주의사항을 함께 보세요. |
category | 쿼리 | string | 선택 | 카테고리 slug 또는 한글 이름. 페이지를 가져온 뒤 걸러내는 방식입니다. |
min_followers | 쿼리 | integer | 선택 | 채널 팔로워 합계 하한. 페이지를 가져온 뒤 걸러내는 방식입니다. |
max_followers | 쿼리 | integer | 선택 | 채널 팔로워 합계 상한. 페이지를 가져온 뒤 걸러내는 방식입니다. |
page- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지 번호(1부터). 1 미만을 넣으면 1로 맞춥니다. (기본 1 · 최소 1)
limit- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 페이지당 개수. 1~50 범위로 맞춰지며 50을 넘겨도 50으로 깎입니다. (기본 20 · 최소 1 · 최대 50)
keyword- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 검색어 — 닉네임만 검색합니다(실명·아이디는 검색 대상이 아닙니다).
region- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 지역 — 프로필의 공개 도시(city) 값과 대조합니다.
platform- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 채널 플랫폼 필터(instagram 등). 페이지를 가져온 뒤 걸러내는 방식이라 아래 주의사항을 함께 보세요.
category- 위치
- 쿼리
- 타입
- string
- 필수
- 선택
- 설명
- 카테고리 slug 또는 한글 이름. 페이지를 가져온 뒤 걸러내는 방식입니다.
min_followers- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 채널 팔로워 합계 하한. 페이지를 가져온 뒤 걸러내는 방식입니다.
max_followers- 위치
- 쿼리
- 타입
- integer
- 필수
- 선택
- 설명
- 채널 팔로워 합계 상한. 페이지를 가져온 뒤 걸러내는 방식입니다.
요청 예시
curl https://inlink.to/api/v1/influencers \
-H "Authorization: Bearer $INLINK_API_KEY"응답 예시 (200)
{
"data": [
{
"id": "5d6e7f80-1122-4334-8556-77889900aabb",
"username": "312045",
"nickname": "매일뷰티",
"avatar_url": "https://example.supabase.co/storage/v1/object/public/avatars/sample.jpg",
"bio": "매일 쓰는 것만 리뷰합니다.",
"tagline": "스킨케어 전문",
"city": "서울",
"country": "KR",
"categories": [
"뷰티",
"라이프스타일"
],
"platforms": [
"instagram",
"youtube"
],
"total_followers": 42350,
"channels": [
{
"platform": "instagram",
"handle": "everyday_beauty",
"followers": 38200,
"engagement_rate": 3.4
},
{
"platform": "youtube",
"handle": "everydaybeauty",
"followers": 4150,
"engagement_rate": null
}
]
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1
}
}상태 코드
| 코드 | 의미 | 응답 본문 |
|---|---|---|
200 | OK | — |
401 | 키 없음·무효·폐기 — { "error": "Invalid or missing API key" } | {"error":"Invalid or missing API key"} |
403 | Pro 자격 없음(강등·만료 포함) | {"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."} |
429 | 호출 한도 초과(IP 분당 300 또는 키 분당 60) | {"error":"Rate limit exceeded"} |
500 | 서버 내부 오류(일시 장애) — 재시도 대상 | {"error":"Failed to resolve brand scope"} |
200- 의미
- OK
- 응답 본문
- —
401- 의미
- 키 없음·무효·폐기 — { "error": "Invalid or missing API key" }
- 응답 본문
{"error":"Invalid or missing API key"}
403- 의미
- Pro 자격 없음(강등·만료 포함)
- 응답 본문
{"error":"API 접근 자격이 없습니다. Pro 플랜 구독이 필요합니다."}
429- 의미
- 호출 한도 초과(IP 분당 300 또는 키 분당 60)
- 응답 본문
{"error":"Rate limit exceeded"}
500- 의미
- 서버 내부 오류(일시 장애) — 재시도 대상
- 응답 본문
{"error":"Failed to resolve brand scope"}