API Documentation

OpenAI-compatible. Drop-in replacement.

Logfare is 100% OpenAI API compatible. Point any OpenAI-compatible client at https://logfare.ai/v1 and it just works. No SDK changes needed.

Authentication

All requests require an API key. Get one by registering for a free account.

Send your key in the Authorization header as a Bearer token:

Header
Authorization: Bearer YOUR_API_KEY

Base URL

All API endpoints are under https://logfare.ai/v1

MethodEndpointDescription
POST/v1/chat/completionsChat completions (streaming supported)
POST/v1/completionsLegacy text completions
POST/v1/messagesAnthropic-style messages API
POST/v1/responsesOpenAI Responses API
POST/v1/images/generationsImage generation
POST/v1/images/editsImage editing
POST/v1/audio/speechText-to-speech
POST/v1/audio/transcriptionsSpeech-to-text
POST/v1/embeddingsText embeddings
GET/v1/modelsList available models
GET/v1/statusSystem + model health status

Chat Completions

POST /v1/chat/completions

Standard OpenAI chat completions format. Streaming via SSE is supported — set "stream": true.

ParameterTypeRequiredDescription
modelstringYesModel ID (see /models)
messagesarrayYesArray of {role, content} message objects
streambooleanNoStream response via SSE (default: false)
temperaturenumberNoSampling temperature (default: 1.0)
max_tokensintegerNoMax tokens to generate
top_pnumberNoNucleus sampling (default: 1.0)
stopstring/arrayNoStop sequence(s)
curl
curl https://logfare.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "kimi-k2.5",
  "messages": [
    {"role": "user", "content": "Hello!"}
  ]
}'
Python
from openai import OpenAI

client = OpenAI(
    base_url="https://logfare.ai/v1",
    api_key="YOUR_API_KEY",
)

response = client.chat.completions.create(
    model="kimi-k2.5",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
Python (streaming)
from openai import OpenAI

client = OpenAI(
    base_url="https://logfare.ai/v1",
    api_key="YOUR_API_KEY",
)

stream = client.chat.completions.create(
    model="kimi-k2.5",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Anthropic Messages API

POST /v1/messages

Anthropic-compatible messages endpoint. Use the same request format as the Anthropic API — model, messages, max_tokens, system, etc. The x-api-key header or Authorization: Bearer both work.

curl
curl https://logfare.ai/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
  "model": "claude-sonnet-4",
  "max_tokens": 1024,
  "messages": [
    {"role": "user", "content": "Hello!"}
  ]
}'

Image Generation

POST /v1/images/generations

ParameterTypeRequiredDescription
modelstringYesImage model ID (e.g. flux-2-pro)
promptstringYesText description of the image
nintegerNoNumber of images (default: 1)
sizestringNoImage dimensions as WxH (e.g. 1024x768). Parsed and sent as width/height to the provider.
stepsintegerNoNumber of diffusion steps (model-dependent). Higher = more detail, slower. Mapped to num_steps for providers that require it.
response_formatstringNob64_json or url (default: b64_json)
curl
curl https://logfare.ai/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "flux-2-pro",
  "prompt": "a cat sitting on a windowsill, warm afternoon light",
  "size": "1024x1024",
  "n": 1
}'

Embeddings

POST /v1/embeddings

ParameterTypeRequiredDescription
modelstringYesEmbedding model ID
inputstring/arrayYesText or array of texts to embed

Text to Speech

POST /v1/audio/speech

ParameterTypeRequiredDescription
modelstringYesTTS model ID
inputstringYesText to synthesize
voicestringNoVoice name (model-dependent)

Audio Transcriptions

POST /v1/audio/transcriptions

Send an audio file as multipart/form-data. Returns transcribed text.

List Models

GET /v1/models

Returns all active public models. No authentication required.

curl
curl https://logfare.ai/v1/models

Errors

Errors follow the OpenAI API error format:

Error response
{
  "error": {
    "message": "Invalid API key",
    "type": "authentication_error",
    "code": null
  }
}
StatusTypeMeaning
401authentication_errorMissing or invalid API key
403permission_errorModel not available for your key
404not_found_errorModel not found
429rate_limit_errorRate limited (rare — we don't rate-limit users)
500server_errorUpstream provider error — try again or try another model
503server_errorService temporarily unavailable

Account API

Manage your account programmatically (no web UI needed).

MethodEndpointDescription
POST/v1/auth/registerCreate account, get API key
POST/v1/auth/loginLogin, get API key
GET/v1/auth/meGet current user info
POST/v1/auth/regenerate-keyGenerate new API key
POST/v1/auth/consentSet eval-dataset consent
DELETE/v1/me/deleteDelete account
Register
curl -X POST https://logfare.ai/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
  "username": "myuser",
  "password": "mypassword"
}'