Console coming soon
Browse documentation

Developer docs

Start from a live reference page.

Phone layout stays search-first: pick a page here, then read it in a full single-column view.

Getting Started

Models

API Reference

Operations

Enterprise

Console

Policies

Quickstart

Your first EvaEsi request, start to finish, in about two minutes.

Get a key

Keys come from the console, which opens when the platform launches. They are not being issued yet, so you cannot run the request below today. Everything else on this page is accurate, and the moment you hold a key it will work as written.

A key looks like esi_dev_a1b2c3d4e5f6... and you will see it once. Store it somewhere safe when you create it. If you lose it, revoke it and make another rather than hunting for it. Public API access needs the Developer tier or higher.

Keep the key out of your code. The samples here read it from an environment variable, which is the least you should do.

Make a request

Send a prompt and name a model. max_output_rungs caps how much the answer can cost you, and is worth setting while you are experimenting.

curl https://evaesi.dev/api/v1/responses \  -H "Authorization: Bearer $EVAESI_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "model": "instant",    "prompt": "Explain quantum entanglement in simple terms.",    "max_output_rungs": 512  }'

Read the response

{  "request_id": "uuid",  "content": "Quantum entanglement is...",  "sources": [],  "sources_url": "/api/v1/sources/uuid",  "usage": {    "input_rungs": 52,    "output_rungs": 847,    "total_rungs": 899,    "regions_activated": null  },  "model": "instant"}

The answer is in content. Keep request_id if you want to come back to this request later, either to fetch its evidence or to find it in your usage records.

sources holds the evidence the model used, and sources_url is where to fetch it again while the request is still live. See the sources API.

usage tells you what it cost. Input and output are counted separately because they are priced separately.

Headers

A normal response carries the cost and your rate limit position.

x-evaesi-input-rungs: 52
x-evaesi-output-rungs: 847
x-evaesi-total-rungs: 899
x-ratelimit-limit: 300
x-ratelimit-remaining: 299

x-evaesi-region-count appears as well, but only if you asked for it with include_regions.

Streaming is different, and the difference catches people out. Headers are sent when the stream opens, before any answer exists, so the output and total counts cannot be there yet. You get the input cost and your rate limit position, and the usage object arrives at the end on the response.completed event. Streaming covers the rest.

Where to go next

  • Responses API documents every field on the request and the reply.
  • Streaming shows you how to display an answer as it is written.
  • Models helps you pick something other than the default.
  • Errors lists what can go wrong and what to do about it.
  • Pricing explains rungs and what each model costs.