Accept an agreement for the organisation
Records that the signer accepts, for the organisation, exactly the version and text they were shown (its version and sha256), with their typed name and title and their statement that they may bind it. A version or hash that is not the newest answers 409 conflict: show the new text and ask again. Accepting a version already accepted returns the earlier acceptance. Owners and admins only; never an AI agent's tool.
- Scopes
agreements:write - Rate classwrite
- Idempotency-Key required
/v1/agreements/{kind}/acceptancesRecords that the signer accepts, for the organisation, exactly the version and text they were shown (its version and sha256), with their typed name and title and their statement that they may bind it. A version or hash that is not the newest answers 409 conflict: show the new text and ask again. Accepting a version already accepted returns the earlier acceptance. Owners and admins only; never an AI agent's tool.
Authorization
apiKey An API key (fo_live_… / fo_test_…) as a bearer token
In: header
Path Parameters
Which agreement
Value in
- "vendor_data"
Header Parameters
Dated API version; pinned per organisation on first use and overridable per request
Value in
- "2026-10-01"
- "2026-10-04"
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"
Unique key for this operation, reused on retries (24 h)
1 <= length <= 257Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)
Value in
- "true"
- "explain"
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Accepting the version shown, as signed
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
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/agreements/vendor_data/acceptances" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "version": 1, "sha256": "string", "signer_name": "string", "signer_title": "string", "authority_confirmed": true }'{ "object": "agreement_acceptance", "id": "string", "agreement": "string", "kind": "vendor_data", "version": 1, "sha256": "string", "signer": { "user": "string", "name": "string", "title": "string" }, "authority_confirmed": true, "method": "click", "ip": "string", "user_agent": "string", "accepted_at": "2019-08-24T14:15:22Z"}Withdraw a claim POST
Withdraws a pending claim. A claim that is not pending answers 409.
Read an agreement and where the organisation stands GET
The newest published version of the agreement, with its full text and hash, the organisation's newest acceptance, and its standing: `accepted`, `grace` (an earlier acceptance counts until `accept_by`), `required` or `unpublished`. Vendors only: a retailer answers 403 `permission_denied`.