Choose The Route
| Need | Route | Use this shape |
|---|---|---|
| Portable JSON object responses | /v1/chat/completions | response_format: {"type": "json_object"} |
| OpenAI-compatible function calling | /v1/chat/completions | tools: [{ "type": "function", "function": ... }] |
| OpenAI Responses tools | /v1/responses | Responses tools, tool_choice, and text fields |
| Claude-native tool use or thinking | /v1/messages | Anthropic Messages tool schema |
| Gemini function declarations or built-in tools | /v1beta/models/:model:generateContent | Gemini-native tools and content parts |
JSON Mode
For portable structured responses, start with Chat Completions JSON mode:text and json_object. json_schema, strict, and provider-specific schema enforcement may exist for some upstream routes or conversion paths, but they are not a blanket promise across every TokenLab route and model. Verify them against the selected model before relying on them.
Always parse and validate the returned JSON on your server. JSON mode improves the shape, but it does not replace application-level schema validation.
Tool Calling Loop
TokenLab does not execute your functions. Your application owns the loop:- Send messages plus tool definitions.
- Read the model response for
tool_calls,function_call, Anthropictool_use, or Gemini function call parts. - Execute the tool in your own backend.
- Append the tool result in the format required by the same route.
- Continue the conversation until the model returns a final answer.
Chat Completions Example
Schema Design
- Keep schemas small and explicit. Large nested schemas add tokens and reduce reliability.
- Prefer required fields for values your product cannot continue without.
- Use enums for closed sets that your UI or backend depends on.
- Include examples in the prompt when the model struggles with a shape.
- Treat unsupported-field errors as contract feedback. Remove the field or use the native route that documents it.
Production Checklist
- Record route, model, tool names, and sanitized schema shape in logs.
- Validate tool arguments before executing any side effect.
- Apply your own permission checks before tool execution.
- Make tool execution idempotent when a client retry can repeat the same tool call.
- Do not log secrets returned by tools into model-visible messages.
API Reference
| Topic | Reference |
|---|---|
| Multi-Format API | Multi-Format API |
| Create Chat Completion | Create Chat Completion |
| Create Response | Create Response |
| Create Message | Create Message |
| Generate Gemini Content | Generate Gemini Content |