API 레시피
사이트, 에이전트, 지식, 게시, 보고의 전체 워크플로를 자동화합니다.
사이트, 에이전트, 지식, 게시, 보고의 전체 워크플로를 자동화합니다.
이 레시피는 공개 SDK가 없어도 작동하도록 REST를 직접 사용합니다. 서버 환경에 MAF_API_KEY를 설정하고 이전 단계에서 반환된 ID로 대체하세요.
레시피: 근거가 있는 에이전트 만들고 게시하기#
sites:write, agents:write, knowledge:write 범위가 있는 API 키 하나를 만드세요. 자동화가 사이트를 나열하거나 검증한다면 sites:read도 추가합니다.
1. 사이트 만들기#
curl --fail-with-body https://makeagent.fast/api/v1/sites \
-X POST \
-H "Authorization: Bearer $MAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-acme-site-2026-01" \
-d '{
"title": "Acme support",
"slug": "acme-support",
"type": "business",
"template": "minimal",
"content": {
"headline": "Ask Acme support",
"subheadline": "Answers grounded in our current policies.",
"about": "Acme support answers product and account questions."
},
"persona_mode": "assistant",
"languages": ["en"]
}'성공하면 201 Created를 반환하고 data 아래에 사이트가 있으며 Location 헤더에 정식 리소스 경로가 포함됩니다. data.id를 SITE_ID로 저장하세요.
2. 에이전트 및 임베드 정책 설정#
curl --fail-with-body "https://makeagent.fast/api/v1/sites/$SITE_ID/agent" \
-X PATCH \
-H "Authorization: Bearer $MAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-acme-agent-2026-01" \
-d '{
"display_name": "Acme guide",
"persona_mode": "assistant",
"instructions": "Answer only from confirmed Acme sources. If the answer is missing, say that a teammate will follow up.",
"languages": ["en"],
"embed_enabled": true,
"allowed_origins": ["https://www.acme.example", "https://staging.acme.example"]
}'허용 오리진은 스킴, 호스트 이름, 선택적 포트로 구성된 정확한 오리진입니다. 경로나 뒤쪽 와일드카드를 넣지 마세요.
3. 텍스트 지식 소스 추가#
curl --fail-with-body "https://makeagent.fast/api/v1/sites/$SITE_ID/knowledge" \
-X POST \
-H "Authorization: Bearer $MAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-acme-returns-2026-01" \
-d '{
"name": "Returns policy 2026-01",
"text": "Customers may request a return within 30 days of delivery. Contact support before sending an item back."
}'공개 API는 현재 5~200,000자의 붙여넣은 텍스트를 수집합니다. URL 크롤링, 업로드, YouTube, 팟캐스트, 피드 소스는 대시보드를 사용하세요.
4. 구조화된 FAQ 추가#
curl --fail-with-body "https://makeagent.fast/api/v1/sites/$SITE_ID/faqs" \
-X POST \
-H "Authorization: Bearer $MAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-acme-faq-returns-2026-01" \
-d '{
"question": "How long do I have to return an order?",
"answer": "You may request a return within 30 days of delivery.",
"approved": true
}'5. 게시#
curl --fail-with-body "https://makeagent.fast/api/v1/sites/$SITE_ID/publish" \
-X POST \
-H "Authorization: Bearer $MAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-acme-publish-2026-01" \
-d '{"published": true}'응답에는 {"data":{"id":"...","status":"published"}}가 포함되어야 합니다. 실제 임베드를 열고 소스에 답이 있는 질문을 해보세요. 게시는 에이전트 상태 변경만 증명하며 소스 품질이나 임베드 오리인이 정확하다는 뜻은 아닙니다.
레시피: 리드를 안전하게 페이지네이션하기#
leads:read 범위의 키를 사용하세요. next_cursor를 불투명한 값으로 취급하고 URL 인코딩합니다.
const base = `https://makeagent.fast/api/v1/sites/${siteId}/leads`;
let cursor: string | null = null;
do {
const url = new URL(base);
url.searchParams.set("limit", "100");
if (cursor) url.searchParams.set("cursor", cursor);
const response = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.MAF_API_KEY}` },
});
if (!response.ok) throw await response.json();
const page = await response.json();
for (const lead of page.data) await exportLead(lead);
cursor = page.next_cursor;
} while (cursor);커서를 디코딩, 수정, 정렬하거나 다른 컬렉션에 재사용하지 마세요.
레시피: 사고 중 임베드 비활성화#
agents:write를 사용하고 네트워크 재시도에서는 같은 멱등성 키를 유지하세요.
curl --fail-with-body "https://makeagent.fast/api/v1/sites/$SITE_ID/agent" \
-X PATCH \
-H "Authorization: Bearer $MAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: incident-2026-07-embed-off" \
-d '{"embed_enabled": false}'응답 성공 후 허용된 호스트에서 런처가 더 이상 초기화되지 않는지 확인하세요. 오리진, 콘텐츠 또는 자격 증명 문제를 해결한 뒤 새 사고 해결 키로 다시 활성화합니다.
프로덕션 체크리스트#
- 서비스와 환경마다 별도 키를 사용합니다.
- 변경 요청을 보내기 전에 리소스 ID와 멱등성 키를 저장합니다.
- 연결 및 응답 시간 제한을 설정합니다.
Retry-After를 지키고 재시도 횟수를 제한합니다.- 시크릿이나 개인정보 없이 작업 이름, HTTP 상태, 요청 ID를 기록합니다.
- 프로덕션 쓰기 범위를 부여하기 전에 비프로덕션 사이트에서 테스트합니다.