POST /v1/decisions. To keep another decision API’s format, see Compatible formats.
Connect
There is no cold start.
Request
Send a JSON body toPOST /v1/decisions:
Request body
edith-1.1. Other vendors’ model names are accepted and echoed back; see Compatible formats.The run. Send a trial object for the best answers. A string, or an array of
user messages with input_text parts, is read as is. To add screenshots or other images, use input_image parts; see Images.auto, default, or flex. Omit it, or use auto or default, for standard processing. Flex processing costs half as much and takes longer.Question types
Each question has atype and instructions. The optional name must be unique within the request and is echoed in the answer. Unknown fields are rejected.
- predicate
- choice
- score
A claim. The answer is the probability that the run establishes it.Write
instructions as a statement, not a question. A claim the record neither supports nor contradicts scores low.The trial object
Onlytrajectory is required.
Long trial objects are trimmed: the start, end, and suspicious steps are retained within the limits below. Other steps become one-line digests. Strings and message arrays are not trimmed; if either leaves no room for a question, the request returns
400 context_length_exceeded.
How long runs are trimmed
How long runs are trimmed
Images
edith-1.1 reads images alongside text, including screenshots from a computer-use run. Images are off by default. Enable them for your account through any of these controls:-
CLI:
evolve auth images on. -
SDK:
auth().setFeatures({ edithImages: true })orauth().set_features(edith_images=True). - Dashboard: API keys page.
403 images_not_enabled.
Send input as user messages with input_text and input_image content parts. For this HTTP example, run pip install requests, save a PNG as screenshot.png, set EVOLVE_API_KEY, and enable images first.
Python (HTTP)
Image input rules
Other accepted image part shapes
Other accepted image part shapes
These parts also work inside
input messages. Replace the placeholder data with your image’s base64 bytes.image_url part
image part
Response
Answers follow the order ofquestions. A response to the predicate request above has this shape:
- choice answer
- score answer
Include the
x-request-id response header when you report a problem. The non-JSON errors listed under Errors do not have this header.
Long requests
Requests over 131,072 tokens take minutes in every format.
JSON parsers ignore the leading spaces. If processing fails after the status is sent, the body contains the usual error object plus
http_status.
Flex processing
Setservice_tier to flex in any format to pay 50% of the standard price. Flex uses the same request and response shape, but waits for spare capacity.
HTTP
Omitting
service_tier, or sending auto or default, uses standard processing. Check the response body for errors even when the HTTP status is 200.
Flex suits evals, backfills and offline trace review. Use the default tier when you need answers right away.
Batch API (private beta)
For large offline workloads, the Batch API takes many requests at once and returns every answer when the batch finishes. Email team@evolvingmachines.ai with your expected volume and run lengths to get access.Usage and billing
Only input tokens are billed.usage.input_tokens is the billed count: the run once, plus each question’s tokens.
Images use the same input-token price:
usage.input_tokens includes image tokens. Image requests also report them in usage.input_tokens_details.image_tokens.
Errors
param names the field at fault, if there is one.
Two more errors aren’t JSON and have no
x-request-id:
-
503with noRetry-After: briefly unavailable. Retry with backoff. -
504: nothing was sent for 60 seconds. Retry.

