Pular para o conteúdo

API Reference

O gateway Floopy expõe uma API compatível com OpenAI. Aponte qualquer SDK da OpenAI para o gateway alterando a baseURL, e seu código existente funciona sem modificações.

Endpoint

POST https://api.floopy.ai/v1/chat/completions

Autenticação

Inclua sua API key do Floopy no header Authorization:

Authorization: Bearer <your-floopy-api-key>

Corpo da Requisição

{
"model": "gpt-4o",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Hello!" }
],
"temperature": 0.7,
"max_tokens": 1000,
"stream": false,
"inputs": { "name": "Alice" }
}

Campos

CampoTipoObrigatórioDescrição
modelstringSimID do modelo (ex.: "gpt-4o"). Separado por vírgulas para fallback: "gpt-4o,claude-sonnet-4-6"
messagesarraySimArray de objetos de mensagem com role ("system", "user", "assistant") e content (string)
temperaturenumberNão0.0-2.0. Controla a aleatoriedade. Padrão: padrão do modelo
max_tokensintegerNãoMáximo de tokens na resposta
top_pnumberNão0.0-1.0. Limite de nucleus sampling
frequency_penaltynumberNão-2.0 a 2.0. Reduz repetição de tokens
presence_penaltynumberNão-2.0 a 2.0. Incentiva novos tópicos
stoparrayNãoStrings que interrompem a geração quando encontradas
reasoning_effortstringNão"low", "medium", "high". Apenas para modelos o1/o3
response_formatobjectNãoModo JSON: {"type": "json_object"}
streambooleanNãoHabilita streaming SSE. Padrão: false
inputsobjectNãoPares chave-valor para substituição de variáveis em templates de prompt. Removido antes do envio ao provider

Corpo da Resposta (sem streaming)

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1717000000,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Hello! How can I help?" },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 8,
"total_tokens": 20
}
}

Corpo da Resposta (streaming)

Quando stream: true, o gateway retorna Server-Sent Events (SSE). Cada evento contém um chunk:

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1717000000,"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

O stream termina com:

data: [DONE]

Headers de Resposta

O gateway adiciona estes headers a toda resposta:

HeaderDescriçãoExemplo
Floopy-ProviderO provider que atendeu a requisiçãoOpenAI
Floopy-ModelO modelo que processou a requisiçãogpt-4o
Floopy-Fallback-UsedSe um provider de fallback foi usado porque o primário estava indisponíveltrue
Floopy-Reasoning-TokensNúmero de reasoning tokens usados (modelos DeepSeek)150
Floopy-Queue-TimeTempo que a requisição ficou na fila do provider, em segundos (Groq)0.5
Floopy-Prompt-TimeTempo gasto processando o prompt, em segundos (Groq)0.2
Floopy-Completion-TimeTempo gasto gerando o completion, em segundos (Groq)1.3

Formato de Resposta de Erro

Erros padrão retornam um corpo JSON:

{
"error": {
"type": "error",
"code": "ERROR_CODE",
"message": "Human-readable description"
}
}

Erros de rate limit (429) incluem um header Retry-After com o número de segundos a aguardar.

Erros de limite mensal incluem campos adicionais:

{
"error": {
"type": "error",
"code": "MONTHLY_LIMIT_EXCEEDED",
"message": "Monthly request limit reached",
"limit": 100000,
"used": 100000,
"reset_at": "2025-02-01T00:00:00Z"
}
}

Consulte Troubleshooting para uma lista completa de códigos de erro e como resolvê-los.

Feedback de Sessão

Envie feedback no nível de sessão para melhorar a qualidade do roteamento. Autenticado com a mesma API key usada para requisições de chat.

POST https://api.floopy.ai/v1/feedback

Corpo da Requisição

{
"session_id": "sess_abc123",
"score": 8,
"useful": true
}

Campos

CampoTipoObrigatórioDescrição
session_idstringSimO ID da sessão enviado no header floopy-session-id durante as requisições de chat
scoreintegerSimScore NPS de 0 a 10. 0-6 = detrator, 7-8 = passivo, 9-10 = promotor
usefulbooleanSimSe a conversa foi útil para o usuário final

Resposta

Retorna 200 OK com um objeto JSON vazio em caso de sucesso.

{}

Consulte Feedback para detalhes sobre como o feedback impulsiona a otimização de roteamento.

Health Endpoints

Use estes endpoints para monitorar o status do gateway e suas dependências.

EndpointDescrição
GET /healthProbe de liveness (sempre 200)
GET /health/readyProbe de readiness (verifica Redis, ClickHouse, Qdrant)
GET /health/redisVerificação de conectividade com Redis
GET /health/clickhouseVerificação de conectividade com ClickHouse
GET /health/qdrantVerificação de conectividade com Qdrant
GET /health/providersEstado do circuit breaker por provider