FurniOpsDocs
API referenceAgents

List proposals

The AI agents' proposals for the organisation, newest first, each with the proof it passed. Those waiting for a person by default.

  • Scopesagent:read
  • Rate classread
GET/v1/proposals

The AI agents' proposals for the organisation, newest first, each with the proof it passed. Those waiting for a person by default.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Query Parameters

limit?integer

Page size

Range1 <= value <= 100
Default20
starting_after?string

Opaque position returned by a previous page

Match^[A-Za-z0-9_-]{1,512}$
ending_before?string

Opaque position returned by a previous page

Match^[A-Za-z0-9_-]{1,512}$
status?string

Proposals of this status; those waiting for a person by default

Default"proposed"

Value in

  • "shadow"
  • "proposed"
  • "applied"
  • "rejected"
  • "failed"
  • "superseded"
agent?string

Only this agent's

Value in

  • "categories"
  • "repair"
  • "onboarding"
  • "triage"
source?string

Only those about this source

Match^src_[0-9A-Za-z]{22}$

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
If-None-Match?string

ETag of a cached representation; a match returns 304

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://example.com/v1/proposals"
{  "object": "list",  "data": [    {      "object": "proposal",      "id": "string",      "catalogue": "string",      "agent": "categories",      "source": "string",      "status": "shadow",      "risk": "low",      "summary": "string",      "payload": {        "kind": "category_rules",        "rules": [          {            "path": [              "string"            ],            "category": "string",            "reason": "string"          }        ]      },      "evidence": {        "kind": "category_rules",        "products": 0,        "filed_before": 0,        "filed_after": 0,        "snapshot": "2019-08-24T14:15:22Z"      },      "model": "string",      "cost_micros": 0,      "failure": "string",      "superseded_by": "string",      "decided_by": {        "kind": "user",        "id": "string"      },      "created_at": "2019-08-24T14:15:22Z",      "decided_at": "2019-08-24T14:15:22Z",      "applied_at": "2019-08-24T14:15:22Z"    }  ],  "has_more": true,  "next_cursor": "string"}