{"openapi":"3.1.0","info":{"title":"AITF API","description":"\n## Agent-Ready Business Execution API\n\nThe API that AI agents call to get real work done.\n17 API products, 48 endpoints.\n\n### Authentication\nAll `/v1/*` endpoints require `X-API-KEY` header.\n","version":"3.2.0"},"servers":[{"url":"https://api.aitf.com","description":"Production"}],"paths":{"/v1/ads/generate":{"post":{"tags":["Ad Generator"],"summary":"광고 문구 + 숏폼 훅 생성","description":"상품 정보로 광고 카피, TikTok 훅, 숏폼 대본, 이미지 프롬프트를 생성합니다.","operationId":"generate_ads_v1_ads_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/register":{"post":{"tags":["Authentication"],"summary":"Register and get an API key instantly","description":"Register with your email to get an API key immediately.\nNo credit card required. 1,000 free API calls included.\n\n**Speed to first call: under 30 seconds.**","operationId":"register_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/verify":{"post":{"tags":["Authentication"],"summary":"Verify an API key","description":"Check if an API key is valid and return usage info.","operationId":"verify_v1_auth_verify_post","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/usage":{"get":{"tags":["Authentication"],"summary":"Get usage for current billing period","description":"Returns current usage statistics and remaining quota.","operationId":"usage_check_v1_auth_usage_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/checkout":{"post":{"tags":["Billing"],"summary":"Create a Stripe Checkout session","description":"Create a Stripe Checkout session for plan upgrade.\nReturns a checkout URL to redirect the user to.","operationId":"create_checkout_v1_billing_checkout_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/webhook":{"post":{"tags":["Billing"],"summary":"Stripe webhook receiver","description":"Receives Stripe webhook events.\nHandles: checkout.session.completed, customer.subscription.updated/deleted","operationId":"stripe_webhook_v1_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/billing/subscription":{"get":{"tags":["Billing"],"summary":"Get current subscription status","description":"Check the current subscription plan and limits.","operationId":"get_subscription_v1_billing_subscription_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/portal":{"post":{"tags":["Billing"],"summary":"Get Stripe Customer Portal link","description":"Generate a link to the Stripe Customer Portal for managing subscription.","operationId":"customer_portal_v1_billing_portal_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/blog/generate":{"post":{"tags":["Blog Publisher"],"summary":"Generate a SEO/AEO blog post","description":"Generate a full SEO-optimized blog post from a keyword.","operationId":"generate_blog_v1_blog_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__blog_publisher_v1__BlogGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/blog/batch":{"post":{"tags":["Blog Publisher"],"summary":"Batch generate blog posts","description":"Generate multiple blog posts at once (max 5).","operationId":"batch_blogs_v1_blog_batch_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/notify":{"post":{"tags":["Booking Engine"],"summary":"예약 알림 메시지 생성 (P21)","operationId":"booking_notify_v1_booking_notify_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/parse":{"post":{"tags":["Booking Engine"],"summary":"자연어 → 예약 데이터 파서 (P18)","operationId":"booking_parse_v1_booking_parse_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/cs":{"post":{"tags":["Booking Engine"],"summary":"CS 문의 자동응답 + 처리 방향 (P22)","operationId":"booking_cs_v1_booking_cs_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/coupon":{"post":{"tags":["Booking Engine"],"summary":"고객 세그먼트 → 쿠폰 전략 (P20)","operationId":"booking_coupon_v1_booking_coupon_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/report":{"post":{"tags":["Booking Engine"],"summary":"예약 데이터 → AI 경영 리포트 (P19)","operationId":"booking_report_v1_booking_report_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__booking_v1__ReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/validate-coupon":{"post":{"tags":["Booking Engine"],"summary":"쿠폰 유효성 검증 + 할인 계산 (정글부킹 룰 포팅)","operationId":"booking_validate_coupon_v1_booking_validate_coupon_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateCouponRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/calc-refund":{"post":{"tags":["Booking Engine"],"summary":"취소 환불 금액 계산 (정글부킹 정책 포팅)","operationId":"booking_calc_refund_v1_booking_calc_refund_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalcRefundRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/calc-discount":{"post":{"tags":["Booking Engine"],"summary":"쿠폰 할인 금액 계산","operationId":"booking_calc_discount_v1_booking_calc_discount_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalcDiscountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/store":{"post":{"tags":["Booking Engine"],"summary":"매장 등록 (Phase 2)","operationId":"store_create_v1_booking_store_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreateReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/store/{store_id}":{"get":{"tags":["Booking Engine"],"summary":"매장 조회","operationId":"store_get_v1_booking_store__store_id__get","parameters":[{"name":"store_id","in":"path","required":true,"schema":{"type":"string","title":"Store Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Booking Engine"],"summary":"매장 수정","operationId":"store_update_v1_booking_store__store_id__patch","parameters":[{"name":"store_id","in":"path","required":true,"schema":{"type":"string","title":"Store Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorePatchReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/item":{"post":{"tags":["Booking Engine"],"summary":"아이템 등록","operationId":"item_create_v1_booking_item_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemCreateReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/items":{"get":{"tags":["Booking Engine"],"summary":"아이템 목록","operationId":"items_list_v1_booking_items_get","parameters":[{"name":"store_id","in":"query","required":true,"schema":{"type":"string","title":"Store Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/item/{item_id}":{"patch":{"tags":["Booking Engine"],"summary":"아이템 수정","operationId":"item_update_v1_booking_item__item_id__patch","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemPatchReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/slots":{"post":{"tags":["Booking Engine"],"summary":"예약 가능 슬롯 조회 (겹침 알고리즘)","operationId":"slots_query_v1_booking_slots_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotsReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/create":{"post":{"tags":["Booking Engine"],"summary":"예약 생성 (Phase 2)","operationId":"booking_create_v1_booking_create_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingCreateReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/{booking_id}":{"get":{"tags":["Booking Engine"],"summary":"예약 단건 조회","operationId":"booking_get_v1_booking__booking_id__get","parameters":[{"name":"booking_id","in":"path","required":true,"schema":{"type":"string","title":"Booking Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/cancel":{"post":{"tags":["Booking Engine"],"summary":"예약 취소 + 환불 계산","operationId":"booking_cancel_v1_booking_cancel_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingCancelReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/{booking_id}/status":{"patch":{"tags":["Booking Engine"],"summary":"예약 상태 변경","operationId":"booking_status_update_v1_booking__booking_id__status_patch","parameters":[{"name":"booking_id","in":"path","required":true,"schema":{"type":"string","title":"Booking Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingStatusReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/list":{"post":{"tags":["Booking Engine"],"summary":"예약 목록 조회","operationId":"booking_list_view_v1_booking_list_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingListReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/coupon/create":{"post":{"tags":["Booking Engine"],"summary":"쿠폰 생성 (Phase 2)","operationId":"coupon_create_v1_booking_coupon_create_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponCreateReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/booking/coupon/check":{"post":{"tags":["Booking Engine"],"summary":"쿠폰 코드 검증 + 할인 계산","operationId":"coupon_check_v1_booking_coupon_check_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponCheckReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ceo/advise":{"post":{"tags":["CEO Advisory"],"summary":"CEO 자문 — 협상/문서/IR/경쟁사/의사결정","description":"Claude Opus 4.7 기반 CEO 전략 자문 API.\n\n**types:**\n- `negotiation` — 협상 전략 (BATNA·시나리오·오프닝 멘트)\n- `document` — 계약서/투자서 위험 조항 분석\n- `ir` — 투자자 Q&A 대비 (질문 15개 + 모범 답변)\n- `competitor` — 경쟁사 분석 + 포지셔닝\n- `decision` — 사업 의사결정 자문\n\n**주의:** Opus 4.7 모델 사용 — 일반 엔드포인트 대비 5배 비용 소비.","operationId":"advise_v1_ceo_advise_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CEOAdviseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ceo/types":{"get":{"tags":["CEO Advisory"],"summary":"사용 가능한 자문 타입 목록","description":"CEO 자문 API에서 사용 가능한 type 값과 설명을 반환합니다.","operationId":"list_types_v1_ceo_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/ceo/usage":{"get":{"tags":["CEO Advisory"],"summary":"CEO 자문 사용량 통계","description":"현재 청구 기간의 CEO 자문 사용량을 반환합니다.","operationId":"ceo_usage_v1_ceo_usage_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chatbot/message":{"post":{"tags":["Chatbot"],"summary":"Custom chatbot conversation","description":"Instant custom CS chatbot. Inject your system_prompt with company info,\npersona, and rules — get a branded chatbot response immediately.","operationId":"chatbot_message_v1_chatbot_message_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatbotMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chatbot/knowledge":{"post":{"tags":["Chatbot"],"summary":"Knowledge-base Q&A","description":"Answer questions using a provided knowledge base.\nGreat for FAQ bots, product support, documentation Q&A.","operationId":"knowledge_qa_v1_chatbot_knowledge_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeQARequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/comments/analyze":{"post":{"tags":["Comment Shield"],"summary":"Analyze comments - sentiment, intent, priority","description":"Analyze up to 50 comments at once. Returns sentiment, intent, priority,\ntopics, and emotion for each comment.","operationId":"analyze_v1_comments_analyze_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAnalyzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/comments/reply":{"post":{"tags":["Comment Shield"],"summary":"Generate a reply draft for a comment","description":"Generate a brand-voice aligned reply to a single comment.","operationId":"reply_v1_comments_reply_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/comments/batch":{"post":{"tags":["Comment Shield"],"summary":"Batch analyze + generate replies for up to 50 comments","description":"Analyze and optionally generate replies for up to 50 comments in one call.\nIdeal for daily comment management workflows.","operationId":"batch_v1_comments_batch_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCommentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/content/generate":{"post":{"tags":["Content Engine"],"summary":"Generate content — blog, SNS, email, shorts, or all","description":"Generate content in any format. The psychology and style engines are applied automatically.\n\n**Supported types:** blog, sns, email, newsletter, shorts_script, youtube_long, all\n\n**Supported languages:** en, ko, ja, zh, es, fr, de","operationId":"generate_v1_content_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/content/batch":{"post":{"tags":["Content Engine"],"summary":"Batch generate up to 10 content pieces","description":"Generate multiple content pieces in one call. Max 10 items per batch.","operationId":"batch_generate_v1_content_batch_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/content/jobs/{job_id}":{"get":{"tags":["Content Engine"],"summary":"Check job status","description":"Retrieve the status and output of a content generation job.","operationId":"get_job_v1_content_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/content/usage":{"get":{"tags":["Content Engine"],"summary":"Get current month usage statistics","description":"Returns usage statistics for the current billing period.","operationId":"get_usage_v1_content_usage_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/email/sequence":{"post":{"tags":["Email Sequence"],"summary":"Generate a multi-day email nurture sequence","description":"Generate a complete email nurture sequence with psychology-driven copy.","operationId":"generate_sequence_v1_email_sequence_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__email_v1__SequenceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/email/single":{"post":{"tags":["Email Sequence"],"summary":"Generate a single marketing email","description":"Generate a single marketing email.","operationId":"generate_single_v1_email_single_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/email/subject":{"post":{"tags":["Email Sequence"],"summary":"Generate optimized email subject lines","description":"Generate A/B testable email subject lines.","operationId":"generate_subjects_v1_email_subject_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectLineRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/listings/generate":{"post":{"tags":["Global Listing"],"summary":"상품 등록 콘텐츠 생성","description":"한국 상품 정보를 글로벌 판매용 리스팅으로 변환합니다.","operationId":"generate_listing_v1_listings_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/listings/localize":{"post":{"tags":["Global Listing"],"summary":"현지화 변환","description":"한국어 상품 설명을 목표 언어/시장에 맞게 현지화합니다.","operationId":"localize_text_v1_listings_localize_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalizeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/monitor/check":{"post":{"tags":["Usage Monitor"],"summary":"Instant usage check","description":"Check your current API usage instantly. No login required.\nReturns: calls used, remaining, cost, per-product breakdown, daily trend.","operationId":"check_usage_v1_monitor_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/monitor/alert":{"post":{"tags":["Usage Monitor"],"summary":"Set usage threshold alert","description":"Set an alert when your usage reaches a threshold (e.g., 80% of limit).\nAlert is stored and checked on each API call.","operationId":"set_alert_v1_monitor_alert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/monitor/history":{"get":{"tags":["Usage Monitor"],"summary":"Usage history (daily/weekly/monthly)","description":"Get historical usage data.\nperiod: daily | weekly | monthly\nmonths: how many months back (1-6)","operationId":"usage_history_v1_monitor_history_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Api Key"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"daily","title":"Period"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/monitor/forecast":{"post":{"tags":["Usage Monitor"],"summary":"AI cost forecast for current month","description":"Predict your API costs for the rest of the month based on current usage patterns.","operationId":"forecast_cost_v1_monitor_forecast_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForecastRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/compose":{"post":{"tags":["AI 알림 에이전트"],"summary":"AI 알림 메시지 초안 생성 (A/B 2종)","operationId":"compose_message_v1_notify_compose_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComposeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/send/sms":{"post":{"tags":["AI 알림 에이전트"],"summary":"SMS 단건 발송 (알리고)","operationId":"send_sms_v1_notify_send_sms_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SMSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/sequence":{"post":{"tags":["AI 알림 에이전트"],"summary":"알림 시퀀스 생성 및 저장","operationId":"create_sequence_v1_notify_sequence_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__notify_v1__SequenceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/history":{"get":{"tags":["AI 알림 에이전트"],"summary":"발송 이력 조회 (본인 이력만)","operationId":"get_history_v1_notify_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"조회 건수","default":50,"title":"Limit"},"description":"조회 건수"},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/campaign":{"post":{"tags":["AI 알림 에이전트"],"summary":"대량 SMS 캠페인 발송 (최대 500명)","operationId":"send_campaign_v1_notify_campaign_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/slack":{"post":{"tags":["AI 알림 에이전트"],"summary":"Slack Webhook 알림 발송","operationId":"notify_slack_v1_notify_slack_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/discord":{"post":{"tags":["AI 알림 에이전트"],"summary":"Discord Webhook 알림 발송","operationId":"notify_discord_v1_notify_discord_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/webhook":{"post":{"tags":["AI 알림 에이전트"],"summary":"Generic Webhook POST (n8n/Zapier/Make 등)","operationId":"notify_webhook_v1_notify_webhook_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/telegram":{"post":{"tags":["AI 알림 에이전트"],"summary":"Telegram Bot 메시지 발송","operationId":"notify_telegram_v1_notify_telegram_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelegramRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/reports/generate":{"post":{"tags":["Ops Report"],"summary":"Generate a business report from raw data","description":"Generate professional daily/weekly/monthly reports from raw data.\nIncludes analysis, highlights, concerns, and actionable recommendations.","operationId":"generate_report_v1_reports_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__reports_v1__ReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/reports/summary":{"post":{"tags":["Ops Report"],"summary":"Quick KPI summary","description":"Generate a quick KPI summary suitable for Slack/email notifications.","operationId":"quick_summary_v1_reports_summary_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummaryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/security/audit":{"post":{"tags":["Security Guard"],"summary":"Security audit on code/config","description":"Run a KISA + OWASP based security audit on code or configuration.\nReturns findings with severity, category, and recommendations.","operationId":"security_audit_v1_security_audit_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/security/prompt":{"post":{"tags":["Security Guard"],"summary":"Check text for prompt injection","description":"Scan text for known prompt injection patterns.\nReturns detected patterns, risk level, and sanitized output.","operationId":"check_prompt_injection_v1_security_prompt_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/security/checklist":{"get":{"tags":["Security Guard"],"summary":"Get security checklist","description":"Returns the full OWASP + KISA security checklist\norganized by category with severity levels.","operationId":"get_checklist_v1_security_checklist_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/system/github":{"get":{"tags":["System Monitor"],"summary":"Github Status","description":"GitHub aitf-api 레포 상태:\n- 최근 커밋 5개\n- 열린 PR 목록\n- 최근 Actions 실행 결과","operationId":"github_status_v1_system_github_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/system/deploy":{"get":{"tags":["System Monitor"],"summary":"Deploy Status","description":"AITF API (Render) 배포 상태 + 응답시간 확인.","operationId":"deploy_status_v1_system_deploy_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/system/health":{"get":{"tags":["System Monitor"],"summary":"Full System Health","description":"전체 시스템 헬스 요약 (GitHub + Render + AITF).","operationId":"full_system_health_v1_system_health_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/system/dashboard":{"get":{"tags":["System Monitor"],"summary":"Super Admin Dashboard","description":"슈퍼관리자 대시보드 — 1번 호출로 전체 운영 현황 반환.\nYouTube + GitHub + Render + AITF API 통합.","operationId":"super_admin_dashboard_v1_system_dashboard_get","parameters":[{"name":"channel_id","in":"query","required":false,"schema":{"type":"string","default":"UCCqi9m0XPHLPxvReWfJhJig","title":"Channel Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/system/customers":{"get":{"tags":["System Monitor"],"summary":"All Customers","description":"슈퍼관리자 전체 고객 현황 — 모든 API 고객의 이번 달 사용량 통계.","operationId":"all_customers_v1_system_customers_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generate/thumbnail":{"post":{"tags":["🎨 Thumbnail"],"summary":"Generate Thumbnail","description":"Pillow 서버사이드 썸네일 생성 — 한글 폰트 완벽 지원 (1280×720 PNG)\n\n- **line1**: 흰색 대형 텍스트 (1줄)\n- **line2**: 강조색 대형 텍스트 (2줄)\n- **sub**: 소형 서브타이틀\n- **badge**: 좌상단 배지 (예: AI사냥꾼 EP.01)\n- **style**: dark | news | blue | forest | fire | minimal\n- **bg_b64**: 배경 이미지 base64 (없으면 그라디언트)","operationId":"generate_thumbnail_generate_thumbnail_post","parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThumbnailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generate/thumbnail-bg":{"post":{"tags":["🎨 Thumbnail"],"summary":"Generate Thumbnail Bg","description":"영상 주제 → Gemini Imagen 3 → base64 배경 이미지","operationId":"generate_thumbnail_bg_generate_thumbnail_bg_post","parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThumbnailBgRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trends/scan":{"post":{"tags":["Trend Radar"],"summary":"Scan real-time trends for a topic","description":"Scan YouTube, news, and social media for trending topics and content gaps.","operationId":"scan_trends_v1_trends_scan_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trends/keywords":{"post":{"tags":["Trend Radar"],"summary":"Extract trending keywords for SEO/content","description":"Extract high-value keywords for SEO, content planning, or ad targeting.","operationId":"extract_keywords_v1_trends_keywords_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/script":{"post":{"tags":["Video Script"],"summary":"Generate a video script with hook psychology","description":"Generate a complete video script with 3-second hook psychology applied.","operationId":"generate_script_v1_video_script_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__video_v1__ScriptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/hooks":{"post":{"tags":["Video Script"],"summary":"Generate viral hook lines","description":"Generate multiple hook lines using 3-second psychology.","operationId":"generate_hooks_v1_video_hooks_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HookRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/templates":{"get":{"tags":["Video Script"],"summary":"List available video templates","description":"List all available video script templates.","operationId":"list_templates_v1_video_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/voice/generate":{"post":{"tags":["Voice TTS"],"summary":"Convert text to speech (MP3)","description":"Generate speech from text. Returns base64-encoded MP3.","operationId":"generate_voice_v1_voice_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voice/script":{"post":{"tags":["Voice TTS"],"summary":"Batch TTS for script scenes","description":"Generate TTS for multiple script scenes at once. Ideal for video production.","operationId":"generate_script_v1_voice_script_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__voice_v1__ScriptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voice/voices":{"get":{"tags":["Voice TTS"],"summary":"List available voice presets","description":"List all available voice presets.","operationId":"list_voices_v1_voice_voices_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/register":{"post":{"tags":["Webhooks"],"summary":"Register a webhook endpoint","operationId":"register_webhook_v1_webhooks_register_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRegisterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/list":{"get":{"tags":["Webhooks"],"summary":"List registered webhooks","operationId":"list_webhooks_v1_webhooks_list_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{webhook_id}":{"delete":{"tags":["Webhooks"],"summary":"Delete a webhook","description":"Remove a registered webhook.","operationId":"delete_webhook_v1_webhooks__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/test":{"post":{"tags":["Webhooks"],"summary":"Send a test webhook event","operationId":"test_webhook_v1_webhooks_test_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow/run":{"post":{"tags":["Workflow Engine"],"summary":"Execute a multi-step workflow","description":"Execute a multi-step workflow. Each step can be any AITF API action.\nSteps requiring approval will pause and wait for human confirmation.\n\nState flow: new -> validated -> executing -> [awaiting_approval] -> done/failed","operationId":"run_workflow_v1_workflow_run_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow/jobs":{"get":{"tags":["Workflow Engine"],"summary":"List all workflow jobs","description":"List all workflow jobs for the current API key.","operationId":"list_jobs_v1_workflow_jobs_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow/approve":{"post":{"tags":["Workflow Engine"],"summary":"Approve or reject a pending workflow step","description":"Approve a workflow step that requires human confirmation.","operationId":"approve_job_v1_workflow_approve_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/youtube/channel-stats":{"get":{"tags":["YouTube Manager"],"summary":"Channel Stats","description":"채널 구독자·총조회수 + 최근 영상 성과 한 번에 조회.\n3번의 YouTube API 호출 (channels → playlistItems → videos).","operationId":"channel_stats_v1_youtube_channel_stats_get","parameters":[{"name":"channel_id","in":"query","required":false,"schema":{"type":"string","description":"YouTube 채널 ID","default":"UCCqi9m0XPHLPxvReWfJhJig","title":"Channel Id"},"description":"YouTube 채널 ID"},{"name":"max_videos","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"최근 영상 개수","default":10,"title":"Max Videos"},"description":"최근 영상 개수"},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/youtube/videos":{"get":{"tags":["YouTube Manager"],"summary":"Recent Videos","description":"최근 영상 목록만 빠르게 반환 (channel-stats의 경량 버전).","operationId":"recent_videos_v1_youtube_videos_get","parameters":[{"name":"channel_id","in":"query","required":false,"schema":{"type":"string","default":"UCCqi9m0XPHLPxvReWfJhJig","title":"Channel Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":5,"title":"Limit"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/youtube/comments/pending":{"get":{"tags":["YouTube Manager"],"summary":"Pending Comments","description":"미답글(reply 0개) 댓글 목록 반환. 자동 답글 대상 감지용.","operationId":"pending_comments_v1_youtube_comments_pending_get","parameters":[{"name":"video_id","in":"query","required":true,"schema":{"type":"string","description":"YouTube 영상 ID","title":"Video Id"},"description":"YouTube 영상 ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/youtube/comments/reply/draft":{"post":{"tags":["YouTube Manager"],"summary":"Draft Reply","description":"Claude로 댓글 답글 초안 생성 (실제 게시 아님 — 검토 후 수동 게시).","operationId":"draft_reply_v1_youtube_comments_reply_draft_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/psych/analyze":{"post":{"tags":["세일즈 심리 분석 API"],"summary":"텍스트 설득력 분석","operationId":"analyze_psych_analyze_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeTextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/psych/solution":{"post":{"tags":["세일즈 심리 분석 API"],"summary":"솔루션 판매 가능성 진단","operationId":"solution_psych_solution_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckSolutionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/psych/triggers":{"post":{"tags":["세일즈 심리 분석 API"],"summary":"심리 트리거 문구 생성","operationId":"triggers_psych_triggers_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTriggersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/psych/coach":{"post":{"tags":["세일즈 심리 분석 API"],"summary":"AI 세일즈 코치 (대화형)","operationId":"coach_psych_coach_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/message":{"post":{"tags":["AITF 챗봇"],"summary":"AITF 챗봇 메시지","operationId":"chat_message_chat_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/custom":{"post":{"tags":["AITF 챗봇"],"summary":"커스텀 챗봇 (API 키 필요)","description":"API 키 보유 고객이 **자사 챗봇**을 구축하는 엔드포인트.\n\n- `system_prompt`에 회사 소개·페르소나·답변 원칙을 넣으면 완성\n- API 키만 바꾸면 고객사별 독립 챗봇 운영 가능\n- 월 사용량은 `chat_custom` 버킷으로 별도 추적","operationId":"chat_custom_chat_custom_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/generate":{"post":{"tags":["블로그 자동화 API"],"summary":"키워드 → SEO 블로그 콘텐츠 생성","description":"키워드를 입력하면 구글 뉴스 크롤 → Claude Haiku로 SEO+AEO 블로그 콘텐츠를 생성합니다.\n\n- **include_html=false** (기본): JSON 구조만 반환 (seo_title, sections, faq 등)\n- **include_html=true**: JSON + 완성 HTML 문자열도 반환 (랜딩페이지에 바로 저장 가능)","operationId":"generate_blog_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__schemas__BlogGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/news":{"post":{"tags":["블로그 자동화 API"],"summary":"키워드 → 최신 뉴스 수집","description":"구글 뉴스 RSS에서 키워드 관련 최신 뉴스를 수집합니다.","operationId":"news_blog_news_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogNewsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diagnose/api-check":{"get":{"tags":["반복업무 진단봇"],"summary":"Anthropic API 연결 상태 확인 (진단용)","description":"ANTHROPIC_API_KEY 설정 여부와 haiku/sonnet 모델 ID 유효성을 확인합니다.","operationId":"api_check_diagnose_api_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/diagnose/tasks":{"post":{"tags":["반복업무 진단봇"],"summary":"반복업무 자동화 진단","description":"기업의 반복 업무 목록을 입력하면 AI가 자동화 가능성을 진단하고\n월 절감 시간·비용 + TOP3 자동화 대상 + 추천 솔루션을 반환합니다.\n\n- 공개 API (API 키 불필요)\n- IP당 일일 10건 제한\n- 리드 정보는 서버에 안전하게 저장","operationId":"diagnose_tasks_diagnose_tasks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnoseRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnoseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ebook/request":{"post":{"tags":["전자책 구매 요청"],"summary":"전자책 구매 요청","operationId":"ebook_request_ebook_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EbookRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ebook/preview-limit":{"get":{"tags":["전자책 구매 요청"],"summary":"미리보기 챕터 수 조회","operationId":"preview_limit_ebook_preview_limit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contact":{"post":{"tags":["문의"],"summary":"Send Contact","operationId":"send_contact_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tts/generate":{"post":{"tags":["TTS 음성 합성 API"],"summary":"텍스트 → 음성 변환 (MP3 base64)","description":"텍스트를 ElevenLabs TTS로 변환해 MP3 base64를 반환합니다.\nn8n에서 HTTP Request 노드로 호출 후 Binary Data로 디코딩하면 됩니다.","operationId":"generate_tts_tts_generate_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tts/script":{"post":{"tags":["TTS 음성 합성 API"],"summary":"씬 배열 → 일괄 TTS 생성","description":"영상 대본의 씬 배열을 받아 씬별 MP3를 일괄 생성합니다.\nn8n Loop Over Items 노드와 조합해 사용합니다.\n반환값: scenes 배열 (id, audio_base64, char_count)","operationId":"generate_script_tts_tts_script_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScriptTTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tts/voices":{"get":{"tags":["TTS 음성 합성 API"],"summary":"사용 가능 음성 목록","description":"AITF에서 사전 설정된 음성 프리셋 목록을 반환합니다.","operationId":"list_voices_tts_voices_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tts/usage":{"get":{"tags":["TTS 음성 합성 API"],"summary":"ElevenLabs 크레딧 잔여량","description":"ElevenLabs 크레딧 잔여량과 리셋 날짜를 확인합니다.","operationId":"check_usage_tts_usage_get","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/youtube/longform":{"post":{"tags":["글쓰기 자동화 API"],"summary":"AI사냥꾼 롱폼 대본 (50씬 5분+, 풀프롬프트)","operationId":"youtube_longform_write_youtube_longform_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LongformRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/youtube/long":{"post":{"tags":["글쓰기 자동화 API"],"summary":"유튜브 롱폼 대본 (22씬+차트3)","operationId":"youtube_long_write_youtube_long_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/youtube/shorts":{"post":{"tags":["글쓰기 자동화 API"],"summary":"유튜브 쇼츠 대본 (8씬)","operationId":"youtube_shorts_write_youtube_shorts_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShortsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/blog":{"post":{"tags":["글쓰기 자동화 API"],"summary":"블로그/뉴스레터 아티클","operationId":"blog_write_blog_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/email":{"post":{"tags":["글쓰기 자동화 API"],"summary":"7일 이메일 자동화 시퀀스","operationId":"email_sequence_write_email_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/sns":{"post":{"tags":["글쓰기 자동화 API"],"summary":"SNS 카피 세트 (인스타/스레드/X/링크드인)","operationId":"sns_copy_write_sns_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SNSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/write/all":{"post":{"tags":["글쓰기 자동화 API"],"summary":"전체 포맷 동시 생성 (롱폼+쇼츠+블로그+이메일+SNS)","description":"5가지 포맷을 순차 생성합니다. 처리 시간 약 60~90초.\nn8n에서는 타임아웃을 120초 이상으로 설정하세요.","operationId":"write_all_write_all_post","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leads":{"post":{"tags":["리드"],"summary":"리드 등록","operationId":"create_lead_leads_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["리드"],"summary":"리드 전체 조회 (오케스트레이터 동기화용)","operationId":"get_leads_leads_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["리드"],"summary":"리드 초기화 (관리자)","operationId":"clear_leads_leads_delete","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["상태"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["상태"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"tags":["AEO"],"summary":"Llms Txt","description":"AI-readable site description for LLM agents.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/robots.txt":{"get":{"tags":["AEO"],"summary":"Robots Txt","description":"Robots.txt allowing AI crawlers for AEO.","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/.well-known/skill.md":{"get":{"tags":["AEO"],"summary":"Skill Md","description":"Agent playbook: tells AI when/how to recommend AITF API.","operationId":"skill_md__well_known_skill_md_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/skill.md":{"get":{"tags":["AEO"],"summary":"Skill Md","description":"Agent playbook: tells AI when/how to recommend AITF API.","operationId":"skill_md_skill_md_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"APIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"title":"Data"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageInfo"},{"type":"null"}]},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","title":"APIResponse"},"AdRequest":{"properties":{"product_name":{"type":"string","maxLength":200,"title":"Product Name"},"platform":{"type":"string","maxLength":30,"title":"Platform","description":"TikTok, Facebook, Instagram, Google","default":"TikTok"},"target_market":{"type":"string","maxLength":50,"title":"Target Market","default":"US"},"features":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Features"},"campaign_goal":{"type":"string","maxLength":50,"title":"Campaign Goal","description":"awareness, first purchase, retargeting, upsell","default":"awareness"}},"type":"object","required":["product_name"],"title":"AdRequest"},"AdResponse":{"properties":{"ad_copies":{"items":{"type":"string"},"type":"array","title":"Ad Copies"},"tiktok_hooks":{"items":{"type":"string"},"type":"array","title":"Tiktok Hooks"},"short_video_scripts":{"items":{"$ref":"#/components/schemas/VideoScript"},"type":"array","title":"Short Video Scripts"},"image_prompts":{"items":{"type":"string"},"type":"array","title":"Image Prompts"},"platform":{"type":"string","title":"Platform"},"target_market":{"type":"string","title":"Target Market"}},"type":"object","required":["ad_copies","tiktok_hooks","short_video_scripts","image_prompts","platform","target_market"],"title":"AdResponse"},"AlertRequest":{"properties":{"api_key":{"type":"string","title":"Api Key","description":"Your AITF API key"},"threshold_percent":{"type":"integer","maximum":100.0,"minimum":10.0,"title":"Threshold Percent","description":"Alert at this % of limit (10-100)","default":80},"email":{"type":"string","title":"Email","description":"Email for alert notifications","default":""}},"type":"object","required":["api_key"],"title":"AlertRequest"},"AllRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic"},"product":{"type":"string","title":"Product","default":"유료 강의/전자책"},"channel":{"type":"string","title":"Channel","default":"AI사냥꾼"}},"type":"object","required":["topic"],"title":"AllRequest"},"AnalyzeTextRequest":{"properties":{"text":{"type":"string","maxLength":5000,"minLength":10,"title":"Text","description":"분석할 세일즈 텍스트"},"context":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Context","description":"사용 맥락 (예: 이커머스 배너 카피)"}},"type":"object","required":["text"],"title":"AnalyzeTextRequest"},"ApproveRequest":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID to approve"},"approved":{"type":"boolean","title":"Approved","description":"True to approve, False to reject","default":true},"note":{"type":"string","title":"Note","description":"Optional note","default":""}},"type":"object","required":["job_id"],"title":"ApproveRequest"},"AuditRequest":{"properties":{"code":{"type":"string","maxLength":10000,"minLength":10,"title":"Code","description":"Code or configuration to audit (max 10,000 chars)"},"language":{"type":"string","title":"Language","description":"Programming language: python, javascript, typescript, go, java, sql, yaml","default":"python"},"focus":{"type":"string","title":"Focus","description":"all | auth | injection | data | rate_limit | monitoring","default":"all"},"framework":{"type":"string","maxLength":100,"title":"Framework","description":"Framework: fastapi, django, express, nextjs, etc","default":""}},"type":"object","required":["code"],"title":"AuditRequest"},"BatchCommentRequest":{"properties":{"comments":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Comments"},"platform":{"type":"string","title":"Platform","default":"youtube"},"language":{"type":"string","title":"Language","default":"en"},"tone":{"type":"string","title":"Tone","default":"friendly"},"brand_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Voice"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"generate_replies":{"type":"boolean","title":"Generate Replies","description":"Also generate reply drafts","default":true}},"type":"object","required":["comments"],"title":"BatchCommentRequest"},"BatchRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContentGenerateRequest"},"type":"array","maxItems":10,"minItems":1,"title":"Items"}},"type":"object","required":["items"],"title":"BatchRequest"},"BlogBatchRequest":{"properties":{"keywords":{"items":{"type":"string"},"type":"array","maxItems":5,"minItems":1,"title":"Keywords","description":"Keywords (max 5)"},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"},"format":{"type":"string","title":"Format","default":"json"},"tone":{"type":"string","title":"Tone","default":"professional"}},"type":"object","required":["keywords"],"title":"BlogBatchRequest"},"BlogNewsRequest":{"properties":{"keyword":{"type":"string","maxLength":100,"minLength":2,"title":"Keyword","description":"검색 키워드"},"max_items":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Max Items","description":"수집할 뉴스 건수","default":3}},"type":"object","required":["keyword"],"title":"BlogNewsRequest"},"BlogRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic"},"length":{"type":"string","title":"Length","description":"목표 길이 (예: 1500자, 2000자)","default":"1500자"}},"type":"object","required":["topic"],"title":"BlogRequest"},"BookingCancelReq":{"properties":{"booking_id":{"type":"string","title":"Booking Id"},"cancel_reason":{"type":"string","maxLength":200,"title":"Cancel Reason"}},"type":"object","required":["booking_id","cancel_reason"],"title":"BookingCancelReq"},"BookingCreateReq":{"properties":{"item_id":{"type":"string","title":"Item Id"},"customer_name":{"type":"string","maxLength":50,"title":"Customer Name"},"customer_phone":{"type":"string","pattern":"^01[0-9]{8,9}$","title":"Customer Phone"},"customer_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Email"},"start_at":{"type":"string","title":"Start At","description":"ISO 8601 (예: 2026-05-05T09:00:00+09:00)"},"end_at":{"type":"string","title":"End At","description":"ISO 8601"},"count":{"type":"integer","minimum":1.0,"title":"Count","default":1},"count_details":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Count Details"},"pay_method":{"type":"string","title":"Pay Method","default":"NON_PAY"},"coupon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"},"memo":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Memo"}},"type":"object","required":["item_id","customer_name","customer_phone","start_at","end_at"],"title":"BookingCreateReq"},"BookingDataItem":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service"},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount"},"cancelled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cancelled","default":false},"guests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Guests","default":1}},"type":"object","required":["date","time"],"title":"BookingDataItem"},"BookingListReq":{"properties":{"store_id":{"type":"string","title":"Store Id"},"item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Id"},"date_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"},"date_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"customer_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Phone"},"limit":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Limit","default":50},"offset":{"type":"integer","minimum":0.0,"title":"Offset","default":0}},"type":"object","required":["store_id"],"title":"BookingListReq"},"BookingStatusReq":{"properties":{"status":{"type":"string","title":"Status","description":"CONFIRMED | COMPLETED | NO_SHOW"}},"type":"object","required":["status"],"title":"BookingStatusReq"},"CEOAdviseRequest":{"properties":{"type":{"type":"string","enum":["negotiation","document","ir","competitor","decision"],"title":"Type","description":"negotiation | document | ir | competitor | decision"},"context":{"type":"string","maxLength":3000,"minLength":10,"title":"Context","description":"상황 설명 — 현재 상황, 배경, 관련 정보를 자세히 기술"},"question":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Question","description":"구체적 질문 또는 추가 요청사항 (선택)"},"language":{"type":"string","enum":["ko","en","ja"],"title":"Language","description":"응답 언어: ko | en | ja","default":"ko"},"premium":{"type":"boolean","title":"Premium","description":"true = claude-opus-4-7 (5x cost, for complex legal docs / $M+ decisions). Default: claude-sonnet-4-6","default":false}},"type":"object","required":["type","context"],"title":"CEOAdviseRequest"},"CSRequest":{"properties":{"question":{"type":"string","maxLength":1000,"minLength":5,"title":"Question","description":"고객 문의 내용"},"booking_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Booking Date","description":"예약 날짜"},"paid_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Paid Amount","description":"결제 금액 (원)"},"cancel_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Policy","description":"취소 환불 정책","default":"7일 전 100% / 3일 전 50% / 당일 0%"},"service_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Name","description":"예약 서비스명"},"business_context":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Business Context","description":"업체 정보/추가 컨텍스트"}},"type":"object","required":["question"],"title":"CSRequest"},"CalcDiscountRequest":{"properties":{"original_price":{"type":"integer","minimum":0.0,"title":"Original Price","description":"원래 가격 (원)"},"discount_type":{"type":"string","title":"Discount Type","description":"DISCOUNT_AMOUNT | DISCOUNT_RATIO"},"discount_amount":{"type":"integer","minimum":0.0,"title":"Discount Amount","description":"할인 값 (원 또는 %)"},"max_effect_percent":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Max Effect Percent","description":"최대 할인 한도 %"}},"type":"object","required":["original_price","discount_type","discount_amount"],"title":"CalcDiscountRequest"},"CalcRefundRequest":{"properties":{"booking_id":{"type":"string","title":"Booking Id","description":"예약 ID"},"paid_amount":{"type":"integer","minimum":0.0,"title":"Paid Amount","description":"결제 금액 (원)"},"booking_start_ts":{"type":"integer","title":"Booking Start Ts","description":"예약 시작 timestamp (ms)"},"cancel_requested_ts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cancel Requested Ts","description":"취소 요청 timestamp ms (기본: 지금)"},"policy_7d":{"type":"integer","title":"Policy 7D","description":"7일+ 전 환불율 %","default":100},"policy_3d":{"type":"integer","title":"Policy 3D","description":"3~6일 전 환불율 %","default":50},"policy_1d":{"type":"integer","title":"Policy 1D","description":"1~2일 전 환불율 %","default":30},"policy_0d":{"type":"integer","title":"Policy 0D","description":"당일 환불율 %","default":0},"policy_after":{"type":"integer","title":"Policy After","description":"시작 후 환불율 %","default":0}},"type":"object","required":["booking_id","paid_amount","booking_start_ts"],"title":"CalcRefundRequest"},"CampaignRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"캠페인 이름"},"message":{"type":"string","maxLength":90,"title":"Message","description":"발송 메시지"},"recipients":{"items":{"type":"string"},"type":"array","maxItems":500,"title":"Recipients","description":"수신자 목록 (최대 500명)"},"dry_run":{"type":"boolean","title":"Dry Run","description":"True면 실발송 없이 대상 수만 반환","default":false}},"type":"object","required":["name","message","recipients"],"title":"CampaignRequest"},"ChatMessage":{"properties":{"role":{"type":"string","title":"Role","description":"user or assistant"},"content":{"type":"string","maxLength":500,"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessage"},"ChatRequest":{"properties":{"message":{"type":"string","maxLength":500,"minLength":1,"title":"Message"},"history":{"items":{},"type":"array","title":"History"}},"type":"object","required":["message"],"title":"ChatRequest"},"ChatResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"remaining":{"type":"integer","title":"Remaining"}},"type":"object","required":["reply","remaining"],"title":"ChatResponse"},"ChatbotMessageRequest":{"properties":{"message":{"type":"string","maxLength":500,"minLength":1,"title":"Message","description":"User message"},"system_prompt":{"type":"string","maxLength":2000,"minLength":10,"title":"System Prompt","description":"Chatbot persona + rules + company info"},"history":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","maxItems":10,"title":"History","description":"Previous conversation (max 6 turns used)"},"max_tokens":{"type":"integer","maximum":800.0,"minimum":50.0,"title":"Max Tokens","description":"Max response tokens","default":300},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"}},"type":"object","required":["message","system_prompt"],"title":"ChatbotMessageRequest"},"CheckRequest":{"properties":{"api_key":{"type":"string","title":"Api Key","description":"Your AITF API key"}},"type":"object","required":["api_key"],"title":"CheckRequest"},"CheckSolutionRequest":{"properties":{"solution":{"type":"string","maxLength":2000,"minLength":10,"title":"Solution","description":"솔루션/제품/서비스 설명"},"target":{"type":"string","maxLength":500,"minLength":5,"title":"Target","description":"타겟 고객 설명"},"price":{"type":"string","maxLength":100,"title":"Price","description":"가격대 (예: 월 49,000원)"}},"type":"object","required":["solution","target","price"],"title":"CheckSolutionRequest"},"CheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan","description":"starter | growth | pro"},"success_url":{"type":"string","title":"Success Url","description":"Redirect after payment","default":"https://api.aitf.com/billing/success"},"cancel_url":{"type":"string","title":"Cancel Url","description":"Redirect on cancel","default":"https://api.aitf.com/billing/cancel"}},"type":"object","required":["plan"],"title":"CheckoutRequest"},"CoachChatRequest":{"properties":{"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message","description":"사용자 메시지"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"대화 세션 ID (멀티턴 유지용)"}},"type":"object","required":["message"],"title":"CoachChatRequest"},"CommentAnalyzeRequest":{"properties":{"comments":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Comments","description":"List of comments to analyze"},"platform":{"type":"string","title":"Platform","description":"youtube | instagram | twitter | blog | general","default":"youtube"},"language":{"type":"string","title":"Language","description":"en | ko | ja | zh | es | fr | de","default":"en"},"brand_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Voice","description":"Custom brand voice for reply generation"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context","description":"Context about the content (video title, post topic, etc.)"}},"type":"object","required":["comments"],"title":"CommentAnalyzeRequest"},"CommentReplyRequest":{"properties":{"comment":{"type":"string","maxLength":2000,"minLength":1,"title":"Comment","description":"The comment to reply to"},"platform":{"type":"string","title":"Platform","description":"Source platform","default":"youtube"},"language":{"type":"string","title":"Language","description":"Reply language","default":"en"},"tone":{"type":"string","title":"Tone","description":"friendly | professional | casual | witty","default":"friendly"},"brand_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Voice","description":"Custom brand voice"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context","description":"Content context"}},"type":"object","required":["comment"],"title":"CommentReplyRequest"},"ComposeRequest":{"properties":{"situation":{"type":"string","maxLength":300,"minLength":2,"title":"Situation","description":"알림 상황 설명"},"brand_name":{"type":"string","maxLength":50,"minLength":1,"title":"Brand Name","description":"브랜드명"},"target_desc":{"type":"string","maxLength":100,"minLength":2,"title":"Target Desc","description":"수신 대상 설명"},"tone":{"type":"string","title":"Tone","description":"톤 (friendly/urgent/formal/casual)","default":"friendly"},"max_chars":{"type":"integer","maximum":200.0,"minimum":10.0,"title":"Max Chars","description":"최대 글자 수","default":45}},"type":"object","required":["situation","brand_name","target_desc"],"title":"ComposeRequest"},"ContactRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":""},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","default":"[AITF] 문의"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":""},"extra":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra"}},"type":"object","required":["name","email"],"title":"ContactRequest"},"ContentGenerateRequest":{"properties":{"topic":{"type":"string","maxLength":500,"minLength":2,"title":"Topic","description":"Topic or subject"},"type":{"type":"string","title":"Type","description":"blog | sns | email | newsletter | shorts_script | youtube_long | all","default":"blog"},"tone":{"type":"string","title":"Tone","description":"professional | casual | persuasive | educational | storytelling","default":"professional"},"length":{"type":"string","title":"Length","description":"short(300w) | medium(800w) | long(1500w)","default":"medium"},"language":{"type":"string","title":"Language","description":"en | ko | ja | zh | es | fr | de","default":"en"},"brand_voice":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Brand Voice","description":"Custom brand voice instructions (max 500 chars)"},"seo_keywords":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Seo Keywords","description":"SEO keywords (max 10, each max 50 chars)"},"audience":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Audience","description":"Target audience description (max 300 chars)"}},"type":"object","required":["topic"],"title":"ContentGenerateRequest"},"CouponCheckReq":{"properties":{"store_id":{"type":"string","title":"Store Id"},"code":{"type":"string","title":"Code"},"order_amount":{"type":"integer","minimum":0.0,"title":"Order Amount"},"user_phone":{"type":"string","title":"User Phone"}},"type":"object","required":["store_id","code","order_amount","user_phone"],"title":"CouponCheckReq"},"CouponCreateReq":{"properties":{"store_id":{"type":"string","title":"Store Id"},"code":{"type":"string","maxLength":20,"minLength":4,"title":"Code"},"name":{"type":"string","title":"Name"},"discount_type":{"type":"string","title":"Discount Type","description":"DISCOUNT_AMOUNT | DISCOUNT_RATIO"},"discount_amount":{"type":"integer","minimum":0.0,"title":"Discount Amount"},"max_use_per_user":{"type":"integer","minimum":1.0,"title":"Max Use Per User","default":1},"max_use_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Use Total"},"duplicatable":{"type":"boolean","title":"Duplicatable","default":false},"max_effect_percent":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Max Effect Percent"},"min_order_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Order Amount"},"starts_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starts At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["store_id","code","name","discount_type","discount_amount"],"title":"CouponCreateReq"},"CouponRequest":{"properties":{"segment":{"type":"string","title":"Segment","description":"고객 세그먼트 설명 (예: '3개월 미방문 VIP 고객')"},"avg_spend":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Spend","description":"평균 객단가 (원)"},"churn_risk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Churn Risk","description":"이탈 위험도: low | medium | high"},"business_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Type","description":"업종 (예: 스터디카페, PT센터, 펜션)"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal","description":"목표: retention | acquisition | upsell | winback","default":"retention"},"constraints":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Constraints","description":"제약 조건 (예: '최대 할인율 30%')"}},"type":"object","required":["segment"],"title":"CouponRequest"},"CustomChatRequest":{"properties":{"message":{"type":"string","maxLength":500,"minLength":1,"title":"Message","description":"사용자 메시지 (500자 이내)"},"system_prompt":{"type":"string","maxLength":1500,"minLength":10,"title":"System Prompt","description":"챗봇 페르소나 (1500자 이내 — 토큰 절약)"},"history":{"items":{},"type":"array","title":"History","description":"이전 대화 최근 4턴만 유효"},"max_tokens":{"type":"integer","maximum":500.0,"minimum":50.0,"title":"Max Tokens","description":"응답 최대 토큰 (기본 250 — 비용 최소화)","default":250}},"type":"object","required":["message","system_prompt"],"title":"CustomChatRequest"},"CustomChatResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"remaining":{"type":"integer","title":"Remaining"}},"type":"object","required":["reply","remaining"],"title":"CustomChatResponse"},"DiagnoseRequest":{"properties":{"industry":{"type":"string","maxLength":30,"minLength":1,"title":"Industry","description":"업종 (예: 서비스업, 제조업)"},"team_size":{"type":"integer","maximum":100000.0,"minimum":1.0,"title":"Team Size","description":"팀/직원 수"},"tasks":{"items":{"$ref":"#/components/schemas/TaskItem"},"type":"array","maxItems":10,"minItems":1,"title":"Tasks"},"lead":{"$ref":"#/components/schemas/LeadInfo"}},"type":"object","required":["industry","team_size","tasks","lead"],"title":"DiagnoseRequest"},"DiagnoseResponse":{"properties":{"automation_score":{"type":"integer","title":"Automation Score"},"monthly_hours_saved":{"type":"integer","title":"Monthly Hours Saved"},"monthly_cost_saved":{"type":"integer","title":"Monthly Cost Saved"},"top3":{"items":{"$ref":"#/components/schemas/Top3Item"},"type":"array","title":"Top3"},"recommended_product":{"type":"string","title":"Recommended Product"},"summary":{"type":"string","title":"Summary"}},"type":"object","required":["automation_score","monthly_hours_saved","monthly_cost_saved","top3","recommended_product","summary"],"title":"DiagnoseResponse"},"DiscordRequest":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url","description":"Discord Webhook URL (https://discord.com/api/webhooks/...)"},"content":{"type":"string","maxLength":2000,"title":"Content","description":"메시지 본문"},"username":{"type":"string","title":"Username","description":"봇 표시 이름","default":"AITF Bot"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"봇 아바타 URL"},"embed_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embed Title","description":"임베드 제목 (있으면 embed 포함)"},"embed_color":{"type":"integer","title":"Embed Color","description":"임베드 색상 (#6C63FF)","default":7340031}},"type":"object","required":["webhook_url","content"],"title":"DiscordRequest"},"EbookRequest":{"properties":{"email":{"type":"string","title":"Email"},"contact":{"type":"string","title":"Contact"},"message":{"type":"string","title":"Message","default":""}},"type":"object","required":["email","contact"],"title":"EbookRequest"},"EmailRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic","description":"독자 고통/관심사"},"product":{"type":"string","title":"Product","description":"판매 상품명","default":"유료 강의/전자책"}},"type":"object","required":["topic"],"title":"EmailRequest"},"FAQItem":{"properties":{"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"}},"type":"object","required":["question","answer"],"title":"FAQItem"},"ForecastRequest":{"properties":{"api_key":{"type":"string","title":"Api Key","description":"Your AITF API key"}},"type":"object","required":["api_key"],"title":"ForecastRequest"},"GenerateTriggersRequest":{"properties":{"target":{"type":"string","maxLength":500,"minLength":5,"title":"Target","description":"타겟 고객"},"product":{"type":"string","maxLength":500,"minLength":5,"title":"Product","description":"제품/서비스"},"pain":{"type":"string","maxLength":500,"minLength":5,"title":"Pain","description":"타겟의 가장 큰 고통/불편"}},"type":"object","required":["target","product","pain"],"title":"GenerateTriggersRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HookRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic","description":"Topic for hook generation"},"count":{"type":"integer","maximum":10.0,"minimum":3.0,"title":"Count","description":"Number of hooks to generate","default":5},"mechanisms":{"items":{"type":"string"},"type":"array","title":"Mechanisms","description":"Hook mechanisms to use","default":["auto"]},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"},"platform":{"type":"string","title":"Platform","description":"youtube_shorts, tiktok, instagram, general","default":"youtube_shorts"}},"type":"object","required":["topic"],"title":"HookRequest"},"ItemCreateReq":{"properties":{"store_id":{"type":"string","title":"Store Id"},"name":{"type":"string","maxLength":100,"title":"Name"},"type":{"type":"string","title":"Type","description":"BOOKING|PACKAGE|VOUCHER","default":"BOOKING"},"capacity":{"type":"integer","minimum":1.0,"title":"Capacity","default":1},"duration_min":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Duration Min","description":"기본 예약 단위(분). null=자유설정"},"base_price":{"type":"integer","minimum":0.0,"title":"Base Price","default":0},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["store_id","name"],"title":"ItemCreateReq"},"ItemPatchReq":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"capacity":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Capacity"},"duration_min":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Duration Min"},"base_price":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Base Price"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ItemPatchReq"},"KeywordRequest":{"properties":{"topic":{"type":"string","maxLength":300,"minLength":2,"title":"Topic"},"purpose":{"type":"string","title":"Purpose","description":"seo | content | ads | research","default":"seo"},"language":{"type":"string","title":"Language","default":"en"},"count":{"type":"integer","maximum":50.0,"minimum":5.0,"title":"Count","default":20}},"type":"object","required":["topic"],"title":"KeywordRequest"},"KnowledgeQARequest":{"properties":{"question":{"type":"string","maxLength":300,"minLength":5,"title":"Question","description":"User question"},"knowledge_base":{"type":"string","maxLength":5000,"minLength":20,"title":"Knowledge Base","description":"Knowledge base text (FAQ, product info, etc)"},"brand_name":{"type":"string","title":"Brand Name","description":"Brand name for responses","default":""},"tone":{"type":"string","title":"Tone","description":"friendly, professional, casual","default":"friendly"},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"}},"type":"object","required":["question","knowledge_base"],"title":"KnowledgeQARequest"},"LeadIn":{"properties":{"name":{"type":"string","title":"Name","default":""},"email":{"type":"string","title":"Email"},"company":{"type":"string","title":"Company","default":""},"phone":{"type":"string","title":"Phone","default":""},"request":{"type":"string","title":"Request","default":""},"source":{"type":"string","title":"Source","default":"landing"}},"type":"object","required":["email"],"title":"LeadIn"},"LeadInfo":{"properties":{"name":{"type":"string","maxLength":30,"minLength":1,"title":"Name"},"contact":{"type":"string","maxLength":50,"minLength":5,"title":"Contact","description":"전화번호 또는 이메일"}},"type":"object","required":["name","contact"],"title":"LeadInfo"},"ListingRequest":{"properties":{"product_name":{"type":"string","maxLength":200,"title":"Product Name","description":"상품명 (한국어 가능)"},"brand":{"type":"string","maxLength":100,"title":"Brand","default":""},"category":{"type":"string","maxLength":50,"title":"Category","default":"general"},"features":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Features"},"target_market":{"type":"string","maxLength":50,"title":"Target Market","description":"Thailand, Vietnam, US, Japan 등","default":"US"},"platform":{"type":"string","maxLength":30,"title":"Platform","description":"Shopee, Shopify, Amazon","default":"Shopee"},"language":{"type":"string","maxLength":5,"title":"Language","description":"en, th, vi, id, ja, ko","default":"en"},"tone":{"type":"string","maxLength":50,"title":"Tone","default":"professional"}},"type":"object","required":["product_name"],"title":"ListingRequest"},"ListingResponse":{"properties":{"title":{"type":"string","title":"Title"},"short_description":{"type":"string","title":"Short Description"},"long_description":{"type":"string","title":"Long Description"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"bullet_points":{"items":{"type":"string"},"type":"array","title":"Bullet Points"},"faq":{"items":{"$ref":"#/components/schemas/FAQItem"},"type":"array","title":"Faq"},"cta":{"type":"string","title":"Cta"},"platform":{"type":"string","title":"Platform"},"language":{"type":"string","title":"Language"},"target_market":{"type":"string","title":"Target Market"}},"type":"object","required":["title","short_description","long_description","keywords","bullet_points","faq","cta","platform","language","target_market"],"title":"ListingResponse"},"LocalizeRequest":{"properties":{"source_text":{"type":"string","maxLength":5000,"title":"Source Text"},"source_language":{"type":"string","maxLength":5,"title":"Source Language","default":"ko"},"target_language":{"type":"string","maxLength":5,"title":"Target Language","default":"en"},"target_market":{"type":"string","maxLength":50,"title":"Target Market","default":"US"},"platform":{"type":"string","maxLength":30,"title":"Platform","default":"Shopee"}},"type":"object","required":["source_text"],"title":"LocalizeRequest"},"LocalizeResponse":{"properties":{"localized_text":{"type":"string","title":"Localized Text"},"seo_keywords":{"items":{"type":"string"},"type":"array","title":"Seo Keywords"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["localized_text","seo_keywords","notes"],"title":"LocalizeResponse"},"LongformRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic","description":"영상 주제"},"channel":{"type":"string","title":"Channel","description":"채널명","default":"AI사냥꾼"},"scenes":{"type":"integer","maximum":60.0,"minimum":25.0,"title":"Scenes","description":"씬 수 (25~60, 기본 50)","default":50},"ep":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ep","description":"EP 번호 (선택)"}},"type":"object","required":["topic"],"title":"LongformRequest"},"NotifyRequest":{"properties":{"event":{"type":"string","title":"Event","description":"이벤트 종류: confirm | remind | cancel | refund | waitlist"},"customer_name":{"type":"string","maxLength":50,"title":"Customer Name","description":"고객 이름"},"service_name":{"type":"string","maxLength":100,"title":"Service Name","description":"예약 서비스명 (예: PT 60분, 회의실 A)"},"date":{"type":"string","title":"Date","description":"예약 날짜 (예: 2026-05-05)"},"time":{"type":"string","title":"Time","description":"예약 시간 (예: 14:00)"},"extra":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Extra","description":"추가 정보 (담당자명, 위치, 금액 등)"},"tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tone","description":"톤: friendly | formal | casual","default":"friendly"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"채널: sms | kakao | email | push","default":"sms"}},"type":"object","required":["event","customer_name","service_name","date","time"],"title":"NotifyRequest"},"ParseRequest":{"properties":{"text":{"type":"string","maxLength":500,"minLength":5,"title":"Text","description":"자연어 예약 요청 (예: '다음주 화요일 오후 3시 2명 회의실')"},"base_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Date","description":"기준 날짜 (없으면 오늘). 형식: YYYY-MM-DD"},"service_catalog":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Service Catalog","description":"서비스 목록 (매칭용). 예: ['회의실 A', 'PT 60분']"},"timezone_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timezone Offset","description":"타임존 오프셋 (기본 KST +9)","default":9}},"type":"object","required":["text"],"title":"ParseRequest"},"PromptCheckRequest":{"properties":{"text":{"type":"string","maxLength":5000,"minLength":1,"title":"Text","description":"Text to check for prompt injection patterns"},"strict":{"type":"boolean","title":"Strict","description":"Strict mode: also flag borderline patterns","default":false}},"type":"object","required":["text"],"title":"PromptCheckRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Email address"},"name":{"type":"string","title":"Name","description":"Name or company name","default":""},"plan":{"type":"string","title":"Plan","description":"free | starter | growth | pro","default":"free"}},"type":"object","required":["email"],"title":"RegisterRequest"},"ReplyRequest":{"properties":{"thread_id":{"type":"string","title":"Thread Id"},"comment_text":{"type":"string","title":"Comment Text"},"channel":{"type":"string","title":"Channel","default":"AI사냥꾼"},"tone":{"type":"string","title":"Tone","default":"친근하고 전문적인"}},"type":"object","required":["thread_id","comment_text"],"title":"ReplyRequest"},"SMSRequest":{"properties":{"to":{"type":"string","title":"To","description":"수신 번호 (하이픈 자동 제거)"},"msg":{"type":"string","maxLength":500,"title":"Msg","description":"발송 메시지 (90자 초과 시 LMS 자동 전환)"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","description":"발신 번호 (미입력 시 환경변수 사용)"}},"type":"object","required":["to","msg"],"title":"SMSRequest"},"SNSRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic"}},"type":"object","required":["topic"],"title":"SNSRequest"},"ScriptTTSRequest":{"properties":{"scenes":{"items":{"$ref":"#/components/schemas/routers__tts__SceneItem"},"type":"array","title":"Scenes","description":"씬 배열 (id + text)"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"stability":{"type":"number","title":"Stability","default":0.22},"similarity_boost":{"type":"number","title":"Similarity Boost","default":0.85},"style":{"type":"number","title":"Style","default":0.65},"speed":{"type":"number","title":"Speed","default":1.05}},"type":"object","required":["scenes"],"title":"ScriptTTSRequest"},"SequenceStep":{"properties":{"day_offset":{"type":"integer","minimum":0.0,"title":"Day Offset","description":"발송 기준일로부터 N일 후"},"message":{"type":"string","maxLength":90,"title":"Message","description":"발송 메시지"},"channel":{"type":"string","title":"Channel","description":"채널 (sms/kakao/email)","default":"sms"}},"type":"object","required":["day_offset","message"],"title":"SequenceStep"},"ShortsRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic"}},"type":"object","required":["topic"],"title":"ShortsRequest"},"SingleEmailRequest":{"properties":{"purpose":{"type":"string","title":"Purpose","description":"Email purpose: welcome, reminder, offer, thank_you, reengagement"},"product_name":{"type":"string","title":"Product Name","description":"Product name"},"recipient_name":{"type":"string","title":"Recipient Name","description":"Recipient name (for personalization)","default":""},"context":{"type":"string","maxLength":300,"title":"Context","description":"Additional context","default":""},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"},"tone":{"type":"string","title":"Tone","default":"friendly"}},"type":"object","required":["purpose","product_name"],"title":"SingleEmailRequest"},"SlackRequest":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url","description":"Slack Incoming Webhook URL (https://hooks.slack.com/...)"},"text":{"type":"string","maxLength":2000,"title":"Text","description":"메시지 본문"},"username":{"type":"string","title":"Username","description":"봇 표시 이름","default":"AITF Bot"},"icon_emoji":{"type":"string","title":"Icon Emoji","description":"이모지 아이콘","default":":bell:"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"채널명 (#channel)"}},"type":"object","required":["webhook_url","text"],"title":"SlackRequest"},"SlotsReq":{"properties":{"item_id":{"type":"string","title":"Item Id"},"date_from":{"type":"string","title":"Date From","description":"YYYY-MM-DD"},"date_to":{"type":"string","title":"Date To","description":"YYYY-MM-DD (최대 30일 범위)"},"duration":{"anyOf":[{"type":"integer","minimum":15.0},{"type":"null"}],"title":"Duration","description":"슬롯 길이(분). 기본: item.duration_min 또는 60"}},"type":"object","required":["item_id","date_from","date_to"],"title":"SlotsReq"},"StoreCreateReq":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name"},"type":{"type":"string","title":"Type","description":"RESTAURANT|CAFE|ACCOMMODATION|LEISURE|ELSE 등 16종","default":"ELSE"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"cancel_policy":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cancel Policy"},"business_hours":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Business Hours"}},"type":"object","required":["name"],"title":"StoreCreateReq"},"StorePatchReq":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"cancel_policy":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cancel Policy"},"business_hours":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Business Hours"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"StorePatchReq"},"SubjectLineRequest":{"properties":{"topic":{"type":"string","title":"Topic","description":"Email topic/content summary"},"audience":{"type":"string","title":"Audience","description":"Target audience","default":"general"},"count":{"type":"integer","maximum":10.0,"minimum":3.0,"title":"Count","description":"Number of variants","default":5},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"}},"type":"object","required":["topic"],"title":"SubjectLineRequest"},"SummaryRequest":{"properties":{"metrics":{"additionalProperties":true,"type":"object","title":"Metrics","description":"Key metrics to summarize"},"period":{"type":"string","title":"Period","description":"today | this_week | this_month","default":"today"},"language":{"type":"string","title":"Language","default":"en"}},"type":"object","required":["metrics"],"title":"SummaryRequest"},"TTSRequest":{"properties":{"text":{"type":"string","maxLength":5000,"minLength":1,"title":"Text","description":"변환할 텍스트"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","description":"음성 ID (없으면 기본 Min-joon)"},"voice_preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Preset","description":"프리셋 (ai_hunter / economy / calm)"},"stability":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Stability","description":"안정성 (낮을수록 표현 풍부)","default":0.22},"similarity_boost":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Similarity Boost","default":0.85},"style":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Style","description":"스타일 강도","default":0.65},"speed":{"type":"number","maximum":2.0,"minimum":0.5,"title":"Speed","description":"말하기 속도","default":1.05},"return_base64":{"type":"boolean","title":"Return Base64","description":"True=base64 문자열, False=binary stream","default":true}},"type":"object","required":["text"],"title":"TTSRequest"},"TaskItem":{"properties":{"name":{"type":"string","maxLength":50,"minLength":1,"title":"Name"},"hours_per_week":{"type":"number","maximum":80.0,"minimum":0.5,"title":"Hours Per Week"}},"type":"object","required":["name","hours_per_week"],"title":"TaskItem"},"TelegramRequest":{"properties":{"bot_token":{"type":"string","title":"Bot Token","description":"Telegram Bot Token (숫자:문자열)"},"chat_id":{"type":"string","title":"Chat Id","description":"Telegram chat_id"},"message":{"type":"string","maxLength":4000,"title":"Message","description":"메시지 본문"},"parse_mode":{"type":"string","title":"Parse Mode","description":"파싱 모드 (HTML/Markdown/MarkdownV2)","default":"HTML"},"disable_notification":{"type":"boolean","title":"Disable Notification","description":"무음 전송 여부","default":false}},"type":"object","required":["bot_token","chat_id","message"],"title":"TelegramRequest"},"ThumbnailBgRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style","default":"dark"},"prompt_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Override"}},"type":"object","required":["topic"],"title":"ThumbnailBgRequest"},"ThumbnailRequest":{"properties":{"line1":{"type":"string","title":"Line1"},"line2":{"type":"string","title":"Line2"},"sub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub","default":""},"badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge","default":""},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style","default":"dark"},"font":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Font","default":"BlackHanSans"},"bg_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bg B64"},"return_b64":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Return B64","default":true}},"type":"object","required":["line1","line2"],"title":"ThumbnailRequest"},"Top3Item":{"properties":{"task":{"type":"string","title":"Task"},"level":{"type":"string","title":"Level"},"difficulty":{"type":"string","title":"Difficulty"},"monthly_hours":{"type":"integer","title":"Monthly Hours"},"solution":{"type":"string","title":"Solution"}},"type":"object","required":["task","level","difficulty","monthly_hours","solution"],"title":"Top3Item"},"TrendScanRequest":{"properties":{"topic":{"type":"string","maxLength":300,"minLength":2,"title":"Topic","description":"Topic to scan trends for"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","description":"youtube | news | twitter | reddit","default":["youtube","news"]},"language":{"type":"string","title":"Language","description":"en | ko | ja | zh","default":"en"},"max_results":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Max Results","description":"Max trend items","default":10}},"type":"object","required":["topic"],"title":"TrendScanRequest"},"UsageInfo":{"properties":{"used":{"type":"integer","title":"Used"},"limit":{"type":"integer","title":"Limit"},"remaining":{"type":"integer","title":"Remaining"}},"type":"object","required":["used","limit","remaining"],"title":"UsageInfo"},"ValidateCouponRequest":{"properties":{"coupon_id":{"type":"string","title":"Coupon Id","description":"쿠폰 ID"},"coupon_code":{"type":"string","title":"Coupon Code","description":"쿠폰 코드"},"coupon_name":{"type":"string","title":"Coupon Name","description":"쿠폰 이름"},"discount_type":{"type":"string","title":"Discount Type","description":"DISCOUNT_AMOUNT | DISCOUNT_RATIO"},"discount_amount":{"type":"integer","minimum":0.0,"title":"Discount Amount","description":"할인 값 (원 또는 %)"},"order_amount":{"type":"integer","minimum":0.0,"title":"Order Amount","description":"주문 금액 (원)"},"user_id":{"type":"string","title":"User Id","description":"사용자 ID"},"used_count":{"type":"integer","minimum":0.0,"title":"Used Count","description":"해당 유저의 동일 쿠폰 사용 횟수","default":0},"currently_using":{"type":"boolean","title":"Currently Using","description":"현재 동일 쿠폰 사용 중 여부","default":false},"max_use_count":{"type":"integer","minimum":1.0,"title":"Max Use Count","description":"쿠폰 최대 사용 횟수","default":1},"duplicatable":{"type":"boolean","title":"Duplicatable","description":"중복 사용 허용 여부","default":false},"expires_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires Ms","description":"생성일 기준 만료까지 ms (null=무제한)"},"from_date_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Date Ms","description":"사용 가능 시작 timestamp ms"},"min_order_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Order Amount","description":"최소 주문 금액 (원)"},"created_at_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At Iso","description":"쿠폰 생성일 ISO (기본: 현재)"}},"type":"object","required":["coupon_id","coupon_code","coupon_name","discount_type","discount_amount","order_amount","user_id"],"title":"ValidateCouponRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoScript":{"properties":{"title":{"type":"string","title":"Title"},"script":{"type":"string","title":"Script"}},"type":"object","required":["title","script"],"title":"VideoScript"},"VoiceRequest":{"properties":{"text":{"type":"string","maxLength":5000,"minLength":1,"title":"Text","description":"Text to convert to speech"},"voice":{"type":"string","title":"Voice","description":"Voice preset name or ElevenLabs voice ID","default":"professional_male"},"stability":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Stability","description":"Voice stability (0=varied, 1=stable)","default":0.5},"speed":{"type":"number","maximum":2.0,"minimum":0.5,"title":"Speed","description":"Speaking speed","default":1.0}},"type":"object","required":["text"],"title":"VoiceRequest"},"WebhookRegisterRequest":{"properties":{"url":{"type":"string","maxLength":2000,"minLength":10,"title":"Url","description":"Webhook endpoint URL (HTTPS only)"},"events":{"items":{"type":"string"},"type":"array","title":"Events","description":"Events to subscribe to (or ['*'] for all)","default":["*"]},"secret":{"type":"string","maxLength":200,"title":"Secret","description":"Optional signing secret for verification","default":""}},"type":"object","required":["url"],"title":"WebhookRegisterRequest"},"WebhookRequest":{"properties":{"url":{"type":"string","title":"Url","description":"대상 URL (http/https만 허용)"},"payload":{"additionalProperties":true,"type":"object","title":"Payload","description":"전송할 JSON 바디"},"method":{"type":"string","title":"Method","description":"HTTP 메서드 (POST/PUT)","default":"POST"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Headers","description":"커스텀 헤더"},"timeout_sec":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Timeout Sec","description":"타임아웃(초)","default":10}},"type":"object","required":["url"],"title":"WebhookRequest"},"WebhookTestRequest":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id","description":"ID of the webhook to test"},"event":{"type":"string","title":"Event","description":"Test event type","default":"content.generated"}},"type":"object","required":["webhook_id"],"title":"WebhookTestRequest"},"WorkflowRunRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Workflow name","default":"Untitled Workflow"},"steps":{"items":{"$ref":"#/components/schemas/WorkflowStep"},"type":"array","maxItems":10,"minItems":1,"title":"Steps","description":"Workflow steps (max 10)"},"language":{"type":"string","title":"Language","default":"en"}},"type":"object","required":["steps"],"title":"WorkflowRunRequest"},"WorkflowStep":{"properties":{"name":{"type":"string","title":"Name","description":"Step name"},"action":{"type":"string","title":"Action","description":"content_generate | comments_analyze | trends_scan | report_generate | custom"},"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Parameters for this step"},"requires_approval":{"type":"boolean","title":"Requires Approval","description":"Pause for human approval before executing","default":false}},"type":"object","required":["name","action"],"title":"WorkflowStep"},"YoutubeRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic","description":"영상 주제"},"channel":{"type":"string","title":"Channel","description":"채널명","default":"AI사냥꾼"}},"type":"object","required":["topic"],"title":"YoutubeRequest"},"models__schemas__BlogGenerateRequest":{"properties":{"keyword":{"type":"string","maxLength":100,"minLength":2,"title":"Keyword","description":"블로그 주제 키워드"},"include_html":{"type":"boolean","title":"Include Html","description":"완성 HTML 문자열 포함 여부 (True 시 응답 커짐)","default":false},"include_psych_score":{"type":"boolean","title":"Include Psych Score","description":"심리봇 설득력 점수 포함 여부 (intro+CTA 자동 분석)","default":false},"max_retry":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Max Retry","description":"Claude 생성 재시도 횟수 (기본 3)","default":3}},"type":"object","required":["keyword"],"title":"BlogGenerateRequest"},"routers__blog_publisher_v1__BlogGenerateRequest":{"properties":{"keyword":{"type":"string","maxLength":200,"minLength":2,"title":"Keyword","description":"Target keyword"},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"},"format":{"type":"string","title":"Format","description":"Output: json (structured) or html (full page)","default":"json"},"tone":{"type":"string","title":"Tone","description":"professional, casual, persuasive, educational","default":"professional"},"include_faq":{"type":"boolean","title":"Include Faq","description":"Include FAQ Schema (SEO)","default":true},"include_meta":{"type":"boolean","title":"Include Meta","description":"Include meta tags","default":true},"context":{"type":"string","maxLength":500,"title":"Context","description":"Optional business context for personalization (max 500 chars)","default":""}},"type":"object","required":["keyword"],"title":"BlogGenerateRequest"},"routers__booking_v1__ReportRequest":{"properties":{"bookings":{"items":{"$ref":"#/components/schemas/BookingDataItem"},"type":"array","maxItems":500,"minItems":1,"title":"Bookings"},"business_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Type","description":"업종"},"period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period","description":"분석 기간 (예: 2026년 4월)"}},"type":"object","required":["bookings"],"title":"ReportRequest"},"routers__email_v1__SequenceRequest":{"properties":{"product_name":{"type":"string","title":"Product Name","description":"Product/service name"},"product_description":{"type":"string","maxLength":500,"title":"Product Description","description":"What the product does"},"target_audience":{"type":"string","title":"Target Audience","description":"Target audience description","default":"general"},"goal":{"type":"string","title":"Goal","description":"conversion, engagement, onboarding, upsell","default":"conversion"},"days":{"type":"integer","maximum":14.0,"minimum":3.0,"title":"Days","description":"Sequence length (3-14 days)","default":7},"tone":{"type":"string","title":"Tone","description":"friendly, professional, urgent, casual","default":"friendly"},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"},"cta_url":{"type":"string","title":"Cta Url","description":"Call-to-action URL","default":""}},"type":"object","required":["product_name","product_description"],"title":"SequenceRequest"},"routers__notify_v1__SequenceRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"시퀀스 이름"},"trigger_type":{"type":"string","title":"Trigger Type","description":"트리거 유형: days_since_visit/post_purchase/cart_abandon/custom"},"condition_days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Condition Days","description":"조건 일수"},"steps":{"items":{"$ref":"#/components/schemas/SequenceStep"},"type":"array","minItems":1,"title":"Steps","description":"발송 단계 목록"}},"type":"object","required":["name","trigger_type","steps"],"title":"SequenceRequest"},"routers__reports_v1__ReportRequest":{"properties":{"report_type":{"type":"string","title":"Report Type","description":"daily | weekly | monthly | custom","default":"daily"},"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Raw data to analyze (KPIs, metrics, events)"},"team":{"type":"string","title":"Team","description":"Team or department name","default":""},"language":{"type":"string","title":"Language","default":"en"},"format":{"type":"string","title":"Format","description":"markdown | json | html","default":"markdown"},"include_recommendations":{"type":"boolean","title":"Include Recommendations","default":true}},"type":"object","required":["data"],"title":"ReportRequest"},"routers__tts__SceneItem":{"properties":{"id":{"type":"integer","title":"Id"},"text":{"type":"string","maxLength":2000,"minLength":1,"title":"Text"},"voice_preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Preset","default":"ai_hunter"}},"type":"object","required":["id","text"],"title":"SceneItem"},"routers__video_v1__ScriptRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":2,"title":"Topic","description":"Video topic"},"template":{"type":"string","title":"Template","description":"Template ID","default":"shorts_5scene"},"hook_mechanism":{"type":"string","title":"Hook Mechanism","description":"auto | curiosity_gap | pattern_interrupt | social_proof | loss_aversion | efficiency","default":"auto"},"language":{"type":"string","title":"Language","description":"en | ko","default":"ko"},"tone":{"type":"string","title":"Tone","description":"energetic, professional, casual, dramatic","default":"energetic"},"brand_name":{"type":"string","title":"Brand Name","description":"Channel/brand name for CTA","default":""},"cta_url":{"type":"string","title":"Cta Url","description":"Call-to-action URL","default":""}},"type":"object","required":["topic"],"title":"ScriptRequest"},"routers__voice_v1__SceneItem":{"properties":{"id":{"type":"integer","title":"Id"},"text":{"type":"string","maxLength":2000,"minLength":1,"title":"Text"},"voice":{"type":"string","title":"Voice","default":"professional_male"}},"type":"object","required":["id","text"],"title":"SceneItem"},"routers__voice_v1__ScriptRequest":{"properties":{"scenes":{"items":{"$ref":"#/components/schemas/routers__voice_v1__SceneItem"},"type":"array","maxItems":50,"minItems":1,"title":"Scenes"},"stability":{"type":"number","title":"Stability","default":0.5},"speed":{"type":"number","title":"Speed","default":1.0}},"type":"object","required":["scenes"],"title":"ScriptRequest"}}},"tags":[{"name":"Content Engine","description":"Content generation - 7 types, 7 languages"},{"name":"Comment Shield","description":"Comment analysis + reply generation"},{"name":"Trend Radar","description":"Trend scanning + keyword extraction"},{"name":"Ops Report","description":"Business report generation"},{"name":"Workflow Engine","description":"Multi-step workflow execution with approval"},{"name":"Voice TTS","description":"Text-to-speech (ElevenLabs)"},{"name":"Billing","description":"Stripe checkout + subscription management"},{"name":"Webhooks","description":"Event subscription + delivery"},{"name":"Authentication","description":"API key management"},{"name":"Global Listing","description":"Korean product → global commerce listing (Shopee/Shopify/Amazon)"},{"name":"Ad Generator","description":"Ad copy + TikTok hooks + short video scripts"},{"name":"Legacy","description":"Legacy endpoints (backward compatibility)"}]}