- Core Concepts
- Models
Core Concepts
Models
Browse and query the model library
Backboard provides access to 17,000+ models from multiple providers through a single API key. The Models API lets you browse available models, check pricing, and filter by capabilities.
Model Types
| Type | Purpose |
|---|---|
| LLM | Text generation, chat, reasoning |
| Embedding | Converting text to vectors for RAG and semantic search |
| Image | Image generation for the built-in generate_image tool |
List All Models
Returns models with pricing, context limits, and capability flags.
| Parameter | Type | Description |
|---|---|---|
model_type | string | Filter: llm or embedding |
provider | string | Filter by provider name |
supports_tools | boolean | Filter by tool/function calling support |
supports_thinking | boolean | Filter by thinking support |
supports_json_output | boolean | Filter by JSON object / structured response support |
min_context | integer | Minimum context window size |
max_context | integer | Maximum context window size |
skip | integer | Pagination offset (default 0) |
limit | integer | Max results (1–500, default 100) |
import requests
headers = {"X-API-Key": "YOUR_API_KEY"}
models = requests.get(
"https://app.backboard.io/api/models",
headers=headers,
params={"model_type": "llm", "supports_tools": True, "limit": 50}
).json()
for m in models["models"]:
print(f"{m['provider']}/{m['name']} — "
f"ctx: {m['context_limit']}, "
f"thinking: {m.get('supports_thinking', False)}, "
f"in: ${m.get('input_cost_per_1m_tokens', 'N/A')}/M, "
f"out: ${m.get('output_cost_per_1m_tokens', 'N/A')}/M")
Get Model Details
model = requests.get(
"https://app.backboard.io/api/models/gpt-4o",
headers=headers
).json()
print(f"Context: {model['context_limit']}")
print(f"Max output: {model.get('max_output_tokens')}")
print(f"Input: ${model.get('input_cost_per_1m_tokens')}/M tokens")
print(f"Output: ${model.get('output_cost_per_1m_tokens')}/M tokens")
print(f"Tools: {model.get('supports_tools')}")
Model Response Fields
| Field | Type | Description |
|---|---|---|
name | string | Model name |
provider | string | Provider (e.g. openai, anthropic) |
model_type | string | llm or embedding |
context_limit | integer | Max context window in tokens |
max_output_tokens | integer | Max output tokens |
supports_tools | boolean | Whether the model supports function calling |
supports_thinking | boolean | Whether the model supports extended thinking/reasoning |
supports_json_output | boolean | Whether the model supports JSON object output |
api_mode | string | API routing hint (chat_completions, responses, etc.) |
input_cost_per_1m_tokens | number | Input cost per 1M tokens (USD) |
output_cost_per_1m_tokens | number | Output cost per 1M tokens (USD) |
List Providers
providers = requests.get(
"https://app.backboard.io/api/models/providers",
headers=headers
).json()
print(providers["providers"]) # ["openai", "anthropic", "google", ...]
Models by Provider
openai_models = requests.get(
"https://app.backboard.io/api/models/provider/openai",
headers=headers,
params={"skip": 0, "limit": 50}
).json()
Embedding Models
List All Embedding Models
| Parameter | Type | Description |
|---|---|---|
provider | string | Filter by provider |
min_dimensions | integer | Minimum embedding dimensions |
max_dimensions | integer | Maximum embedding dimensions |
embeddings = requests.get(
"https://app.backboard.io/api/models/embedding/all",
headers=headers,
params={"provider": "openai"}
).json()
for m in embeddings["models"]:
print(f"{m['name']} — dims: {m['embedding_dimensions']}, ctx: {m['context_limit']}")
Get Embedding Model Details
model = requests.get(
"https://app.backboard.io/api/models/embedding/text-embedding-3-large",
headers=headers
).json()
print(f"Dimensions: {model['embedding_dimensions']}, Context: {model['context_limit']}")
Embedding Providers
providers = requests.get(
"https://app.backboard.io/api/models/embedding/providers",
headers=headers
).json()
Image Models
Browse image generation models for image_generation: "auto" on Send Message. See Image Tool.
| Parameter | Type | Description |
|---|---|---|
provider | string | Filter by provider |
supports_vision | boolean | Filter by vision input support |
skip / limit | integer | Pagination |
images = requests.get(
"https://app.backboard.io/api/models/image/all",
headers=headers,
params={"provider": "openrouter", "limit": 20}
).json()
for m in images["models"]:
print(f"{m['provider']}/{m['name']} — cost/image: {m.get('cost_per_image')}")
Using Models in Messages
Override the model per message with llm_provider and model_name:
response = requests.post(
"https://app.backboard.io/api/threads/messages",
headers=headers,
json={
"thread_id": thread_id,
"content": "Explain quantum computing",
"llm_provider": "anthropic",
"model_name": "claude-3-5-sonnet-20241022",
"stream": False
}
)
Defaults to openai / gpt-4o if not specified. You can switch models freely within a thread.