바이브코딩 킷 읽기 전용 1단계
AI 코딩 어시스턴트(Claude, Cursor, Copilot 등)에 아래 프롬프트를 붙여넣으면 inlink 데이터를 읽는 코드를 바로 만들 수 있습니다. 프롬프트 내용은 기계판독 스펙에서 자동 생성되므로 항상 최신입니다.
1. 준비물
- API 키 — 개발자 센터 > API 키에서 발급 (Pro 플랜 · 계정당 5개 · 발급 시 1회만 표시)
- Base URL —
https://inlink.to/api/v1 - OpenAPI 3.1.0 스펙 — /api/v1/openapi.json (도구·어시스턴트에 그대로 물릴 수 있는 기계판독 파일)
키는 비밀번호와 같습니다
코드에 하드코딩하지 말고 환경변수(INLINK_API_KEY)로 넣으세요. AI 어시스턴트에게 키 값 자체를 붙여넣지 마세요 — 대화 기록에 남습니다. 노출되면 발급 화면에서 폐기 후 재발급하세요.
2. 이 프롬프트를 복사하세요
마지막 줄의 <원하는 작업> 만 바꾸면 됩니다.
AI 어시스턴트용 프롬프트
너는 inlink Open API(읽기 전용)를 연동하는 코드를 작성한다.
[기본]
- Base URL: https://inlink.to/api/v1
- 인증: 모든 요청 헤더에 Authorization: Bearer <INLINK_API_KEY>
- API 키는 환경변수 INLINK_API_KEY 로 읽고, 코드에 하드코딩하지 말 것.
- 기계판독 스펙(OpenAPI 3.1.0): https://inlink.to/api/v1/openapi.json 를 먼저 가져와 스키마를 신뢰할 것.
[존재하는 엔드포인트 — 이 5개가 전부다]
- GET /campaigns?page=&limit=&status= → 내 캠페인 목록
- GET /campaigns/:id → 캠페인 상세
- GET /campaigns/:id/applicants?page=&limit=&status= → 캠페인 지원자 현황(선정·제출)
- GET /proposals?page=&limit=&status= → 내가 보낸 제안 목록
- GET /influencers?page=&limit=&keyword=®ion=&platform=&category=&min_followers=&max_followers= → 공개 인플루언서 디렉터리 검색
- 목록 응답은 { data: [...], pagination: { page, limit, total, totalPages } } 형태. 상세 응답은 { data: {...} }.
[규칙]
- 개인정보(실명·연락처·주소·이메일)는 어떤 응답에도 없다. 지원자·제안에 임베드된 influencer 객체는 id·username·nickname·avatar_url 만 있다.
단 GET /influencers 의 항목은 이보다 넓다(id·username·nickname·avatar_url·bio·tagline·city·country·categories·platforms·total_followers·channels). 두 모양을 같은 타입으로 뭉뚱그리지 말 것.
- 호출 한도는 키당 분당 60회, IP당 분당 300회. 60초 고정창이며 429 면 지수 백오프로 재시도.
- 오류 응답은 항상 { "error": "문자열 한 줄" } 이다. 본문 파싱으로 분기하지 말고 HTTP 상태 코드로 분기하라.
- 페이지네이션은 pagination.totalPages 까지 순회. 단 GET /influencers 의 total 은 이번 페이지 기준 근사치이므로, 빈 배열이 나올 때까지 page 를 올리는 방식으로 순회하라.
- 쓰기는 1단계에서 막혀 있다(POST /campaigns(403), POST /messages(403)). 읽기만 구현.
- 여기 적히지 않은 엔드포인트는 존재하지 않는다. 없는 경로를 지어내지 말 것.
위 규칙으로 <원하는 작업: 예) 오늘 마감인 캠페인의 미제출 지원자 목록을 CSV로 내보내는 스크립트>를 작성하라.3. 연결 확인 (키 없이 401)
cURL
curl -i https://inlink.to/api/v1/campaigns -H "Authorization: Bearer inlink_0000000000000000000000000000000000000000000000000000000000000000"
# → HTTP 401
# {"error":"Invalid or missing API key"}4. 바로 실행하는 예시
cURL · 엔드포인트 5개 전부
# 1) 내 캠페인 목록
curl https://inlink.to/api/v1/campaigns \
-H "Authorization: Bearer $INLINK_API_KEY"
# 2) 캠페인 상세
curl https://inlink.to/api/v1/campaigns/CAMPAIGN_ID \
-H "Authorization: Bearer $INLINK_API_KEY"
# 3) 캠페인 지원자 현황(선정·제출)
curl https://inlink.to/api/v1/campaigns/CAMPAIGN_ID/applicants \
-H "Authorization: Bearer $INLINK_API_KEY"
# 4) 내가 보낸 제안 목록
curl https://inlink.to/api/v1/proposals \
-H "Authorization: Bearer $INLINK_API_KEY"
# 5) 공개 인플루언서 디렉터리 검색
curl https://inlink.to/api/v1/influencers \
-H "Authorization: Bearer $INLINK_API_KEY"Node.js (fetch)
const BASE = "https://inlink.to/api/v1";
const KEY = process.env.INLINK_API_KEY;
async function inlink(path) {
const res = await fetch(BASE + path, {
headers: { Authorization: "Bearer " + KEY },
});
if (res.status === 429) throw new Error("rate limited — 잠시 후 재시도");
if (!res.ok) throw new Error("HTTP " + res.status);
return res.json();
}
// 예: 내 캠페인 목록 전체를 페이지네이션으로 순회
async function all() {
const out = [];
let page = 1, totalPages = 1;
do {
const { data, pagination } = await inlink("/campaigns?page=" + page + "&limit=50");
out.push(...data);
totalPages = pagination.totalPages;
page++;
} while (page <= totalPages);
return out;
}5. 응답에 없는 것(개인정보 차단)
개인정보는 애초에 조회하지 않습니다
실명 · 휴대폰 번호 · 이메일 · 배송 주소 · 송장 번호 · 지원 시 작성한 자기소개·기획안 · 브랜드 내부 메모는 어떤 응답에도 포함되지 않습니다. 배송·정산처럼 개인정보가 필요한 작업은 이 API의 대상이 아닙니다.
지원자·제안의 influencer 객체는 id, username, nickname, avatar_url 만 나갑니다. 인플루언서 디렉터리 검색은 여기에 더해 bio, tagline, city, country, categories, platforms, total_followers, channels 까지 반환합니다(‘인플루언서 찾기’ 화면과 같은 공개 정보).
응답은 필요한 칸만 골라 담는 화이트리스트 방식으로 조립합니다 — 데이터베이스에 칸이 새로 생겨도 그 값이 저절로 응답에 실리는 일이 없습니다.
6. 한도·에러
- 호출 한도: 키당 분당 60회 · IP당 분당 300회. 초과 시
429→ 지수 백오프로 재시도. 401Authorization 헤더가 없거나, 키가 폐기·만료됐거나, 값에 오타가 있는 경우입니다.403키는 유효하지만 소유 계정이 지금 Pro 가 아닌 경우입니다(플랜 강등·구독 만료 포함). 매 요청 다시 확인합니다.404캠페인이 없거나, 있어도 내 브랜드 소유가 아닌 경우입니다. 남의 캠페인이 존재하는지 알려주지 않으려고 두 경우를 같은 404 로 응답합니다.429IP 분당 300회 또는 키 분당 60회를 넘긴 경우입니다. 어느 쪽이 걸렸는지는 응답으로 구분되지 않습니다.- 오류 본문은 항상
{ "error": "..." }한 줄 — 분기는 상태 코드로 하세요.
다음 단계
API Reference · 인증 · 에러 코드 · OpenAPI 스펙(JSON)