# Terminaili Docs Terminaili provides OpenAI-compatible API access for coding agents and apps. You need three things: - Base URL: https://api.terminaili.com/v1 - API key: $TERMINAILI_API_KEY - Model id: ipop/coder-balanced Canonical links: - Quickstart: https://terminaili.com/docs - API reference: https://terminaili.com/docs/reference - Guides: https://terminaili.com/docs/guides - Integrations: https://terminaili.com/docs/integrations - Plain text docs: https://terminaili.com/docs.txt - LLM entrypoint: https://terminaili.com/llms.txt - OpenAPI JSON: https://api.terminaili.com/v1/openapi.json Authentication: Authorization: Bearer $TERMINAILI_API_KEY x-api-key: $TERMINAILI_API_KEY Keep keys in server-side environment variables, workers, CLIs, or CI secrets. Chat completions endpoint: - POST /v1/chat/completions First API call: ```bash curl https://api.terminaili.com/v1/chat/completions \ -H "Authorization: Bearer $TERMINAILI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "ipop/coder-balanced", "messages": [{ "role": "user", "content": "Hello from Terminaili." }] }' ``` Environment: ```bash export TERMINAILI_API_BASE_URL="https://api.terminaili.com/v1" export TERMINAILI_API_KEY="replace-me" export OPENAI_BASE_URL="https://api.terminaili.com/v1" export OPENAI_API_KEY="$TERMINAILI_API_KEY" export TERMINAIL_API_KEY="$TERMINAILI_API_KEY" export OPENAI_MODEL="ipop/coder-balanced" ``` Streaming body: ```json { "model": "ipop/coder-balanced", "stream": true, "stream_options": { "include_usage": true }, "messages": [{ "role": "user", "content": "Stream a short answer." }] } ``` Tool call body: ```json { "model": "ipop/coder-balanced", "messages": [{ "role": "user", "content": "What is the weather in SF?" }], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Get current weather by city.", "parameters": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] } } } ] } ```