Démarrez en 30 secondes
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://northerninference.ca/v1",
api_key=os.environ["NI_API_KEY"], # ni_live_... key from the portal
)
resp = client.messages.create(
model="claude-sonnet-4-5-20250929-t4",
max_tokens=80,
messages=[{"role": "user", "content": "Which jurisdiction am I in?"}],
)
print(resp.content[0].text)
Définissez NI_API_KEY avec votre clé ni_live_... obtenue à partir du portail. C'est le seul changement par rapport à une configuration standard du SDK Anthropic. Votre utilisation apparaît sous Usage en quelques secondes.
Pourquoi ça fonctionne
La passerelle de NI accepte les deux formats de transmission. Les clients OpenAI envoient une requête POST à /v1/chat/completions; les clients du SDK Anthropic envoient une requête POST à /v1/messages avec la forme de requête Anthropic native (aucune couche d'adaptation, aucune couche de traduction). Utilisez celui que votre code existant utilise déjà; définir base_url="https://northerninference.ca/v1" et votre clé NI est le seul changement.
Remarque : l'interface en ligne de commande Claude Code utilise ANTHROPIC_BASE_URL=https://northerninference.ca (racine de l'hôte, sans /v1). Il s'agit d'une convention de variable d'environnement propre au binaire Claude Code. Lorsque vous utilisez directement le SDK Python ou TypeScript d'Anthropic dans le code, utilisez https://northerninference.ca/v1 comme indiqué ci-dessous.
SDK Python
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://northerninference.ca/v1",
api_key=os.environ["NI_API_KEY"], # ni_live_... NI key, not an Anthropic key
)
resp = client.messages.create(
model="claude-sonnet-4-5-20250929-t4", # exact NI route (copy from /v1/models)
max_tokens=80,
messages=[{"role": "user", "content": "Which jurisdiction am I in?"}],
)
print(resp.content[0].text)
SDK TypeScript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://northerninference.ca/v1",
apiKey: process.env.NI_API_KEY!,
});
const resp = await client.messages.create({
model: "claude-sonnet-4-5-20250929-t4",
max_tokens: 80,
messages: [{ role: "user", content: "Which jurisdiction am I in?" }],
});
console.log(resp.content[0].type === "text" ? resp.content[0].text : "");
curl (forme native /v1/messages)
curl https://northerninference.ca/v1/messages \
-H "x-api-key: $NI_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-4-5-20251001-t4",
"max_tokens": 30,
"messages": [{"role": "user", "content": "hi"}]
}'
Identifiants de modèle
Les exemples ci-dessus utilisent l'identifiant de route NI exact, copié depuis /v1/models ou /api/billing/models, afin que vous contrôliez explicitement le niveau de confidentialité et la juridiction. Par commodité, la passerelle de NI associe également les identifiants de modèle natifs d'Anthropic (claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001, etc.) à un déploiement correspondant, mais il est recommandé d'utiliser la route exacte afin de toujours savoir sur quel niveau vous vous trouvez.
Sélection de la route
Le nom de modèle que vous transmettez sélectionne la route NI et donc le fournisseur, la région et la résidence qui traitent la requête. Les niveaux autorisés de votre clé API déterminent les routes qu'elle peut appeler. Copiez l'identifiant de route exact depuis /models lorsque vous avez besoin d'un fournisseur ou d'une région en particulier.
Outils, vision, diffusion en continu
Toutes les fonctionnalités natives d'Anthropic passent sans modification : tool_use, vision (blocs de contenu image), stream: true, thinking avec budgets étendus. La facturation de NI tient compte explicitement des jetons de réflexion (aucune double facturation).
Chaîne de possession sur les réponses
Mêmes en-têtes de réponse X-NI-* que le chemin compatible OpenAI : X-NI-Resolved-Provider, X-NI-Resolved-Region, X-NI-Resolved-Jurisdiction, X-NI-Custody-Path, etc. Que la requête d'un client aboutisse à /v1/chat/completions ou à /v1/messages, NI applique la même protection de la résidence et produit la même piste de vérification.
Utilisation des commandes ni-*
Envoyez une commande ni-* comme contenu du message lorsque vous devez examiner ou modifier votre mappage de routes sans reconstruire votre client. La passerelle intercepte la commande et répond directement (aucun appel de modèle, aucune facturation).
Commandes utiles :
ni-models: liste les routes que votre clé peut appeler, numérotées.ni-map-model 3: associe le nom de votre modèle actuel à la route 3.ni-map-model <route-id>: associe à un identifiant de route exact.ni-unmap: supprime l'association pour votre modèle actuel.ni-status: affiche vos associations de modèles actives.ni-help: liste toutes les commandes disponibles.
Les associations sont enregistrées dans le compte (toutes les clés du compte les partagent). La commande doit se trouver au début du contenu du message.
Quelque chose ne fonctionne pas comme prévu? Écrivez à support at northerninference dot ca. Le journal complet des requêtes se trouve dans votre portail, sous Usage.