Skip to main content
If you already call a decision API, point your code at https://api.evolvingmachines.ai and use your Evolve API key. Request and response bodies keep that API’s shape, and billing and limits match the default format. You can keep your current model name. Names that do not start with edith, monitor, or evolve/ are answered by edith-1.1. The table shows which name comes back in model. Use a prefixed path to select a format. On the shared /v1/decisions path, selection follows the body:
  • state: Perplexity.
  • Questions with id, options, question, or type yes_no: SGLang.
  • Otherwise: OpenAI decisions.

Jev format

Questions are a map keyed by your own names. A noul question returns the model’s probability for a claim. Reuse EVOLVE_API_KEY from the quickstart. Save this request as jev.json:
jev.json
Send it with cURL and jq:
cURL (HTTP)
An illustrative response, with values that vary by run:
Response
  • state takes a trial object or text.
  • A choice question takes criteria as a map from option to description.
  • A noul question can describe its true and false sides in criteria.
Add a score question to the questions map with levels in criteria:
Question entry
The answer includes the expected level, confidence, level probabilities, and their labels. Example entry in answers:
Answer entry

SGLang format

Send this body to POST /sglang/v1/decisions. Use id to name each question:
Request body
Answers are keyed by id. A yes_no answer has probabilities for yes and no.
A choice question uses options. Send diagnosis questions in a separate request after a verdict flags a run, as described in Custom rubrics.
Choice question

Errors by format

Error meanings follow the default format. The shape and malformed-request status depend on the selected format. The table lists fields, not complete JSON examples. Long requests can return HTTP 200 before finishing. A later failure arrives as the selected format’s error body plus http_status. Check the body before reading answers.

Images

Every format accepts images once they are allowed for your account, with the same limits and price. Send each image inline as a base64 data: URL or bare base64. The token totals include image tokens. Images in the top-level images array are read first, then image parts in the order sent, all before the text.
  • Every format that takes state, including AutoJev, also takes a top-level images array. Alongside images, state may be a trial object, text, or an empty string.
  • OpenAI and SGLang accept images only as parts. A top-level images field returns 400 invalid_request.
  • inline_data and inlineData parts return invalid_request in every format.
Use these shapes where the table specifies text and image_url parts:
Text part
Image part
A Cloudflare top-level images item can also use this shape:
Cloudflare image
Save a PNG screenshot as screenshot.png, set EVOLVE_API_KEY, and enable images. Run pip install requests, save this as check_image.py, and run python3 check_image.py.
Python (HTTP)
Last modified on November 9, 2026