Appearance
Order book
9 reads and 1 write, on train 2026-11. Scopes: order_book:read · order_book:write.
| Operation | Method | Scope | Path |
|---|---|---|---|
| What one account did last time | GET | order_book:read | /api/v1/order-book/account-anchor |
| One account's booked lines folded into its own size shares (BE-ADJ-19) | GET | order_book:read | /api/v1/order-book/account-size-curve |
| One account's book | GET | order_book:read | /api/v1/order-book/account-styles |
| Every account's book against its own prior season | GET | order_book:read | /api/v1/order-book/accounts |
| How the book was taken | GET | order_book:read | /api/v1/order-book/curve |
| How much of this book can still walk | GET | order_book:read | /api/v1/order-book/firmness |
| Record bookings a person has already taken | POST | order_book:write | /api/v1/order-book/lines |
| What is actually walking | GET | order_book:read | /api/v1/order-book/signals |
| One style's live lines across every account | GET | order_book:read | /api/v1/order-book/style-lines |
| What is booked for a season | GET | order_book:read | /api/v1/order-book/summary |
What one account did last time
GET /api/v1/order-book/account-anchor
Scopes: order_book:read
What one account did last time and how each style is likely to perform there: what they booked last season, what their doors sold, and the baseline's grade.
| Required | In | What it is |
|---|---|---|
trading_partner_id | query | The account. An id, never a name. Duplicate account names are ordinary in apparel. |
season_code | query | The season being planned, e.g. SS27. |
| Optional | In | What it is |
|---|---|---|
prior_season_code | query | The season to anchor against. Unstated, it is resolved from the declared season chain; when stated it wins. |
commitment_id | query | A Commitment whose scope selects the styles and whose window places the graded curve. |
sellout_from | query | Start of the sell-out window (YYYY-MM-DD). Unstated with sellout_to, it is detected. |
sellout_to | query | End of the sell-out window (YYYY-MM-DD). |
as_of | query | Read the book as it stood at this instant, rather than now. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/account-anchor?trading_partner_id=<trading_partner_id>&season_code=<season_code>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"currency": {
"basis": "same",
"functional": "USD",
"rate": null,
"reason": null,
"reporting": "USD",
"transaction": "USD"
},
"engine": {
"basis": null,
"computed_at": "2026-09-04T02:15:41+00:00",
"confidence": null,
"inputs_through": "2026-09-04T01:58:00+00:00",
"name": "baseline",
"run_id": null,
"stale_after": "2026-09-05T04:15:41+00:00",
"state": "fresh"
},
"engine_state": "fresh",
"grades_as_of": "2026-09-04T02:15:41+00:00",
"grades_reason": null,
"grades_state": "served",
"next_run_at": "2026-09-04T07:00:00+00:00",
"prior_season_code": "SS26",
"prior_season_source": "declared_chain",
"season_code": "SS27",
"sellout_reason": null,
"sellout_reported": true,
"sellout_window": {
"from": "2026-02-02",
"source": "detected",
"to": "2026-07-26"
},
"styles": [
{
"baseline": {
"basis": "account_predecessor",
"by_door": [
…
]
}
}
]
}
}What it refuses
- 400 A required parameter is missing, or the request could not be read
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account names another intrading_partner_id, and the sentence names both accounts. - 429
One account's booked lines folded into its own size shares (BE-ADJ-19)
GET /api/v1/order-book/account-size-curve
Scopes: order_book:read
One account's booked lines, folded into its own size shares in basis points summing to 10000. This is the run this retailer actually takes, beside the buy's own curve.
| Required | In | What it is |
|---|---|---|
trading_partner_id | query | The account. |
| Optional | In | What it is |
|---|---|---|
season_code | query | The season. One of season_code or commitment_id is required. |
commitment_id | query | A Commitment whose declared season keys the book. Required where no season code is given. |
as_of | query | Reconstruct the book as it stood at this instant (ISO-8601). Default is now. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/account-size-curve?trading_partner_id=<trading_partner_id>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"as_of": "2026-09-08T06:00:00+00:00",
"commitment_id": null,
"computed_at": "2026-09-08T06:00:04+00:00",
"lines": 5,
"reason": null,
"scope_reason": null,
"season_code": "SS27",
"season_source": "declared",
"shares_bp": {
"L": 2500,
"M": 3334,
"S": 2500,
"XL": 833,
"XS": 833
},
"trading_partner_id": "tp_00417",
"units": 1200,
"unsized_lines": 1,
"unsized_units": 500
},
"message": {
"desc": "OK",
"service": "order_book",
"severity": "INFO"
}
}What it refuses
- 400 A required parameter is missing, or the request could not be read
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account names another intrading_partner_id, and the sentence names both accounts. - 429
One account's book
GET /api/v1/order-book/account-styles
Scopes: order_book:read
One account's book, style by style: prebook, at-once and undated quantities, the booked quantity and value, last price, line count, ship window, cancel date, status, Commitments and a split block naming the prebook anchor.
| Required | In | What it is |
|---|---|---|
trading_partner_id | query | The account. |
| Optional | In | What it is |
|---|---|---|
season_code | query | The season, e.g. |
commitment_id | query | Narrow the book to one Commitment. |
as_of | query | Read the book as it stood at this instant, rather than now. |
season_start | query | DECLARE the day the season starts shipping, which is what each row's prebook / at-once split is measured against. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/account-styles?trading_partner_id=<trading_partner_id>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"as_of": "2026-09-04T06:00:00+00:00",
"currency": {
"basis": "same",
"functional": "USD",
"rate": null,
"reason": null,
"reporting": "USD",
"transaction": "USD"
},
"scope_reason": null,
"season_code": "SS27",
"split": {
"anchor": {
"season_start": "2027-02-01",
"source": "declared"
},
"at_once": {
"booked_qty": 0
},
"lines_dated": 71,
"lines_undated": 0,
"prebook": {
"booked_qty": 5900
}
},
"styles": [
{
"at_once_qty": 0,
"booked_qty": 1400,
"booked_value_usd": 41300,
"commitment_ids": [
"cmt_0091"
],
"first_ship_window_start": "2027-02-15",
"has_cancelled": false,
"held_at": null,
"held_by_name": null,
"held_qty_from_account": 0
…
}
]
}
}What it refuses
- 400 A required parameter is missing, or the request could not be read
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account names another intrading_partner_id, and the sentence names both accounts. - 429
Every account's book against its own prior season
GET /api/v1/order-book/accounts
Scopes: order_book:read
One row per account: this season's booked quantity and value, and the same account's prior-season book read at the same number of days before the season started shipping, with each account's identity, reference and terms. held_qty is the hold units already inside booked_qty, never a figure beside it: a hold has no price, so it moves the booked quantity and not the booked value.
| Required | In | What it is |
|---|---|---|
season_code | query | The season being read, e.g. SS27. |
| Optional | In | What it is |
|---|---|---|
commitment_id | query | Narrow the book to one Commitment's scope. |
as_of | query | Reconstruct the book as it stood at this instant (ISO-8601). Default is now. |
prior_season_code | query | The season to compare against. Unstated, it is resolved from the declared season chain. |
season_start | query | Declare the date this season starts shipping. Omitted, it is derived and labelled derived. |
prior_season_start | query | Declare the prior season's start, so the T-minus-N cut is the same distance on both. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/accounts?season_code=<season_code>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"accounts": [
{
"account_reference": "SLF-4471",
"account_reference_reason": null,
"account_tier": 1,
"booked_qty": 5900,
"booked_value_usd": 188400,
"doors_on_file": 6,
"doors_reporting": 4,
"fill_rate_target_pct": 97,
"held_qty": 800,
"name": "Selfridges",
"predicted_qty": 7200,
"prior": {
"booked_qty": 6400,
"booked_value_usd": 194100
},
"sales_channel_id": "61240442",
"trading_partner_id": "tp_00417"
}
],
"anchors": {
"current": {
"season_start": "2027-02-01",
"source": "declared"
},
"prior": {
"read_as_of": "2025-09-05T00:00:00+00:00",
"season_code": "SS26",
"season_start": "2026-02-02",
"source": "derived"
},
"prior_reason": null
},
"as_of": "2026-09-04T06:00:00+00:00",
"currency": {
"basis": "same",
"functional": "USD"
…
}
}
}What it refuses
- 400 A required parameter is missing, or a date could not be read.
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account calls this read, whose figure covers every account on the book; the sentence namesGET /order-book/account-stylesandGET /order-book/account-anchor, which are that account's own. - 429
How the book was taken
GET /api/v1/order-book/curve
Scopes: order_book:read
How a season's book was taken over time: one point per week carrying the book as it stood at the end of that week, with booked quantity, booked value and line count.
| Required | In | What it is |
|---|---|---|
season_code | query | The season being read, e.g. SS27. |
| Optional | In | What it is |
|---|---|---|
commitment_id | query | Narrow the book to one Commitment's scope. |
as_of | query | Reconstruct the book as it stood at this instant (ISO-8601). Default is now. |
grain | query | The bucket the curve is cut into. week is the only grain served. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/curve?season_code=<season_code>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"currency": {
"basis": "same",
"functional": "USD",
"rate": null,
"reason": null,
"reporting": "USD",
"transaction": "USD"
},
"grain": "week",
"points": [
{
"as_of": "2026-07-06",
"booked_qty": 9100,
"booked_value_usd": 241800,
"lines": 118
},
{
"as_of": "2026-07-13",
"booked_qty": 18640,
"booked_value_usd": 501200,
"lines": 233
}
],
"scope": {
"commitment_id": null,
"season_code": "SS27"
},
"scope_reason": null
},
"message": {
"desc": "OK",
"service": "order_book",
"severity": "INFO"
}
}What it refuses
- 400 A required parameter is missing, or a date could not be read.
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account calls this read, whose figure covers every account on the book; the sentence namesGET /order-book/account-stylesandGET /order-book/account-anchor, which are that account's own. - 429
How much of this book can still walk
GET /api/v1/order-book/firmness
Scopes: order_book:read
How much of a season's committed value is firm, how much can still walk, and how much nobody has said: the three-way split for the scope, the same split per account ordered by walkable value, and the date each piece stops being walkable.
| Required | In | What it is |
|---|---|---|
season_code | query | The season being read, e.g. SS27. |
| Optional | In | What it is |
|---|---|---|
commitment_id | query | Narrow the book to one Commitment's scope. |
as_of | query | Reconstruct the book at this instant AND measure every cancel date against that day. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/firmness?season_code=<season_code>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"accounts": [
{
"firm": {
"booked_qty": 3100,
"lines": 44,
"value_usd": 96200
},
"name": "Selfridges",
"trading_partner_id": "tp_00417",
"unknown": {
"booked_qty": 0,
"lines": 0,
"value_usd": 0
},
"walkable": {
"booked_qty": 5900,
"lines": 71,
"value_usd": 188400
}
}
],
"as_of": "2026-09-04T06:00:00+00:00",
"currency": {
"basis": "same",
"functional": "USD",
"rate": null,
"reason": null,
"reporting": "USD",
"transaction": "USD"
},
"firmness": {
"committed_lines": 612,
"committed_qty": 40210,
"committed_value_usd": 1284300,
"firm": {
"booked_qty": 23600,
"lines": 341,
"value_usd": 742800
…
}
}
}
}What it refuses
- 400 A required parameter is missing, or a date could not be read.
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account calls this read, whose figure covers every account on the book; the sentence namesGET /order-book/account-stylesandGET /order-book/account-anchor, which are that account's own. - 429
Record bookings a person has already taken
POST /api/v1/order-book/lines
Scopes: order_book:write
Record existing wholesale bookings as JSON. One booking or a whole account's season. Limit: 1 MiB; above it use file import.
| Optional | In | What it is |
|---|---|---|
Tightly-Version | header | The date train to answer on. |
Idempotency-Key | header | A string of your own, up to 255 characters, that makes this write safe to retry. |
bash
curl -X POST "https://api.app.tightly.io/api/v1/order-book/lines" \
-H "Authorization: Bearer $TIGHTLY_API_KEY" \
-H "Content-Type: application/json" \
-d @body.jsonWhat to send, as body.json
json
{
"lines": [
{
"account": "Harrods",
"cancelled_qty": 24,
"external_line_ref": "PO-88431-L4",
"quantity": 240,
"season": "SS27",
"ship_window_start": "2027-02-15",
"shipped_at": "2027-02-20",
"shipped_qty": 216,
"sku": "FTH-HOODY-BLK-M",
"status": "booked",
"wholesale_price": 68
}
]
}What it answers
json
{
"data": {
"recorded": 1,
"rejected": [],
"status": "success",
"unchanged": 0
},
"message": {
"desc": "1 order book line(s) recorded",
"service": "order_book",
"severity": "INFO"
}
}What it refuses
- 400
bad_request: "No account named Harrods." An account this book does not hold, or a body that does not parse. The whole request is refused before anything is written. A misspelt account is never minted here. - 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
scope_missing: "This key cannot write Order book." The key may not make this write.scope_missingwhen the key does not hold Order book at write;plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account names another, in a sentence naming both. That last one is the key's own binding rather than one of the seam's five, and it is its own code so a caller can branch on it. - 413 Booking JSON exceeds the 1 MiB limit; use the file import for larger books.
- 429
What is actually walking
GET /api/v1/order-book/signals
Scopes: order_book:read
The pending claims retailers have made against their book: one row per claim with the account, the line it names, the claim type, what the retailer wants, the line's current booked value and quantity, the source text it was read from, and when it was raised, with totals by type.
| Required | In | What it is |
|---|---|---|
season_code | query | The season being read, e.g. SS27. |
| Optional | In | What it is |
|---|---|---|
commitment_id | query | Narrow the book to one Commitment's scope. |
as_of | query | Reconstruct the book as it stood at this instant (ISO-8601). Default is now. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/signals?season_code=<season_code>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"as_of": "2026-09-04T06:00:00+00:00",
"scope": {
"commitment_id": null,
"season_code": "SS27"
},
"scope_reason": null,
"signals": [
{
"account": "Selfridges",
"asked_for": {
"cancel_date": null,
"price_amount": null,
"quantity": null,
"ship_window_start": "2027-04-01"
},
"id": 3341,
"line_booked_qty": 1400,
"line_key": "tp_00417|SS27|4410092",
"line_value_usd": 41800,
"raised_at": "2026-09-01T09:12:44+00:00",
"signal_type": "reschedule",
"source_text": "Can we push the March drop to April",
"status": "pending",
"trading_partner_id": "tp_00417",
"unsized_reason": null
}
],
"totals": {
"by_type": {
"reschedule": 1
},
"pending": 1,
"sized_lines": 1,
"sized_value_usd": 41800,
"unsized_claims": 0
}
},
"message": {
…
}
}What it refuses
- 400 A required parameter is missing, or a date could not be read.
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account calls this read, whose figure covers every account on the book; the sentence namesGET /order-book/account-stylesandGET /order-book/account-anchor, which are that account's own. - 429
One style's live lines across every account
GET /api/v1/order-book/style-lines
Scopes: order_book:read
One style's live lines across every account: quantity, wholesale price, status, ship window, cancel date and the confirmation verdict per account, with totals and a count of the cancelled lines.
| Required | In | What it is |
|---|---|---|
product_id | query | The style. The asking surface's rows are styles, so this is required. |
| Optional | In | What it is |
|---|---|---|
season_code | query | The season. One of season_code or commitment_id is required. |
commitment_id | query | A Commitment whose declared season keys the book. |
as_of | query | Reconstruct the book as it stood at this instant (ISO-8601). Default is now. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/style-lines?product_id=<product_id>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"as_of": "2026-09-04T06:00:00+00:00",
"cancelled_lines": 1,
"commitment_id": null,
"currency": {
"basis": "same",
"functional": "USD",
"rate": null,
"reason": null,
"reporting": "USD",
"transaction": "USD"
},
"lines": [
{
"booked_qty": 1400,
"cancel_date": "2027-01-15",
"line_verdict": "accepted",
"name": "Selfridges",
"ship_window_start": "2027-02-15",
"status": "confirmed",
"trading_partner_id": "tp_00417",
"wholesale_price_amount": 29.5
},
{
"booked_qty": 600,
"cancel_date": null,
"line_verdict": null,
"name": "Le Bon Marché",
"ship_window_start": null,
"status": "hold",
"trading_partner_id": "tp_00902",
"wholesale_price_amount": null
}
],
"product_id": "4410092",
"reason": null,
"scope_reason": null,
"season_code": "SS27",
"season_source": "stated"
…
}
}What it refuses
- 400 A required parameter is missing, or a date could not be read.
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account calls this read, whose figure covers every account on the book; the sentence namesGET /order-book/account-stylesandGET /order-book/account-anchor, which are that account's own. - 429
What is booked for a season
GET /api/v1/order-book/summary
Scopes: order_book:read
The headline of a wholesale book for one season: booked quantity and value, lines, accounts, the split by status and by channel, the buy envelope the book runs against with open to buy, the prebook against at-once split, and the firm, walkable and unknown split of the committed value.
| Required | In | What it is |
|---|---|---|
season_code | query | The season being read, e.g. SS27. |
| Optional | In | What it is |
|---|---|---|
commitment_id | query | Narrow the book to one Commitment's scope. |
as_of | query | Reconstruct the book as it stood at this instant (ISO-8601). Default is now. |
season_start | query | Declare the date the season starts shipping, what the prebook / at-once split is measured against. |
Tightly-Version | header | The date train to answer on. |
bash
curl "https://api.app.tightly.io/api/v1/order-book/summary?season_code=<season_code>" \
-H "Authorization: Bearer $TIGHTLY_API_KEY"What it answers
json
{
"data": {
"as_of": "2026-09-04T06:00:00+00:00",
"book": {
"accounts": 37,
"booked_qty": 48210,
"booked_value_usd": 1284300,
"by_channel": [
{
"booked_qty": 31200,
"booked_value_usd": 903100,
"sales_channel_id": "61240442"
}
],
"by_status": {
"confirmed": {
"qty": 40210,
"value_usd": 1284300
},
"hold": {
"qty": 8000,
"value_usd": null
}
},
"committed_qty": 40210,
"lines": 612,
"soft_qty": 8000,
"soft_value_usd": null
},
"currency": {
"basis": "same",
"functional": "USD",
"rate": null,
"reason": null,
"reporting": "USD",
"transaction": "USD"
},
"envelope": {
"committed_usd": 1284300,
"envelope_usd": 1600000
…
}
}
}What it refuses
- 400 A required parameter is missing, or a date could not be read.
- 401
key_invalid: "The API key is not valid." No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for. - 403
plan_excludes: "This organisation's plan does not include Tightly Connect. It is sold with Essentials+." The key may not reach this operation.plan_excludeswhen Order book is sold with Essentials+ and this organisation's plan does not include it;scope_missingwhen the key does not hold Order book;organization_mismatchwhen the path names an organisation that is not the key's;ip_not_allowedwhen the caller's address is outside the key's allowlist;account_mismatchwhen a key issued to one account calls this read, whose figure covers every account on the book; the sentence namesGET /order-book/account-stylesandGET /order-book/account-anchor, which are that account's own. - 429