Felo API PlatformFelo API Platform

자주 묻는 질문

문제 해결

인증, 모델, streaming, 작업, 속도 제한 문제를 증상별로 해결하세요.

증상부터 시작해 해결 방법을 따르세요. 대부분의 실패는 base URL, key, 모델 ID, 잔액에서 비롯됩니다.

증상별 표

증상가능한 원인해결
401 UNAUTHORIZEDkey가 없거나, 틀렸거나, 폐기되었거나, 보내지 않음Authorization: Bearer $FELO_API_KEY를 보내세요. 폐기되었다면 새 key를 만드세요
402 INSUFFICIENT_CREDITS잔액이 호출 비용을 감당하지 못함Console Billing에서 충전하세요
모든 요청에서 404base URL에 endpoint가 이미 붙이는 경로가 포함됨OpenAI 클라이언트는 https://openapi.felo.ai/api/v1, Anthropic 클라이언트는 https://openapi.felo.ai/api
특정 모델에서만 404모델 ID가 공개되지 않았거나 endpoint가 해당 모델을 제공하지 않음모델 페이지와 endpoint 문서에서 모델 ID를 확인하세요
400 model 또는 max_tokens 오류필수 필드 누락, 또는 모델이 요청 형태를 받지 않음Messages에는 max_tokens를 추가하고 지원하지 않는 필드는 제거하세요
429속도 제한 또는 업스트림 공급자 제한Retry-After를 읽으세요. 오류, 속도 제한 및 재시도 참고
5xx업스트림 또는 서비스 장애backoff와 함께 재시도하세요. 계속되면 request_id를 포함하세요
스트림은 연결되지만 아무것도 오지 않음프록시가 응답을 버퍼링하거나, 파서가 잘못된 형식을 기대함스트림을 점진적으로 읽고, 프록시에서 응답 버퍼링을 끄세요
작업이 끝나지 않음폴링 endpoint가 틀렸거나 종료 상태를 처리하지 않음작업 자체의 상태 endpoint를 폴링하고 종료 값에서 멈추세요
도구 호출이 무시됨모델이 해당 기능을 제공하지 않음카탈로그의 supported_parameters를 확인하세요
Data API가 404 반환/v1/beta prefix가 두 번 붙음참조 문서에 적힌 경로를 그대로 사용하세요

인증

폐기된 key는 key prefix를 포함한 메시지를 반환합니다.

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "API Key has been revoked (keyPrefix=...)"
}

체크리스트:

  • Model API와 Felo APIs의 헤더는 Authorization: Bearer <key>입니다.
  • Data API는 X-API-Key: <key>도 받습니다.
  • key가 따옴표로 감싸지지 않았고, 환경 변수를 복사할 때 생긴 줄바꿈이 없어야 합니다.
  • 배포 환경에 실제로 변수가 설정되어 있어야 합니다. 로컬에서 동작하는 key가 프로덕션에는 없을 수 있습니다.
  • key가 삭제되거나 교체되지 않았어야 합니다. 삭제되거나 교체된 key는 다시 볼 수 없으니 새로 만드세요.

key 생성과 제한은 인증을 참고하세요.

Base URL 함정

클라이언트올바른 base URL
OpenAI SDKhttps://openapi.felo.ai/api/v1
Anthropic SDKhttps://openapi.felo.ai/api
직접 모델 endpointhttps://openapi.felo.ai/api/v1/chat/completions, /responses, /messages
Data APIhttps://openapi.felo.ai/v1/beta
Felo /v2 APIshttps://openapi.felo.ai/v2

흔한 실수 두 가지:

  1. SDK가 이미 확장하는 base URL에 /chat/completions를 추가하는 것.
  2. Anthropic base URL을 https://openapi.felo.ai/api/v1로 설정하는 것. SDK가 /v1/messages를 붙여 요청이 /api/v1/v1/messages가 됩니다.

모델 ID 문제

모델 ID는 카탈로그의 공개 ID이며, 업스트림 공급자의 내부 이름이나 표시 이름이 아닙니다.

  • ID는 모델 페이지 또는 GET /api/v1/models에서 확인하세요.
  • 모델이 호출하는 프로토콜을 지원하는지(supported_protocols) 확인하세요.
  • 채널을 고정했다면 해당 채널이 그 모델에 대해 공개되어 있고 실행 가능한지 확인하세요. 사용할 수 없는 채널은 fallback이 아닙니다.

채널 및 공급자 라우팅을 참고하세요.

스트리밍 문제

  • stream: true는 query 파라미터가 아니라 요청 본문에 설정하세요.
  • 응답 본문을 스트림으로 읽으세요. 전체 응답을 기다리면 스트리밍의 의미가 없습니다.
  • 일부 프록시와 서버리스 플랫폼은 응답을 버퍼링합니다. 요청을 중계하는 라우트에서 버퍼링을 끄세요.
  • Chat Completions는 choices[0].message가 아니라 choices[0].delta를 스트리밍합니다. 최종 내용은 여러 chunk에 나뉘어 도착합니다.
  • 연결이 끊기면 깔끔한 종료 이벤트 없이 스트림이 끝날 수 있습니다. 끊긴 연결은 불완전한 응답으로 취급하세요.

비동기 작업 문제

  • 작업 계열에 맞는 상태 endpoint를 폴링하세요. Felo 워크플로는 GET /v2/tasks/{task_id}/status, 모델의 비디오·이미지 작업은 각자의 생성 endpoint를 사용합니다.
  • 성공뿐 아니라 실패와 만료를 포함한 모든 종료 상태에서 멈추세요.
  • 비디오 및 이미지 callback은 현재 무시됩니다. webhook을 기다리지 마세요.
  • 결과 URL은 수명이 짧을 수 있습니다. 다운로드가 만료되면 상태 endpoint에서 새 URL을 받으세요.
  • 다시 제출하기 전에 작업을 확인하세요. 실행 중인 작업을 다시 제출하면 중복이 생기고 둘 다 청구됩니다.

비동기 작업을 참고하세요.

Data API 문제

  • Data API 참조의 정확한 method 경로를 유지하세요.
  • 요청 본문은 공급자별입니다. 한 공급자에서 동작하는 필드가 다른 공급자에서도 동작한다고 보장되지 않습니다.
  • 공급자 오류는 공급자별 메시지를 담은 4xx 응답으로 올 수 있습니다. request_id와 응답 본문을 기록하세요.

보안 알림

  • API key를 브라우저 코드, 모바일 앱 번들, 공개 저장소에 넣지 마세요. 서버에 두고 요청을 프록시하세요.
  • 전체 key를 기록하지 마세요. 식별이 필요하면 prefix만 기록하세요.
  • 유출 가능성이 있으면 즉시 key를 교체하세요.

지원팀에 문의하기 전에

다음을 모으세요.

  1. endpoint와 HTTP method.
  2. HTTP 상태, code, request_id.
  3. 모델 ID 또는 작업 ID.
  4. 시간대가 포함된 타임스탬프.
  5. 비밀 정보를 제거한 최소 요청 본문.

계정 email과 함께 지원팀에 보내세요. 전체 API key는 포함하지 마세요.

관련 문서