Hoppa till innehållet

En rad kod, och du kör inom Europeiska unionen.

API:et är OpenAI-kompatibelt. Befintliga SDK:er, ramverk och befintlig kod fortsätter att fungera: du byter base_url och väljer en nivå i stället för ett modellnamn.

Snabbstart: ditt första API-anrop

Skapa en nyckel i din dashboard under Inställningar, API-nycklar. Du ser hemligheten exakt en gång. Därefter sparar vi bara en hash och prefixet. Lägg den i en miljövariabel, aldrig i ditt repository.

curl
curl https://api.europeanailab.eu/v1/chat/completions \
  -H "Authorization: Bearer $UNION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "eu-standard",
    "messages": [{"role": "user", "content": "Förklara omvänd skattskyldighet för moms."}]
  }'
python
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["UNION_API_KEY"],
    base_url="https://api.europeanailab.eu/v1",   # den enda raden som ändras
)

resp = client.chat.completions.create(
    model="eu-standard",
    messages=[{"role": "user", "content": "Förklara omvänd skattskyldighet för moms."}],
)
print(resp.choices[0].message.content)

Node, Go, Java eller .NET?

Alla officiella OpenAI-SDK:er fungerar: sätt bas-URL:en till https://api.europeanailab.eu/v1 och använd din Union-nyckel. Vi implementerar chat completions-kontraktet, inklusive streaming, verktyg och JSON-scheman.

Modellnivåer och kontextfönster

Du anger en nivå i fältet model, inte ett modellnamn. Då fortsätter din integration att fungera när vi byter modellen under, och det kommer vi att göra, eftersom open-weight-modeller pensioneras och blir omsprungna.

NivåKontextInput / 1 milj.Output / 1 milj.Bäst för
eu-lite131K0,40 €1,60 €Snabbt, billigt arbete: klassificering, extrahering, korta svar.
eu-standard262K0,70 €3,50 €Arbetshästen. Standard för chatten och den mesta API-trafiken.
eu-long1 000K1,00 €2,00 €Hela ärendeakter, avtal och kodbaser i en enda prompt.
eu-pro1 000K4,00 €12,00 €Tungt resonerande, agenter, komplex kod.

Går du över en nivås kontextfönster får du en 400 med maxvärdet i: vi kortar aldrig tyst av din prompt.

Strömmade svar

Streaming fungerar som du förväntar dig, med en viktig skillnad som du behöver känna till eftersom den gäller dina pengar.

Slå på include_usage

Vid OpenAI-kompatibel streaming skickar API:et som standard ingen tokenförbrukning. Utan stream_options: {"include_usage": true} kan du inte se i slutet av strömmen vad anropet kostade. Vi mäter det i vilket fall som helst: poängen är att du också ska kunna se och kontrollera det.
python
stream = client.chat.completions.create(
    model="eu-standard",
    messages=[{"role": "user", "content": "Skriv en sammanfattning."}],
    stream=True,
    # Utan detta finns inget usage-objekt och du ser inte kostnaden.
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
    if chunk.usage:                      # sista chunken
        print("\n", chunk.usage)

Avbryter du en ström halvvägs betalar du bara för det som genererats fram till dess. Om den brutna anslutningen gör att ingen usage-chunk kommer fram uppskattar vi förbrukningen och rättar den i den dagliga avstämningen med vår leverantör. En sådan rad står som estimated i din förbrukningsöversikt tills den är avstämd.

Function calling och verktyg

Verktyg följer det välkända schemat. Om en modell producerar ett verktygsanrop som inte matchar ditt schema loggar vi det: i version 1 rättar vi det inte i tysthet, eftersom att i smyg laga din output är värre än ett synligt fel.

python
tools = [{
    "type": "function",
    "function": {
        "name": "find_invoice",
        "description": "Slå upp en faktura via fakturanummer.",
        "parameters": {
            "type": "object",
            "properties": {"number": {"type": "string"}},
            "required": ["number"],
        },
    },
}]

resp = client.chat.completions.create(
    model="eu-standard", messages=messages, tools=tools
)

Strukturerad output med ett JSON schema

Skicka med ett JSON schema och validera svaret på din sida. Vårt råd: validera alltid, även när modellen oftast sköter sig.

python
resp = client.chat.completions.create(
    model="eu-standard",
    messages=[{"role": "user", "content": "Extrahera namnet och beloppet."}],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "invoice",
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "amount_eur": {"type": "number"},
                },
                "required": ["name", "amount_eur"],
            },
        },
    },
)

Svarshuvuden: kostnad, nivå och routing

Varje svar berättar vad som hände. Det är ingen extrafunktion för felsökning, det är själva poängen: du kan själv kontrollera att du fick det du betalade för.

HuvudBetydelse
X-EU-Model-TierNivån som anropet kördes på.
X-EU-RoutedFinns när anropet dirigerades om till en annan modell, med orsaken: censorship eller error.
X-EU-Degradedtrue när ersättningsmodellen är svagare eller har ett mindre kontextfönster. Du betalar då det lägre av de två priserna.
X-EU-Refusal-ClassFinns vid en vägran som vi inte kunde dirigera om, till exempel A-unrouteable när inget alternativ har tillräckligt med kontext.
X-EU-Tokens-In / -OutUppmätta tokens för det här anropet.
X-EU-Cost-EURVad det här anropet drog från ditt saldo, i euro.
X-EU-Balance-EURDitt återstående saldo efter det här anropet.

Rate limits och kostnadstak

Det finns en gräns per nyckel och per konto, plus de tak du sätter själv. De senare betyder mer än det låter: utan tak kan en läckt nyckel eller en oändlig loop i din egen kod tömma ett saldo över en natt.

  • Anrop per minut, per nyckel och per konto.
  • Dags- och månadstak i euro, inställbart per nyckel.
  • Nya konton: högst 25 € per dag de första 48 timmarna, oavsett saldo.
  • Ser vi mer än tio gånger ditt veckosnitt inom en timme pausar vi nyckeln automatiskt och mejlar dig. Hellre ett falskt larm än en tom plånbok.
  • Ett anrop startar bara när ditt saldo är minst 0,05 €.

Felkoder och vad du gör

KodBetydelseVad du gör
400Ogiltigt anrop, eller en prompt som är större än kontextfönstret.Rätta anropet; maxvärdet står i felmeddelandet.
401Okänd, återkallad eller pausad nyckel.Kontrollera nyckeln i din dashboard.
402Otillräckligt saldo.Fyll på. Svaret innehåller en direktlänk.
403Anropet faller utanför användarpolicyn.Se skälig användning nedan.
429Rate limit eller tak nått.Vänta och försök igen; respektera Retry-After.
502 / 503Modellen uppströms är otillgänglig och ingen reserv är möjlig.Försök igen. Se statussidan.

Misslyckade anrop kostar dig ingenting: kom inget användbart svar tillbaka dras inget från ditt saldo.

Skälig användning och användarpolicy

Vi vägrar instruktioner för vapen, skadlig kod och bedrägeri, och material som skadar barn. De vägranden är slutgiltiga: vi skickar aldrig en sådan förfrågan vidare till en annan modell för att ändå få fram ett svar.

När en modell vägrar en legitim fråga om politik, historia eller ett samhällskänsligt ämne är det en annan sak: det ser vi som en brist, och vi skickar frågan till en modell utan den blinda fläcken. Du ser det i huvudet X-EU-Routed: censorship.

En av våra modeller är licensierad med en egen användarpolicy. Den policyn gäller fullt ut: omdirigering kringgår inga licensvillkor.

Osäker på om ditt användningsfall passar? Mejla hello@europeanailab.eu. Ett svar i förväg är billigare för oss båda än en blockerad nyckel i efterhand.

Vanliga frågor

Frågorna som kommer per mejl innan någon skapar en nyckel: vad API:et är kompatibelt med, vad ett anrop kostar och var det körs.

Vilka OpenAI-SDK:er fungerar med ett OpenAI-kompatibelt API?

Alla officiella, eftersom de är tunna klienter ovanpå chat completions-kontraktet och tar bas-URL:en som konstruktorargument. Python- och Node-SDK:erna är de vanligaste fallen; Go, Java och .NET fungerar på samma sätt. Du behåller din retry-logik, din hantering av streaming och dina typer.

Kan jag använda LangChain eller Vercel AI SDK med det?

Ja. Båda låter dig ställa in bas-URL:en för sin OpenAI-provider, så du pekar den mot vår host och använder en Union AI-nyckel. Allt annat som låter dig byta bas-URL fungerar enligt samma princip, även de flesta agentramverk och utvärderingsverktyg.

Stöder API:et streaming och function calling?

Ja, båda, och dessutom strukturerad output mot ett JSON schema. Strömmade svar skickar tokenförbrukningen i slutet av strömmen, så du kan mäta ett strömmat anrop lika exakt som ett vanligt.

Vilka rate limits gäller för API:et?

Det finns en gräns för anrop per minut per nyckel och per konto, plus dags- och månadstak i euro som du sätter själv. Nya konton har ett tak på 25 € per dag de första 48 timmarna, oavsett saldo. Når du en gräns får du en 429 med ett Retry-After-huvud.

Hur hanterar jag 429 och nya försök?

Respektera Retry-After i stället för att försöka igen direkt, och använd exponentiell backoff med jitter så att en topp inte synkroniseras mellan dina workers. Försök aldrig igen efter en 402: den betyder att saldot är tomt, och en loop upprepar bara felet. Ett nytt försök räcker oftast, för ett andra misslyckande ger sällan ett annat svar.

Hur ser jag vad ett anrop kostade?

Varje svar har huvuden: X-EU-Tokens-In och X-EU-Tokens-Out för de uppmätta tokens, X-EU-Cost-EUR för vad som drogs från ditt saldo och X-EU-Balance-EUR för vad som är kvar. Dina egna loggar kan alltså besvara kostnadsfrågan per funktion eller per kund utan att du öppnar en dashboard.

Vilken modell körs bakom varje nivå?

Varje nivå motsvarar en namngiven open-weight-modell, publicerad med licens och kontextfönster på sidan om AI-transparens. Du köper nivån, inte modellnamnet, så vi kan byta modellen under utan att din integration går sönder, och vi säger till när vi gör det.

Att flytta en befintlig integration är tre rader: nyckeln, bas-URL:en och ett nivånamn. Hela ändringen, plus det som inte följer med, finns i byt på tre rader. Fortfarande frågor? Priserna per nivå finns på prissidan, modellen och licensen bakom varje nivå under AI-transparens och vad som händer vid ett avbrott på statussidan. Två längre texter: vad ett AI-API kostar per token och vart dina prompter faktiskt tar vägen.

Kom igång med AI för européer.

Använd AI utan att skicka din data utomlands: allt på europeiska servrar, till ett europeiskt pris.

13 € i månaden för chatten, avsluta när du vill. Eller per token med kredit från 10 €.

Osäker? Gör quizet på 60 sekunder →