Skip to main content

Overview

LemonData exposes multiple API formats so common coding tools, SDKs, and frameworks can integrate with minimal glue code. This page is intentionally narrower than a marketing matrix:
  • Supported means we document a concrete setup path and LemonData exposes the protocol shape that path expects.
  • Strong native path means the repo also has direct adapter or request-format evidence for that protocol family.
  • Best-effort means the integration can work, but the upstream client does not treat this custom gateway workflow as a stable contract.
Unsupported fields are not handled uniformly. On compatibility routes, some fields are ignored or normalized. On native Responses paths, unsupported fields can return explicit 400 or 503 errors when the selected model or routed channel does not support the required passthrough behavior.

Supported API Formats

EndpointFormatUse Case
/v1/chat/completionsOpenAI ChatUniversal compatibility
/v1/responsesOpenAI ResponsesStateful conversations
/v1/messagesAnthropic MessagesClaude native features
/v1beta/models/:model:generateContentGoogle GeminiGemini native features

IDE & CLI Compatibility

Documented Tool Paths

ToolSupport LevelFormatNotes
CursorSupported with limitsOpenAI-compatibleWorks for BYOK standard chat/editor flows, not as a replacement for Cursor-managed features like Tab Completion
Claude Code CLIStrong native pathAnthropicNative /v1/messages route with adapter coverage for thinking and tool_choice
Codex CLISupported with model/channel limitsOpenAI ResponsesBest when configured for /v1/responses; some Responses-native fields require native passthrough support from the selected model and channel
Gemini CLIBest-effort / experimentalGeminiCustom LemonData base URL flow is not a stable upstream contract
OpenCodeSupportedOpenAI-compatibleUse an OpenAI-compatible provider by default; move to a Responses-based provider only when you explicitly need it
Other OpenAI-compatible editors and agent tools often work with the same base URL pattern, but this repo does not currently maintain tool-specific regression coverage for Windsurf, Aider, Continue.dev, Cline/Roo Code, GitHub Copilot, and similar clients.

Configuration Examples

Base URL: https://api.lemondata.cc/v1
API Key: sk-your-lemondata-key
Cursor uses Anthropic-style tool format internally. LemonData supports both:
  • OpenAI format: { type: "function", function: { name, parameters } }
  • Anthropic format: { name, input_schema } (no type field)

SDK Compatibility

Documented SDK & Framework Paths

SDK / FrameworkLanguageSupport LevelNotes
OpenAI SDKPython/JS/GoSupported core pathChat Completions, Embeddings, and common Responses workflows are documented; some Responses-native-only fields depend on model/channel passthrough support
Anthropic SDKPython/JSStrong native pathNative Messages route with direct evidence for tools, thinking, and prompt caching
Vercel AI SDKTypeScriptRecommended integration patternPrefer @ai-sdk/openai-compatible; use @ai-sdk/openai only when you explicitly want Responses-native behavior
LangChainPython/JSSupported standard surfacesChatOpenAI and OpenAIEmbeddings are the intended scope; vendor-native extras are out of scope
LlamaIndexPythonSupported via OpenAILikeUse OpenAILike, not the built-in OpenAI classes, for third-party gateways such as LemonData
Dify-Supported with scope limitsOpenAI provider and chat-completions-oriented flows are the intended path; not a fit for Codex-specific Responses or WebSocket behavior

Chat Completions Parameters

Core Parameters

ParameterTypeDescription
modelstringModel identifier (required)
messagesarrayConversation messages (required)
max_tokensintegerMaximum output tokens
temperaturenumberSampling temperature (0-2)
top_pnumberNucleus sampling (0-1)
streambooleanEnable streaming

Tool Calling

{
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": { "type": "string" }
          }
        },
        "strict": true
      }
    }
  ],
  "tool_choice": "auto",
  "parallel_tool_calls": true
}

Tool Choice Options

FormatExampleDescription
String"auto", "none", "required"Simple selection
OpenAI Object{ "type": "function", "function": { "name": "fn" } }Force specific function
Anthropic Object{ "type": "tool", "name": "fn", "disable_parallel_tool_use": true }Anthropic native format

Advanced Parameters

ParameterTypeDescription
stream_optionsobject{ include_usage: true } for token counts
reasoning_effortstring"low", "medium", "high" for reasoning-enabled GPT-5 models
service_tierstring"auto" or "default"
seedintegerDeterministic outputs
logprobsbooleanReturn log probabilities
top_logprobsintegerNumber of top logprobs (0-20)
logit_biasobjectToken bias map (-100 to 100)
frequency_penaltynumberRepetition penalty (-2 to 2)
presence_penaltynumberTopic penalty (-2 to 2)
stopstring/arrayStop sequences
nintegerNumber of completions (1-128)
userstringUser identifier for tracking

OpenAI Advanced Features

ParameterTypeDescription
modalitiesarray["text", "audio"] for multimodal
audioobjectAudio output config (voice, format)
predictionobjectPredicted output for faster completion
metadataobjectKey-value pairs for tracking
storebooleanStore for later retrieval

Provider-Specific Options

{
  "anthropic_options": {
    "thinking": {
      "type": "enabled",
      "budget_tokens": 10000
    },
    "prompt_caching": true
  },
  "google_options": {
    "safety_settings": [...],
    "google_search": true,
    "code_execution": true
  }
}

Anthropic Messages Parameters

Core Parameters

ParameterTypeDescription
modelstringModel identifier
messagesarrayConversation messages
max_tokensintegerMaximum output (up to 128000)
systemstring/arraySystem prompt
streambooleanEnable streaming

Tool Calling

{
  "tools": [
    {
      "name": "get_weather",
      "description": "Get weather",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": { "type": "string" }
        }
      }
    }
  ],
  "tool_choice": {
    "type": "auto",
    "disable_parallel_tool_use": false
  }
}

Extended Thinking

{
  "model": "claude-opus-4-6",
  "thinking": {
    "type": "enabled",
    "budget_tokens": 10000
  }
}

Responses API Parameters

Core Parameters

ParameterTypeDescription
modelstringModel identifier
inputstring/arrayInput content
instructionsstringSystem instructions
max_output_tokensintegerMaximum output tokens
previous_response_idstringContinue conversation

Advanced Parameters

ParameterTypeDescription
truncation_strategystring"auto" or "disabled"
includearray["reasoning.encrypted_content"]
reasoning_effortstringFor reasoning models
service_tierstringPriority tier

Tool Format

Supports both OpenAI and Anthropic tool formats:
// OpenAI format
{ "type": "function", "name": "fn", "parameters": {...} }

// Anthropic format (Cursor compatibility)
{ "name": "fn", "input_schema": {...} }

Gemini API Parameters

Core Parameters

ParameterTypeDescription
contentsarrayConversation content
systemInstructionobjectSystem prompt
generationConfigobjectGeneration settings

Tools

{
  "tools": [{
    "functionDeclarations": [{
      "name": "search",
      "description": "Search the web",
      "parameters": {...}
    }],
    "codeExecution": {},
    "googleSearch": {}
  }],
  "toolConfig": {
    "functionCallingConfig": {
      "mode": "AUTO"
    }
  }
}

Safety Settings

{
  "safetySettings": [
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    }
  ]
}

Additional Parameters

ParameterTypeDescription
cachedContentstringCached content reference
responseMimeTypestring"text/plain" or "application/json"
responseSchemaobjectJSON schema for structured output

Streaming

All endpoints support Server-Sent Events (SSE) streaming:
# Chat Completions
curl https://api.lemondata.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -d '{"model": "gpt-4o", "messages": [...], "stream": true}'

# With usage tracking
-d '{"...", "stream_options": {"include_usage": true}}'

Error Handling

LemonData returns OpenAI-compatible error responses:
{
  "error": {
    "message": "Invalid API key",
    "type": "invalid_api_key",
    "code": "invalid_api_key"
  }
}
See Error Handling Guide for details.

Best Practices

All schemas use .passthrough() - unknown parameters are forwarded to upstream providers.
Enable stream_options.include_usage for accurate token counts in streaming responses.
Match your SDK’s expected format. LemonData accepts both OpenAI and Anthropic formats.