Docs Portal
CanaryCoders AI

One API for every model you build with

Chat, vision, image, audio, embeddings and realtime, across the big providers and your own local models. One OpenAI-compatible endpoint, a queue that handles the rate limits, and usage tracking per key.

No key yet? Email contact@canarycoders.es.

Reach every backend through the same API

OpenAIAnthropicGeminixAIPerplexityElevenLabsLocal

Everything behind one key

Swap a model or a provider without touching your code.

Capabilities

Chat & reasoning

Completions and streaming across OpenAI, Anthropic, Gemini, xAI and Perplexity. Same request shape for all of them.

Vision

Object and zero-shot detection, face detection and blur, plus image understanding through the same gateway.

Image & video

Generate images and video with Imagen, Veo, gpt-image and Grok, billed per image and per second.

Audio

Text-to-speech, transcription, sound effects and music through ElevenLabs and local MLX voices.

Embeddings & RAG

Transient embeddings on EU-local models. You keep the vectors; the gateway never stores your documents.

Realtime & voice agents

Ephemeral-token brokers for OpenAI Realtime and ElevenLabs agents. The client opens WebRTC straight to the source for the lowest latency, with no audio passing through us.

Platform

OpenAI-compatible

Point an existing OpenAI client at the gateway and change the base URL. /v1/chat/completions and /v1/embeddings work unchanged.

Switch providers in seconds

When one provider has an outage, move to another by changing a single field in the request.

Queue & usage tracking

A concurrency-managed queue absorbs provider rate limits. Every request is metered, priced and billable per API key.

Built to pass your DPO's review

Operated from Spain. Enforced in the service, or on paper you can request.

No prompt storage

Prompts and outputs pass through in memory and are gone when the request completes. Usage logs hold token counts and cost, never content.

EU-only routing

Lock an API key to EU-resident providers. A request to any other provider gets a 403.

AI Act transparency

Voice agents disclose they are AI by default; generated images and audio carry a machine-readable marking (Article 50).

GDPR processor terms

Article 28 DPA, published sub-processor list, transfer impact assessments and 48-hour breach notification come with the contract.

ISO 27001-aligned

Documented ISMS, risk register and a statement of applicability across all 93 controls.

No lock-in

Export usage data and your custom models in machine-readable formats. No switching or egress fees.

Drop-in, not a rewrite

Keep the OpenAI SDK you already use. Change the base URL and prefix the model with its provider. Streaming, tools and usage accounting come along for free.

  • provider/model naming, so one client reaches every backend
  • Async jobs for long media work: enqueue, poll, collect
  • Per-key usage and cost in the customer portal
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.ai.canarycoders.es/v1",
  apiKey: process.env.CANARY_API_KEY,
});

// Same call for any provider. Switch the model string.
const res = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-4-5",
  messages: [{ role: "user", content: "Summarise this in one line." }],
});

Ship your first request

Read the quick start, or email us for an API key and a model that fits your data.