Documentation

Quickstart — premier appel API en 5 minutes

De l'inscription au premier chat completion fonctionnel. Suivez les 4 étapes ci-dessous.

  1. 1. Créer votre compte

    Inscription gratuite en 30 secondes. Plan Free permanent (5 000 tokens/mois, hard cap, sans CB).

  2. 2. Top-up (optionnel)

    Si vous prévoyez plus de 5K tokens/mois, choisissez un plan Starter / Pro / Business depuis la console. Paiement via SecuCFO.

  3. 3. Générer une clé API

    Console → API Keys → Nouvelle clé. Format : `sk-secuai-...`. Copiez-la, elle ne sera plus affichée. Utilisez les virtual keys par projet pour isoler quotas et budgets.

  4. 4. Premier appel — chat completion sur GPU souverain QC

    Endpoint OpenAI-compatible. Démarrez avec `secuai-local-large` (Qwen3.5-35B sur V100S à OVH Beauharnois, 100 % souverain Québec) — le modèle souverain est accessible dès le plan Pro. `secuai-claude-haiku` est inclus sur le plan Free pour tester sans engagement.

Exemples multi-langage

Choisissez le langage qui vous convient — la requête HTTP est identique. Modèle utilisé : `secuai-local-large` (GPU V100S, OVH Beauharnois, 100 % souverain Québec).

curlbash
curl https://api.secuai.ca/v1/chat/completions \
  -H "Authorization: Bearer sk-secuai-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "secuai-local-large",
    "messages": [{"role": "user", "content": "Bonjour"}]
  }'
Python (openai SDK)python
from openai import OpenAI

client = OpenAI(
    api_key="sk-secuai-...",
    base_url="https://api.secuai.ca/v1",
)

# secuai-local-large = Qwen3.5-35B sur GPU V100S
# à OVH Beauharnois (Québec, 100 % souverain).
resp = client.chat.completions.create(
    model="secuai-local-large",
    messages=[{"role": "user", "content": "Bonjour"}],
)

print(resp.choices[0].message.content)
Node / fetchjavascript
const res = await fetch("https://api.secuai.ca/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SECUAI_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    // secuai-local-large = Qwen3.5-35B sur V100S Québec
    model: "secuai-local-large",
    messages: [{ role: "user", content: "Bonjour" }],
  }),
});

const data = await res.json();
console.log(data.choices[0].message.content);
Go (sashabaranov/go-openai)go
package main

import (
    "context"
    "fmt"
    "github.com/sashabaranov/go-openai"
)

func main() {
    cfg := openai.DefaultConfig("sk-secuai-...")
    cfg.BaseURL = "https://api.secuai.ca/v1"
    client := openai.NewClientWithConfig(cfg)

    resp, _ := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            // secuai-local-large = Qwen3.5-35B sur V100S Québec
            Model: "secuai-local-large",
            Messages: []openai.ChatCompletionMessage{
                {Role: "user", Content: "Bonjour"},
            },
        },
    )
    fmt.Println(resp.Choices[0].Message.Content)
}

Streaming SSE

Pour les réponses temps réel, ajoutez `stream: true`.

from openai import OpenAI

client = OpenAI(
    api_key="sk-secuai-...",
    base_url="https://api.secuai.ca/v1",
)

stream = client.chat.completions.create(
    model="secuai-claude-sonnet",
    messages=[{"role": "user", "content": "Explique la Loi 25"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.content:
        print(delta.content, end="", flush=True)

Prêt à essayer ?

5 000 tokens gratuits chaque mois, sans carte de crédit. Plan Free permanent.