Skip to main content
This page is for engineers and reviewers who need to know what happens to the data in an OpenType request. It covers which fields reach the model, what a run record holds and who can read it back, and how credentials are kept out of storage and logs. It only states what the API does; it makes no claims beyond that.

What reaches the model

A run sends its input to the model: Neon 1.1 for decision runs. What the model reads depends on the kind of run.
Everything in state is model input. Send only the fields your questions need. If a ticket triage only needs the subject and body, leave out the customer’s email address, card details and account ids.
For example, this state gives the model what it needs to triage a ticket and nothing else:

What a run returns and keeps

Each admitted run gets a record in your organization. The live response to POST /v1/runs carries the answer, and later reads return the stored record. The digests let you check whether two runs had the same input, or produced the same answer, without comparing the content itself. What each read returns: The stored answer does not include everything the live response did. When thought tokens are generated, a live decision reports thought_tokens and thought_closed. The thought text itself is never returned, live or stored.

Read a stored answer

Who can read your runs

  • Runs belong to the organization of the credential that created them.
  • Any credential in that organization with runs_read can list runs and read every stored answer. Give runs_read only to processes and people who should see answers. See Scopes and roles.
  • A run id from another organization returns 404 run_not_found, the same as an id that does not exist. The response does not reveal whether the run exists elsewhere.

Credentials

The API accepts credentials only in the Authorization header. It does not read credentials from cookies, and a key secret sent in a URL path is refused with 400 secret_in_path before any lookup. Details are in API key security.

Other values you send

Error messages

An error’s message is written by OpenType for people to read. It never contains output from the model provider, so it is safe to log. Branch on error.code, and log error.request_id with it. See Error handling.

Your side

  • Minimize input. Put only what the questions need into state, instructions and questions.
  • Keep keys on your server. Browser code that calls the API exposes your key and every answer it can read.
  • Scrub your own logs. Strip Authorization headers and request bodies from your application logs, or log the run_id and input_digest instead of the payload.
  • Scope reads. A key that only sends runs and uses the answer from the response needs runs_write alone, and cannot read back other runs.
  • API key security - how key secrets are stored, shown once, and retired.
  • Scopes and roles - who can read runs and answers.
  • Runs - the full run lifecycle and response fields.
  • Idempotency - how the Idempotency-Key and input digest decide a replay.
  • Request ids - the x-request-id rules in full.