EucianDeveloper docs Get an API key

Eucian API

Use Eucian's models from your own apps, scripts and servers: Calen for chat, Iven for images and Vexo for video. Chat speaks the standard chat-completions format, so most AI libraries work by changing two settings.

Quick start

1. Add creditsIn Eucian, open Settings, Billing, and add credits under Developer API. You pay only for what you use.
2. Create a keyIn the same place, name and create a key. Copy it straight away; it's shown once.
3. Call the APISend a request with your key: /chat/completions for chat, /images/generations for pictures, /videos/generations for video. All under https://eucian.com/api/v1.
curl https://eucian.com/api/v1/chat/completions \
  -H "Authorization: Bearer $EUCIAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "calen-1.0-max",
    "messages": [
      {"role": "system", "content": "You are a blunt, helpful editor."},
      {"role": "user", "content": "Tighten this: We are very excited to announce that we have launched."}
    ]
  }'

API keys

Keys start with euc_. Create up to ten in Settings, Billing, Developer API, and give each one a name so you can tell them apart. Eucian keeps only a scrambled copy, so a lost key can't be shown again; create a new one and revoke the old one. Revoking takes effect immediately.

Keep keys on your server. Never put a key in a website's code or a mobile app, where anyone can read it and spend your credits.

Authentication

Send your key in the Authorization header on every request:

Authorization: Bearer euc_your_key_here

Chat completions

POST https://eucian.com/api/v1/chat/completions

Request body

FieldTypeWhat it does
messagesarray, requiredThe conversation so far. Each item has a role (system, user or assistant) and content (text). At least one user message. The last 60 messages are used.
modelstringcalen-1.0-max (default) or calen-1.0-lite.
streambooleanSend the answer piece by piece as it's written. See Streaming.

System messages set how the model behaves. Eucian may search the web on its own when a question needs current facts.

Response

{
  "id": "chatcmpl-8f3c…",
  "object": "chat.completion",
  "created": 1791648000,
  "model": "calen-1.0-max",
  "choices": [
    { "index": 0, "message": { "role": "assistant", "content": "We've launched." }, "finish_reason": "stop" }
  ],
  "usage": { "prompt_tokens": 31, "completion_tokens": 4, "total_tokens": 35 }
}

Token counts are estimates (about four characters a token), given for your own tracking. You're charged by time, not tokens; see Pricing.

Streaming

With "stream": true the response is a stream of server-sent events. Each event is a line starting with data: holding a chunk; the stream ends with data: [DONE].

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"We've"},"finish_reason":null}]}

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" launched."},"finish_reason":null}]}

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{…}}

data: [DONE]

Images

POST https://eucian.com/api/v1/images/generations makes one picture with Iven and returns it as base64.

FieldTypeWhat it does
promptstring, requiredWhat to draw, up to 700 characters.
modelstringiven-1.0-max (default) or iven-1.0-lite.
sizestring1024x1024 (default), 768x1344 (tall) or 1344x768 (wide). square, portrait and landscape work too. Lite pictures are about three-quarters of these sizes.
curl https://eucian.com/api/v1/images/generations \
  -H "Authorization: Bearer $EUCIAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "iven-1.0-max", "prompt": "A lighthouse at dusk, film photo", "size": "1344x768"}'
{
  "created": 1791648000,
  "model": "iven-1.0-max",
  "data": [ { "b64_json": "/9j/4AAQ…", "width": 1344, "height": 768 } ],
  "usage": { "cost_usd": 0.06 }
}

The picture is a JPEG. A picture held back by the content policy returns 400 and isn't charged. Pictures can take up to a minute when the model has been idle.

Videos

Videos take a few minutes, so they run as a job: start one, then ask for it until it's ready.

1. Start a video

POST https://eucian.com/api/v1/videos/generations

FieldTypeWhat it does
promptstring, requiredSubject, action, setting, camera and sound, up to 1,500 characters. Videos come with sound.
modelstringvexo-1.0-max (default) or vexo-1.0-lite.
secondsnumber5 (default), 10 or 15 on Max. Lite clips are always 5 seconds.
sizestringlandscape (default, 16:9), portrait (9:16) or square.
curl https://eucian.com/api/v1/videos/generations \
  -H "Authorization: Bearer $EUCIAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "vexo-1.0-max", "prompt": "Waves on a black sand beach at sunset, the sound of surf", "seconds": 5}'
{ "id": "fc-01JABC…", "object": "video", "status": "in_progress", "model": "vexo-1.0-max", "seconds": 5, "width": 960, "height": 544, "usage": { "cost_usd": 1.86 } }

2. Get the video

GET https://eucian.com/api/v1/videos?id=YOUR_ID returns {"status": "in_progress"} while it's being made, then the MP4 file itself. Ask every 10 to 15 seconds. Add &format=json to get the MP4 as base64 inside JSON instead. If a video fails or is held back, the status is failed and the charge is refunded.

curl "https://eucian.com/api/v1/videos?id=fc-01JABC…" \
  -H "Authorization: Bearer $EUCIAN_API_KEY" -o clip.mp4

Models

Eucian makes three model families: Calen for chat and writing, Iven for images and Vexo for video. Each comes as Max and Lite.

ModelModel idBest forPrice
Calen 1.0 Maxcalen-1.0-maxOur smartest model, for complex work and everyday tasks.About 10.5¢ a minute
Calen 1.0 Litecalen-1.0-liteThe same model as Max, set up for shorter, quicker answers.About 7¢ a minute
Iven 1.0 Maxiven-1.0-maxOur highest-quality images, with fine detail and accurate text.6¢ a picture
Iven 1.0 Liteiven-1.0-liteFast drafts and variations.3¢ a picture
Vexo 1.0 Maxvexo-1.0-maxCinematic video with smooth motion and longer clips, with sound.$1.86 for 5s, $3.21 for 10s, $4.56 for 15s
Vexo 1.0 Litevexo-1.0-liteQuick 5 second clips and previews.75¢ a clip

GET https://eucian.com/api/v1/models lists every model with its price. The older ids eucian-1.0-max and eucian-1.0-lite still work for chat.

Libraries

Any library for the common chat-completions format works. Point its base URL at https://eucian.com/api/v1 and use your Eucian key.

# pip install openai
from openai import OpenAI

client = OpenAI(base_url="https://eucian.com/api/v1", api_key="euc_your_key_here")

reply = client.chat.completions.create(
    model="calen-1.0-max",
    messages=[{"role": "user", "content": "Write a two-line poem about rain."}],
)
print(reply.choices[0].message.content)

# streaming
for chunk in client.chat.completions.create(model="calen-1.0-max", stream=True,
        messages=[{"role": "user", "content": "Count to five."}]):
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Pricing and credits

The API is prepaid with Eucian credits. Credits are dollars: $25 of credits is $25 to spend on requests. Add them in Settings, Billing; the bigger packs come with a discount, so the credits go further than what you pay.

Credit packYou payCredits you get
$25 pack$22.50$25.00 (10% off)
$50 pack$40.00$50.00 (20% off)
$100 pack$70.00$100.00 (30% off)

What a request costs

You pay for the seconds the model spends answering, starting from its first word, so a model waking up is never billed. Each request is rounded up to the nearest cent, and costs at least 1 cent.

ModelPer secondPer minuteShort answer
about 5 s
Typical answer
about 15 s
Long answer
about 60 s
calen-1.0-max$0.00176$0.1051¢3¢11¢
calen-1.0-lite$0.00117$0.071¢2¢7¢

Pictures and videos

ModelPrice
iven-1.0-max6¢ a picture
iven-1.0-lite3¢ a picture
vexo-1.0-max$1.86 for 5 seconds, $3.21 for 10, $4.56 for 15
vexo-1.0-lite75¢ for a 5 second clip

Pictures and videos are charged only when they're made: anything held back or failed costs nothing.

So $25 of credits is roughly 800 typical answers on Max, or well over 1,200 on Lite, whose answers are shorter. Prices are also returned by GET /api/v1/models as price_per_second_usd.

Your API dashboard (Settings, Billing, Open API dashboard) shows your credit left, spend by day, requests and cost per model and per key, and your recent requests. Your balance is shown there and under Developer API in Billing, and every response includes usage to help you track what you send. When credits run out, requests return 402 until you add more. Credits never expire, there's no monthly fee, and the same credits also keep your own Eucian chats going past your plan's allowance.

Limits

LimitValue
Requests60 a minute per account
Messages per requestThe last 60 are used
Message lengthAbout 60,000 characters each
Request timeoutAbout 4.5 minutes
PicturesOne per request
Videos5, 10 or 15 seconds, with sound
KeysUp to 10 per account

If the model has been idle it may take a few seconds to wake; a 503 then means retry shortly.

Errors

Errors come back as JSON: {"error": {"message": "…", "type": "…"}}.

StatusTypeMeaning
400invalid_request_errorThe request is missing something, such as a user message.
401authentication_errorNo key, a malformed key, or a revoked one.
402insufficient_quotaYour credits are used up. Add more in Billing.
429rate_limit_errorMore than 60 requests in a minute. Wait and retry.
503server_errorThe model is waking up or busy. Retry after a few seconds.

Content policy

Eucian is uncensored, with three hard lines that apply to the API exactly as they do in the app: nothing sexual involving anyone under 18, no sexual content about real, named people, and no deepfakes. You're responsible for how your app uses the output and for following the laws where you and your users are. Full details are in the Terms.

Help

Questions, higher limits or something not working? Email support@eucian.com.