API Documentation

Shannon API

OpenAI & Anthropic compatible AI API with function calling, web search, and structured outputs.

🧭 Overview

Public docs

Everything you need to ship with Shannon's OpenAI and Anthropic compatible API. Browse publicly, then sign in to generate or rotate your key.

Base URLOpenAI-Compatible
http://127.0.0.1:5001/shannonai/us-central1/v1/chat/completions

Use the Chat Completions API with function calling and streaming.

Base URLAnthropic-Compatible
http://127.0.0.1:5001/shannonai/us-central1/v1/complete

Claude Messages format with tools and anthropic-version header.

HeadersAuthentication
Authorization: Bearer <your-key>

Or X-API-Key with anthropic-version for Claude-style calls.

AccessStatus
Public docs · Key required to call

Streaming, function calling, structured outputs, web search.

Launch checklist
  • Point your SDK at Shannon
    Set baseURL to the OpenAI or Anthropic endpoints above.
    Setup
  • Attach your API key
    Use Bearer tokens for OpenAI calls or X-API-Key + anthropic-version.
    Security
  • Enable tools & structured outputs
    Supports OpenAI tools/functions, JSON schema, and built-in web_search.
    Capabilities
  • Track usage
    View token and search consumption on this page when signed in to your account.
    Analytics
Get a key

This page stays public. Use it to explore endpoints, then sign in to generate or rotate your API key and monitor usage.

⚡ Capabilities at a Glance

OpenAI + Anthropic

Drop-in replacement for OpenAI and Anthropic APIs with native support for tools, structured outputs, and built-in web search.

🔌

Drop-in Replacement

Compatible

Works with OpenAI and Anthropic SDKs. Just change the base URL.

🛠️

Function Calling

Tools

Define tools, let Shannon call them. Supports auto, forced, and none modes.

🔍

Built-in Web Search

Search

Real-time web search with source citations. Automatically available.

📋

Structured Outputs

JSON

JSON mode and JSON Schema enforcement for reliable data extraction.

🔄

Multi-turn Tools

Agentic

Automatic function execution loops. Up to 10 iterations per request.

Streaming

Fast

Server-sent events for real-time token streaming.

🚀 Quick Start

5 minutes

Get started in three steps. Shannon mirrors OpenAI and Anthropic clients, so you only need to swap the base URL and attach your API key.

1

Set your base URL

Use the OpenAI-compatible endpoint for chat completions and tools.

http://127.0.0.1:5001/shannonai/us-central1/v1/chat/completions
2

Add your API key

Use Bearer auth in the Authorization header to authenticate every request.

http
Authorization: Bearer YOUR_API_KEY
3

Send your first message

Pick a language example and swap in your key. Streaming and tools are on.

python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="http://127.0.0.1:5001/shannonai/us-central1/v1"
)

response = client.chat.completions.create(
    model="shannon-balanced-grpo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)

Response format

Success Response
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "shannon-balanced-grpo",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! I'm Shannon, your AI assistant. How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 18,
    "total_tokens": 43
  }
}

🔐 Authentication

All API requests require authentication using your Shannon API key. Sign in to get your API key.

OpenAI Format (Recommended)

Use the Authorization header with Bearer token:

http
Authorization: Bearer YOUR_API_KEY

Anthropic Format

Use the X-API-Key header along with the version header:

http
X-API-Key: YOUR_API_KEY
anthropic-version: 2023-06-01
💡 Tip: Your Shannon API key works with both OpenAI and Anthropic SDKs. No need for separate keys!

🤖 Models

Shannon offers multiple models optimized for different use cases. All models support function calling, structured outputs, and web search.

shannon-balanced-grpoBalanced

Fast, efficient responses for everyday tasks

Context128K
Best ForChat, Q&A, Content Generation
shannon-deep-dapoDeep

Advanced reasoning for complex problems

Context128K
Best ForAnalysis, Research, Complex Tasks

Model Selection

Specify the model in your request:

json
{
  "model": "shannon-balanced-grpo",  // or "shannon-deep-dapo"
  "messages": [...]
}

🛠️ Function Calling

Define tools that Shannon can call to perform actions or retrieve information. Supports OpenAI's tools format and legacy functions format.

Defining Tools

python
from openai import OpenAI
import json

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="http://127.0.0.1:5001/shannonai/us-central1/v1"
)

# Define available tools/functions
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "City name, e.g., 'Tokyo'"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"]
                    }
                },
                "required": ["location"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="shannon-balanced-grpo",
    messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
    tools=tools,
    tool_choice="auto"
)

# Check if model wants to call a function
if response.choices[0].message.tool_calls:
    tool_call = response.choices[0].message.tool_calls[0]
    print(f"Function: {tool_call.function.name}")
    print(f"Arguments: {tool_call.function.arguments}")

Tool Choice Options

"auto"Model decides whether to call a function (default)
"none"Disable function calling for this request
{"type": "function", "function": {"name": "..."}}Force a specific function call

Function Call Response

When model calls a function
{
  "id": "chatcmpl-xyz",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"location\": \"Tokyo\", \"unit\": \"celsius\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ]
}

📋 Structured Outputs

Force Shannon to respond with valid JSON that matches your schema. Perfect for data extraction, API integrations, and automation workflows.

JSON Schema Mode

python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="http://127.0.0.1:5001/shannonai/us-central1/v1"
)

# Force JSON output with schema
response = client.chat.completions.create(
    model="shannon-balanced-grpo",
    messages=[
        {"role": "user", "content": "Extract: John Doe, 30 years old, engineer"}
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "person_info",
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "age": {"type": "integer"},
                    "occupation": {"type": "string"}
                },
                "required": ["name", "age", "occupation"]
            }
        }
    }
)

import json
data = json.loads(response.choices[0].message.content)
print(data)  # {"name": "John Doe", "age": 30, "occupation": "engineer"}

Response Format Options

{"type": "json_object"}Force valid JSON output (no specific schema)
{"type": "json_schema", "json_schema": {...}}Force output matching your exact schema

🔀 Anthropic Format

Shannon also supports Anthropic's Messages API format for tool use. Use the Anthropic SDK with Shannon's endpoint.

Endpoint

http://127.0.0.1:5001/shannonai/us-central1/v1/complete

Anthropic SDK Example

python
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="http://127.0.0.1:5001/shannonai/us-central1"
)

response = client.messages.create(
    model="shannon-balanced-grpo",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    # Tool use (Anthropic format)
    tools=[{
        "name": "web_search",
        "description": "Search the web",
        "input_schema": {
            "type": "object",
            "properties": {
                "query": {"type": "string"}
            },
            "required": ["query"]
        }
    }]
)

print(response.content[0].text)
📌 Required Header: Anthropic format requires theanthropic-version: 2023-06-01 header.

⚠️ Error Handling

Shannon uses standard HTTP status codes and returns detailed error messages in both OpenAI and Anthropic formats.

Error Codes

400Bad RequestInvalid request format or parameters
401UnauthorizedInvalid or missing API key
402Quota ExceededToken or search quota exceeded
429Rate LimitedToo many requests, slow down
500Server ErrorInternal error, retry later

Error Response Format

Error Response
{
  "error": {
    "message": "Invalid API key provided",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

Ready to Build?

Get your API key and start building with Shannon AI today. Full OpenAI and Anthropic SDK compatibility.