Quick Start
The production API base is https://llmsleuth.com. Use API keys from your dashboard. Local and preview domains should not be used in documentation or customer integrations.
curl https://llmsleuth.com/api/v1/query \
-H "Authorization: Bearer asc_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"query": "What is the best lead scraping tool?",
"runs": [
{ "provider": "openai", "model": "gpt-5.6-sol" },
{ "provider": "anthropic", "model": "claude-sonnet-5" },
{ "provider": "gemini", "model": "gemini-3.5-flash" }
]
}'Authentication
Send your key as a bearer token. Keys start with asc_. The x-api-key header is also accepted. Provider API keys stay on the LLM Sleuth server.
Authorization: Bearer asc_your_api_keyRun Query
/api/v1/query| Field | Type | Description |
|---|---|---|
| query | string | The question or research prompt to run. Keep it at or below 4,000 characters. |
| runs | array | One to 16 { provider, model } targets using IDs from GET /api/v1/models. |
| providers | array | Legacy shorthand that runs each selected provider's current default model. |
Send either runs or providers, not both. Invalid or unavailable model IDs return a 400; they are never replaced silently.
List Available Models
/api/v1/modelsUse this endpoint as the source of truth for selectable model IDs, display names, default models, and credit costs.
curl https://llmsleuth.com/api/v1/models \
-H "Authorization: Bearer asc_your_api_key"{
"object": "list",
"models": [
{
"id": "gpt-5.6-sol",
"provider": "openai",
"name": "GPT-5.6 Sol",
"credit_cost": 2,
"is_default": true
}
]
}Providers
| ID | Provider | Search capture |
|---|---|---|
| openai | ChatGPT / OpenAI | Captures Responses API web search calls and source annotations. |
| anthropic | Claude / Anthropic | Captures web_search tool inputs and citations when returned. |
| gemini | Gemini / Google | Captures grounding search queries and grounding chunks when returned. |
| perplexity | Perplexity / Sonar | Captures Sonar citations and search_results when returned. |
Response Shape
The response includes an execution_id. You can open that run later in the dashboard history. Always inspect each results[].ok value because individual providers can fail independently.
{
"execution_id": "7f79c814-1112-4a94-9bb4-719d5ccf5e98",
"query": "What is the best lead scraping tool?",
"runs": [
{ "provider": "openai", "model": "gpt-5.6-sol" },
{ "provider": "anthropic", "model": "claude-sonnet-5" },
{ "provider": "gemini", "model": "gemini-3.5-flash" }
],
"providers": ["openai", "anthropic", "gemini"],
"credits_used": 4,
"results": [
{
"provider": "openai",
"label": "ChatGPT / OpenAI",
"ok": true,
"model": "gpt-5.6-sol",
"generatedQueries": ["best lead scraping tools 2026"],
"sources": [{ "url": "https://example.com/source" }],
"sourcePreviews": [
{
"url": "https://example.com/source",
"fetchStatus": 200,
"headings": [{ "level": 1, "text": "Best Lead Tools" }]
}
],
"answer": "Markdown answer text..."
}
]
}Errors
| Field | Type | Description |
|---|---|---|
| 401 | auth | Missing or invalid API key. |
| 402 | credits | Not enough credits for the selected models. |
| 400 | input | Invalid JSON, missing query, unavailable model, or invalid run selection. |
| 500 | server | Provider or persistence failure. |
Each model declares its credit cost in the model catalog. A request is charged the sum of its selected model costs.