External API limitations
Limits that apply to External API everywhere — supported models, Python runtime, libraries, input schema, and per-character caps.
These limits apply whether you configure External API in the Playground or through the API.
Supported models
External API only runs when the character's model can call tools. That depends on the path you use:
Live API (WebRTC)
OpenAI, Claude, and Gemini. Popular open-source models that support tools — including Grok and the DeepSeek family — work here too. Others may work if they support tool calling; check models.dev.
gRPC
OpenAI, Claude, and Gemini family models only.
If the model doesn't support tools, the character still chats normally — it just won't call your External API functions.
Runtime
Language
Python only ("language": "python")
Runtime
Python 3.11
Standard library
Allowed (json, datetime, math, re, urllib, and the rest of the stdlib)
Third-party packages
requests only for now
Source code size
At most 400 lines
Entry point
Must define def handle_event(inputs): (single argument; name is fixed)
Return value
JSON-serializable, usually a dict
State
No shared mutable state across calls — each run is independent
Anything outside the standard library and requests fails at runtime.
Input description
input_description is a JSON string (not a nested object in the API body). After parsing, it must look like:
Top-level keys
parameters and required are both required
Parameter names
^[a-zA-Z_][a-zA-Z0-9_]*$
Parameter fields
Each parameter needs type and description
Allowed types
string, integer, boolean, object, array
Extra keys under parameters
Not allowed
Keep descriptions concrete. The model fills arguments from that text, so vague wording produces bad calls.
Character limits
Active functions per character
At most 128
Unlink vs delete
"status": "inactive" only disconnects a character; delete removes the function from the account and every link
Related
External API (Playground) — UI setup and examples
External API (API reference) — create, list, link, unlink, delete
Last updated
Was this helpful?