Report what was done

The option carried out, for the whole decision.

POST /api/v1/decisions/{id}/chosen. The fields, answers and errors below are rendered from the OpenAPI document.

Report what was done

POST /api/v1/decisions/{id}/chosen

One report for the whole decision: the option carried out (or none); whether it was each stakeholder’s best is derived from it. Reporting again replaces the report. Free.

Parameters

  • id (path, required)

    The decision id (dec_…) its creation returned.

    string

Request body

application/json

object

  • followed (optional)

    boolean

  • chosen_option (optional)

    string

    Allowed values
    ["A","B","C","D","E","F","G","H","none"]
  • decided_by (optional)

    string

    Allowed values
    ["agent","human"]
  • note (optional)

    string

    Minimum length
    1
    Maximum length
    2000
  • reported_by (optional)

    object

    • name (optional)

      string

      Minimum length
      1
      Maximum length
      200
    • email (optional)

      string · email

      Maximum length
      320

    Additional properties: not allowed.

Additional properties: not allowed.

Responses

Response 200

The decision with its chosen decision.

application/json

DecisionRecord

object

The decision as the decision log shows it: id, createdAt, model, mode, status, best and bestByStakeholder, chosen decision, revision and assessment summaries. GET /v1/decisions/{id} adds request and response (null once the content has expired under the key’s retention, or when it was never stored), revisions and assessments. A Default mode decision that answered 202 has status: "running" with its progress until it is done; then response holds the decide answer (or status is error with errorMessage). Under retention "none", that answer is held for one fetch, at most one hour, then deleted.

  • id (optional)

    string

  • createdAt (optional)

    string · date-time

  • model (optional)

    string

  • mode (optional)

    string

    Allowed values
    ["default","direct"]
  • status (optional)

    string

    Allowed values
    ["ok","error","running"]
  • errorMessage (optional)

    string | null

  • progress (optional)

    object | null

    While running: the model calls answered (done) of those the request needs (total).

    • done (optional)

      integer

    • total (optional)

      integer

  • best (optional)

    string | null

  • bestByStakeholder (optional)

    object | null

    Additional property values:

    string

  • contentStored (optional)

    boolean

  • request (optional)

    object | null

  • response (optional)

    object | null

  • expiresAt (optional)

    string | null · date-time

  • sharedWithOrg (optional)

    boolean

    Whether everyone in your organization sees the decision; when false, only its owner does.

  • canChangeSharing (optional)

    boolean

    Whether this key can change sharedWithOrg: the decision was made with it.

  • publication (optional)

    object | null

    The decision’s public page while it is published (POST /v1/decisions/{id}/publication); null otherwise.

    • url (optional)

      string

      The page’s address, which anyone can open.

    • publishedAt (optional)

      string · date-time

    • publishedBy (optional)

      object | null

      The person who published it in the console; null when an API key did.

      • id (optional)

        integer

      • name (optional)

        string

  • canPublish (optional)

    boolean

    Whether this key can publish the decision: it was made with the key and its result is stored.

  • source (optional)

    string | null

    Allowed values
    ["api","mcp","playground","connector",null]

Additional properties: allowed.

Response 400

The request is invalid; the message says which field and why.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 401

No valid API key.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 402

No free decisions or credit left for the request.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 403

Only the person who made the decision, or the API key it was made with, can change who sees it or publish it.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 409

The model is not served yet, or the revised decision already has a newer revision.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 410

No such decision that you can see: none in your organization, or one not shared with you.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 429

Rate limit reached (see Retry-After), or your organization already has 3 Default mode decisions running; send it when one is done.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 502

The model failed to answer, or the decision could not be completed. Nothing is billed.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Response 503

The model is starting after being idle, or a request on free decisions found it busy (free_capacity_busy); retry after Retry-After seconds. Nothing is billed.

application/json

Error

object

  • error (required)

    object

    • type (required)

      string

      Allowed values
      ["invalid_request","authentication","insufficient_credit","model_unavailable","model_warming","free_capacity_busy","too_many_overlap_pairs","too_many_records","revision_conflict","rate_limited","server_error"]
    • message (required)

      string

Report what was done: examples

Request example

curl -X POST 'https://eevo.io/api/v1/decisions/{id}/chosen' \
  -H "Authorization: Bearer $EEVO_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "followed": true,
  "chosen_option": "A",
  "decided_by": "agent",
  "note": "string",
  "reported_by": {
    "name": "string",
    "email": "string"
  }
}'

Response 200 example

{
  "id": "string",
  "createdAt": "2025-12-31T00:00:00.000Z",
  "model": "string",
  "mode": "default",
  "status": "ok",
  "errorMessage": null,
  "progress": {
    "done": 0,
    "total": 0
  },
  "best": null,
  "bestByStakeholder": null,
  "contentStored": true,
  "request": null,
  "response": null,
  "expiresAt": null,
  "sharedWithOrg": true,
  "canChangeSharing": true,
  "publication": {
    "url": "string",
    "publishedAt": "2025-12-31T00:00:00.000Z",
    "publishedBy": {
      "id": 0,
      "name": "string"
    }
  },
  "canPublish": true,
  "source": "api"
}