1. Core Concepts
  2. Models

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

TypePurpose
LLMText generation, chat, reasoning
EmbeddingConverting text to vectors for RAG and semantic search
ImageImage generation for the built-in generate_image tool

​
List All Models

Returns models with pricing, context limits, and capability flags.

ParameterTypeDescription
model_typestringFilter: llm or embedding
providerstringFilter by provider name
supports_toolsbooleanFilter by tool/function calling support
supports_thinkingbooleanFilter by thinking support
supports_json_outputbooleanFilter by JSON object / structured response support
min_contextintegerMinimum context window size
max_contextintegerMaximum context window size
skipintegerPagination offset (default 0)
limitintegerMax 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

FieldTypeDescription
namestringModel name
providerstringProvider (e.g. openai, anthropic)
model_typestringllm or embedding
context_limitintegerMax context window in tokens
max_output_tokensintegerMax output tokens
supports_toolsbooleanWhether the model supports function calling
supports_thinkingbooleanWhether the model supports extended thinking/reasoning
supports_json_outputbooleanWhether the model supports JSON object output
api_modestringAPI routing hint (chat_completions, responses, etc.)
input_cost_per_1m_tokensnumberInput cost per 1M tokens (USD)
output_cost_per_1m_tokensnumberOutput 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

ParameterTypeDescription
providerstringFilter by provider
min_dimensionsintegerMinimum embedding dimensions
max_dimensionsintegerMaximum 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.

ParameterTypeDescription
providerstringFilter by provider
supports_visionbooleanFilter by vision input support
skip / limitintegerPagination
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.