---
title: "OpenAI-compatible API hosted in Canada"
description: "Augure is an OpenAI-compatible chat completions API with data stored in Canada and inference on Canadian infrastructure and vetted EU partners, never US providers. Change the base URL and the model id; keep your SDK."
canonical: https://augureai.ca/docs/openai-compatible
updated: 2026-10-27
---

# OpenAI-compatible API hosted in Canada

Augure's developer API accepts the OpenAI chat completions request format at `https://api.augureai.ca/v1`. The OpenAI SDKs, and every tool built on them, work against it after two changes: the base URL and the model id. Customer data is stored in Canada. Inference runs on Canadian infrastructure and with vetted EU partners under zero-data-retention agreements, and is never routed to providers in the United States. Augure is a Canadian company with no US corporate parent and no US investors. Prices are in Canadian dollars.

This page answers the question developers ask first: "Is there an OpenAI-compatible API hosted in Canada, and what changes when I point my code at it?"

## The two-line switch

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.augureai.ca/v1",   # was https://api.openai.com/v1
    api_key=os.environ["AUGURE_API_KEY"],    # aug_sk_live_...
)
resp = client.chat.completions.create(
    model="ossington-5",                     # was gpt-4o, gpt-5, ...
    messages=[{"role": "user", "content": "Summarise this clause in one sentence."}],
)
print(resp.choices[0].message.content)
print(resp.model_extra["_augure"]["inference_region"])   # e.g. ca-on-toronto
```

```javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.augureai.ca/v1",
  apiKey: process.env.AUGURE_API_KEY,
});
const resp = await client.chat.completions.create({
  model: "tofino-3",
  messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);
```

Keys are self-serve from the [developer dashboard](https://chat.augureai.ca/developers/dashboard) (add a payment method, generate a key, set a monthly spend limit). Usage is metered and billed monthly in CAD.

## What is compatible

| OpenAI feature | On Augure |
| --- | --- |
| `POST /v1/chat/completions` | Same request and response shape, plus an `_augure` block with `gateway_region`, `inference_region` and `request_id`. |
| `GET /v1/models` | Lists the Augure model ids. |
| `Authorization: Bearer <key>` | Same header. |
| Streaming (`stream: true`, SSE, `stream_options.include_usage`) | Supported. Errors mid-stream arrive as an error event followed by `data: [DONE]`. |
| Tools / function calling | Supported. |
| `response_format` (`json_object`, `json_schema`) | Supported. On reasoning models it is enforced by a prompt-level directive: validate the result and retry once on failure. Not combined with `tools` on those models. |
| Images (`image_url` parts) | Supported on every model; with `model: "auto"` the image is read by Augure's vision engine in Calgary. |
| PDFs (`file` parts, base64) | Supported: the text layer is extracted on the gateway, scanned pages are OCR'd. |
| `reasoning_effort` | Supported on the reasoning tiers. `"none"` turns thinking off on `ossington-5`, `ossington-4-1` and `ossington-4` (10 to 50 times faster on short mechanical tasks). |
| `max_tokens` | Global cap 32,768 (16,384 on `tofino-3`). Omit it on reasoning models. |
| Model aliases | `gpt-4` and `gpt-4o` are served by `ossington-4`; `gpt-4o-mini` and `gpt-3.5-turbo` by `tofino-3`. An alias is a compatibility surface, not a promise of a particular backing model. |
| Web search | Not a built-in chat tool. A standalone `POST /v1/search` (Augure's self-hosted search, `en` or `fr`) returns results you pass into your next message. |
| Link reading | A URL in the latest user message is fetched server-side and its text handed to the model; pages read are listed in `_augure.fetched_urls`. |
| Memories | `GET`/`POST`/`PATCH`/`DELETE /v1/memories`, the same per-user memory store the Augure apps use (needs a key tied to a user account). |
| Embeddings, audio, image generation, assistants, batch endpoints | Not documented on the chat completions surface. See the [API reference](https://augureai.ca/docs/api) for the current endpoint list. |

## Which model to send

| Model id | Context | Max output | CAD per 1M in / out | Use it for |
| --- | --- | --- | --- | --- |
| `ossington-5` | 256K | 32,768 | $1.50 / $3.00 | Default. Reasoning, code, structured output. Cached input $0.60. |
| `rosedale-1` | up to 1M | 32,768 | $2.50 / $6.00 | Whole-document analysis, agent loops, Canadian inference. |
| `tofino-3` | 256K | 16,384 | $0.60 / $2.00 | Fast everyday tasks, extraction, translation. Thinking always off. Never leaves Canada. |
| `ossington-4-1` | 256K | 32,768 | $2.50 / $6.00 | Existing integrations; strong bilingual EN/FR work on Canadian infrastructure. |
| `open-glm-5-3`, `open-qwen-3.8-flash-next` | 256K | 49,152, 32,768 | $3.00 / $7.00, $2.00 / $4.00 | Augure Open (preview): open-weight models, messages reach the model unchanged, text only, Canada only. |
| `auto` | | | per model served | Let the gateway choose per request; required for the vision engine on images. |

Full table, retirement policy and aliases: [Models](https://augureai.ca/docs/models).

## Where a request runs

- The gateway is in Beauharnois, Quebec. Every response names the region that served it in `_augure.inference_region`.
- `rosedale-1`, `ossington-4-1`, `tofino-3` and the Augure Open models run on Canadian infrastructure. Some tiers and failover during outages or peak demand are served by vetted EU partners under zero data retention; a response served that way says so in `_augure.fallback`. Nothing is routed to providers in the United States.
- Organisations that need every request to stay in Canada can have their account set Canada-only: requests then stay in Canada or fail with `503 residency_unavailable`, never served elsewhere. Email enterprise@augureai.ca.
- Prompts are never logged by Augure and never used for model training. Limited US processing exists for payment card networks and email delivery only; the [privacy policy](https://augureai.ca/privacy) documents every cross-border flow.

## Tools that already work

Working configurations, each with a snippet that runs in CI against the live API:

- [OpenAI Python SDK](https://augureai.ca/docs/integrations/openai-python) · [OpenAI Node SDK](https://augureai.ca/docs/integrations/openai-node)
- [LangChain](https://augureai.ca/docs/integrations/langchain-python) · [LlamaIndex](https://augureai.ca/docs/integrations/llamaindex) · [Vercel AI SDK](https://augureai.ca/docs/integrations/vercel-ai-sdk) · [LiteLLM](https://augureai.ca/docs/integrations/litellm)
- [Cursor](https://augureai.ca/docs/integrations/cursor) · [Codex CLI](https://augureai.ca/docs/integrations/codex-cli) · [Cline](https://augureai.ca/docs/integrations/cline) · [Continue and other editors](https://augureai.ca/docs/ide)
- [Open WebUI](https://augureai.ca/docs/integrations/open-webui) · [n8n](https://augureai.ca/docs/integrations/n8n)
- Coding agents: [Augure for agents](https://augureai.ca/docs/agents) (endpoint, MCP server at `https://mcp.augureai.ca/mcp`, Augure Code, agent skill)

## Moving from another provider

Migration guides with model mappings and before/after code: [Azure OpenAI](https://augureai.ca/compare/azure-openai), [Amazon Bedrock](https://augureai.ca/compare/aws-bedrock), [Vertex AI](https://augureai.ca/compare/vertex-ai), [OpenAI](https://augureai.ca/compare/chatgpt), [Anthropic](https://augureai.ca/compare/claude), [Gemini](https://augureai.ca/compare/gemini), [Mistral](https://augureai.ca/compare/mistral), [Cohere](https://augureai.ca/compare/cohere), [OVHcloud](https://augureai.ca/compare/ovhcloud-ai-endpoints), [Ollama](https://augureai.ca/compare/ollama). Index: [augureai.ca/compare](https://augureai.ca/compare).

## Verify it from a shell

```bash
curl https://api.augureai.ca/v1/chat/completions \
  -H "Authorization: Bearer $AUGURE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"tofino-3","messages":[{"role":"user","content":"Reply with the single word: ok"}],"max_tokens":8}'
```

The response ends with an `_augure` object whose `inference_region` starts with `ca-`.

See also: [API reference](https://augureai.ca/docs/api) · [Developer program and pricing](https://augureai.ca/developers) · [Changelog](https://augureai.ca/docs/changelog) · Markdown version of this page: https://augureai.ca/docs/openai-compatible.md
