EU GPT logo
EU GPT

English documentation — We currently provide our documentation only in English. This helps us keep the information as accurate and up-to-date as possible during the rapid development of the API.

API

Getting started

From zero to your first streaming response in five minutes.

This walkthrough takes you from a fresh account to a working response in under five minutes. We will issue an API key, send a single message, and stream the answer.

1. Create an account#

Sign up at chat.eugpt.ai. The free trial gives you enough headroom to develop and test integrations end-to-end. No credit card is required for the trial.

2. Issue an API key#

  1. Open the chat UI and click your avatar in the bottom-left.

  2. Go to Settings → API Keys.

    Settings → API Keys

  3. Click Create key, give it a label that tells you where it will run (e.g. local-dev, staging-job), and copy the value.

    Create key dialog

Keys are shown once. Store them in your secrets manager — you cannot retrieve a key after the dialog closes. Revoke and reissue if a key is exposed.

3. Send your first request#

Export the key and call the API. The minimum viable request is one line of input.

export EUGPT_API_KEY="eugpt_..."

curl https://chat.eugpt.ai/v1/responses \
  -H "Authorization: Bearer $EUGPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "auto",
    "input": "Write a haiku about sovereignty.",
    "stream": false
  }'
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.EUGPT_API_KEY,
  baseURL: "https://chat.eugpt.ai/v1",
});

const response = await client.responses.create({
  model: "auto",
  input: "Write a haiku about sovereignty.",
  stream: false,
});

console.log(response.output_text);
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["EUGPT_API_KEY"],
    base_url="https://chat.eugpt.ai/v1",
)

response = client.responses.create(
    model="auto",
    input="Write a haiku about sovereignty.",
    stream=False,
)

print(response.output_text)

A successful response looks like:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "object": "response",
  "created_at": 1716387200000,
  "status": "completed",
  "model": "gpt-oss-120b",
  "output": [ /* ... structured items ... */ ],
  "output_text": "Servers stand in Paris,\nLaws hold every byte at home —\nAnswers, still in light."
}

4. Switch to streaming#

Most real applications stream. Set stream: true (or omit it — true is the default) and read the response as Server-Sent Events.

const stream = await client.responses.create({
  model: "auto",
  input: "Explain GDPR in three sentences.",
  stream: true,
});

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  }
}
stream = client.responses.create(
    model="auto",
    input="Explain GDPR in three sentences.",
    stream=True,
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

The full set of streaming events — including tool calls, content parts, and completion — is described in Streaming events.

What next#

  • Authentication — key lifecycle, rotation, and revocation.
  • The Responses API model — how this API differs from chat completions, and what input accepts.
  • Tool use — how the built-in web search and other tools surface in the response stream.