Share a decision

Whether everyone in your organization sees a decision, or only you.

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

Share a decision, or stop sharing it

PATCH /api/v1/decisions/{id}

Whether everyone in your organization sees the decision (shared_with_org: true), or only the person who created the API key it was made with, and the key itself (false). It applies to every revision of the decision. Only for a decision made with this key (403 otherwise); its creator can also change it in the console. A decision that is not shared stays hidden from everyone else, admins included, also after its owner leaves the organization. New decisions follow the key’s setting (API keys in the console), or share_with_org on the request. Free.

Parameters

  • id (path, required)

    The decision id (dec_…) its creation returned.

    string

Request body

application/json

object

  • shared_with_org (required)

    boolean

Additional properties: not allowed.

Responses

Response 200

The decision with its sharing.

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

Share a decision, or stop sharing it: examples

Request example

curl -X PATCH 'https://eevo.io/api/v1/decisions/{id}' \
  -H "Authorization: Bearer $EEVO_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "shared_with_org": true
}'

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"
}