Kynthar API Documentation

Procurement intelligence over HTTP. Upload documents, read the extracted and cross-referenced results, and subscribe to events.

Base URL: https://kynthar.com

All endpoints are versioned under /api/v1/.

Authentication

Company or per-user API key. Send as Authorization: Bearer <key> or as X-API-Key: <key> header.

X-API-Key: your_api_key_here

Get your API key: Login → Settings → Copy API Key


Response envelope

Canonical success envelope. Single shape for every 2xx JSON response.

FieldType
dataany
paginationobject
pagination.next_cursorstring or null
pagination.has_moreboolean
pagination.limitinteger
metaobject

Errors use one shape everywhere:

FieldType
errorobject
error.codestring
error.messagestring
error.detailsany
error.request_idstring
{
  "error": {
    "code": "RESOURCE_NOT_FOUND",
    "message": "Document not found"
  }
}

Common statuses: 401 bad or missing API key · 404 not found · 422 validation failed · 429 rate or plan limit reached · 500 our bad, we're on it.


Pagination

Cursor pagination block. Absent from the envelope when the response is a complete list.

  • cursor — Opaque base64url cursor; omit for first page.
  • limit — Page size (default 25, max 100).
FieldType
next_cursorstring or null
has_moreboolean
limitinteger

Pass pagination.next_cursor back as cursor until has_more is false.


Quick start: upload a document

1. Request an upload slot

POST /api/v1/ingest/initiate
Content-Type: application/json

{ "file_name": "invoice.pdf", "content_type": "application/pdf" }

The response data carries a presigned upload_url and a key.

2. Upload the file bytes

PUT <data.upload_url>
Content-Type: application/pdf

<raw file bytes>

3. Start processing

POST /api/v1/ingest/finalize
Content-Type: application/json

{ "key": "<data.key>", "original_filename": "invoice.pdf" }

The response data.doc_id identifies the document.

4. Read the result

Poll GET /api/v1/documents/{doc_id} until processing completes — or skip polling and subscribe to the document.processed webhook below.

You can also email documents straight in: every company gets an ingest address ({your-company-id}@ingest.kynthar.com — find yours in Settings).


API reference

Generated from the same contract the API is served and validated with — grouped by domain. Endpoints not yet in the published contract are omitted; this reference grows as the contract does.

Accessorial authorizations

GET /api/v1/accessorial-authorizations

List accessorial authorizations

data payload:

FieldType
authorizationsarray of objects
authorizations[].idnumber
authorizations[].pro_numberstring
authorizations[].charge_codestring
authorizations[].authorized_bystring or null
authorizations[].authorized_atstring or null
authorizations[].authorized_amount_maxstring or number or null
authorizations[].authorization_expires_atstring or null
authorizations[].sourcestring
authorizations[].notesstring or null
authorizations[].created_atstring or null
authorizations[].updated_atstring or null

Account

GET /api/v1/bootstrap

Consolidated auth + company bootstrap payload — Returns everything a client needs to initialize a session in one request — the authenticated user, company profile, enabled modules, feature flags, and plan. Call it once on startup instead of fetching each piece separately.

Returns: Bootstrap payload

Agent

POST /api/v1/agent/actions/{id}/approve

Create agent action approve

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
action_idstring
statusstring
decision_idstring
approved_bystring
denied_bystring

POST /api/v1/agent/actions/{id}/deny

Create agent action deny

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
action_idstring
statusstring
decision_idstring
approved_bystring
denied_bystring

GET /api/v1/agent/pending-approvals

Get agent pending approvals

data payload:

FieldType
actionsarray of objects
actions[].idstring
actions[].actionstring
actions[].tool_idstring
actions[].reasonstring
actions[].trust_levelstring
actions[].descriptionstring or null
actions[].contextobject or null
actions[].created_atstring or null

Agent actions

POST /api/v1/agent-actions/{action_id}/dismiss

Create agent action dismiss

ParameterInTypeRequiredDescription
action_idpathstringyes—

data payload:

FieldType
action_idstring
statusstring
insight_action_idstring

POST /api/v1/agent-actions/{action_id}/execute

Create agent action execute

ParameterInTypeRequiredDescription
action_idpathstringyes—

data payload:

FieldType
action_idstring
statusstring
decision_idstring
dispatched_bystring

GET /api/v1/agent-actions/{action_id}/reasoning

Get agent action reasoning

ParameterInTypeRequiredDescription
action_idpathstringyes—

data payload:

FieldType
action_idstring
tool_idstring
tool_descriptionstring or null
statusstring
confidencenumber or null
reasoning_summarystring or null
source_signalsarray of objects or null
source_kindstring or null
entity_refsarray of objects or null
created_atstring
expires_atstring or null
agent_principal_idstring

GET /api/v1/agent-actions/stats

Get agent actions stats

data payload:

FieldType
queued_for_approvalnumber
executed_last_24hnumber
dismissed_last_24hnumber
failed_last_24hnumber
observations_executed_last_24hnumber
by_toolobject

Alerts

GET /api/v1/alerts/date-drift

Get alerts date drift

data payload:

FieldType
alertsarray of objects
alerts[].alert_idstring
alerts[].po_numberstring
alerts[].vendor_namestring or null
alerts[].line_itemstring or null
alerts[].requested_datestring or null
alerts[].promised_datestring or null
alerts[].drift_daysnumber or string or null
alerts[].statusstring or null
alerts[].created_atstring or null

GET /api/v1/alerts/date-drift/count

Get alerts date drift count

data payload:

FieldType
countsobject
counts.newnumber
counts.acknowledgednumber
counts.resolvednumber
new_countnumber

Anomalies

GET /api/v1/anomalies

List anomalies/findings with cursor pagination and filters

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque pagination cursor
limitqueryintegernoPage size (shared cursor contract)
statusquerystringnoAnomaly status filter (default 'flagged')
severityquerystringnoSeverity filter
anomaly_typequerystringnoType filter
doc_typequerystringnoDocument type filter
doc_idquerystringnoScope to one document
buyer_po_numberquerystringnoScope to one PO number
vendor_idquerystringnoScope to one vendor
groupedquerystringnoCollapse per-doc fan-out to (type, part) tuples ('1')

data payload:

FieldType
anomaliesarray of objects
anomalies[].idnumber or string
anomalies[].finding_idstring
anomalies[].anomaly_typestring
anomalies[].severitystring
anomalies[].statusstring
anomalies[].titlestring or null
anomalies[].summarystring or null
anomalies[].descriptionstring or null
anomalies[].claimobject or null
anomalies[].verification_statusstring or null
anomalies[].detected_atstring
anomalies[].related_doc_idsarray of string or null
anomalies[].field_namestring or null
anomalies[].current_valueany or null
anomalies[].expected_valueany or null
anomalies[].deviation_scorenumber or string or null
anomalies[].deviation_percentnumber or string or null
anomalies[].expectation_part_keystring or null
anomalies[].provenanceobject or null

Approvals

GET /api/v1/approvals/pending

Get approvals pending

data payload:

FieldType
pending_approvalsarray of objects
pending_approvals[].action_idstring or null
pending_approvals[].doc_idstring
pending_approvals[].action_typestring or null
pending_approvals[].approval_statusstring or null
pending_approvals[].assigned_tostring or null
pending_approvals[].due_datestring or null
pending_approvals[].invoiceobject
pending_approvals[].matchobject
pending_approvals[].ruleobject
pending_approvals[].vendor_risk_scorestring or number or null or null
pending_approvals[].notesstring or null
pending_approvals[].created_bystring or null
pending_approvals[].created_atstring or null

GET /api/v1/approvals/rules

Get approvals rules

data payload:

FieldType
rulesarray of objects
rules[].idstring
rules[].rule_namestring
rules[].rule_typestring
rules[].conditionsobject or null
rules[].approver_rolestring or null
rules[].approver_user_idstring or null
rules[].approver_emailstring or null
rules[].prioritynumber
rules[].is_activeboolean
rules[].created_atstring or null
rules[].updated_atstring or null

As of

GET /api/v1/as-of/{entity_type}/{entity_id}

Replay an entity's facts as they stood on a past date

ParameterInTypeRequiredDescription
entity_typepathstringyes—
entity_idpathstringyes—
atquerystringyesISO timestamp to replay to.

data payload:

FieldType
entity_typestring
entity_idstring
as_ofstring
fact_countnumber
factsarray of objects
facts[].kindstring
facts[].valueany
facts[].effective_atstring or null
facts[].fact_idstring
facts[].evidence_quotestring or null
facts[].verification_statusstring or null
facts[].confidencenumber or null

GET /api/v1/as-of/vendor/{vendor_id}/orders

Replay a vendor's orders as they stood on a past date

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
atquerystringyesISO timestamp to replay to.

data payload:

FieldType
vendor_idstring
as_ofstring
order_countnumber
undated_excludednumber
unnumbered_excludednumber
ordersarray of objects
orders[].po_numberstring or null
orders[].order_datestring or null
orders[].promised_delivery_datestring or null
orders[].total_amountnumber or string or null
orders[].historystring

Auth

GET /api/v1/auth/company-settings

Get auth company settings

data payload:

FieldType
company_idstring
company_namestring
company_name_is_placeholderboolean or null
emailstring or null
ingest_emailstring or null
webhook_urlstring or null
webhook_enabledboolean or null
webhook_secretstring or null
extraction_configobject or null
model_tierstring or null
enabled_modulesobject or null
has_email_ingestsboolean or null
erp_connectionsarray of objects or null
email_preferencesobject or null
company_addressstring or null
company_citystring or null
company_statestring or null
company_zip_codestring or null
company_phonestring or null
logo_s3_keystring or null
default_payment_termsstring or null
default_po_notesstring or null
base_currencystring or null

Automations

GET /api/v1/automations/actions

Get automations actions

data payload:

FieldType
actionsarray of objects
actions[].namestring
actions[].descriptionstring or null
actions[].categorystring or null
actions[].schemaany
actions[].requiresApprovalboolean

GET /api/v1/automations/events

Get automations events

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
eventsarray of objects
events[].idstring
events[].event_typestring or null
events[].sourcestring or null
events[].entity_idstring or null
events[].entity_typestring or null
events[].payloadobject
events[].processed_atstring or null
events[].created_atstring or null

GET /api/v1/automations/executions

Get automations executions

data payload:

FieldType
totalnumber
executionsarray of objects
executions[].idstring
executions[].company_idstring or null
executions[].rule_idstring
executions[].rule_namestring or null
executions[].trigger_eventstring or null
executions[].trigger_dataobject
executions[].statusstring
executions[].temporal_workflow_idstring or null
executions[].vendor_idstring or null
executions[].vendor_namestring or null
executions[].resultobject or null
executions[].started_atstring or null
executions[].completed_atstring or null
executions[].errorstring or null
executions[].edited_subjectstring or null
executions[].edited_bodystring or null

GET /api/v1/automations/executions/{id}

Get automations execution

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
executionobject
execution.idstring
execution.company_idstring or null
execution.rule_idstring
execution.rule_namestring or null
execution.trigger_eventstring or null
execution.trigger_dataobject
execution.statusstring
execution.temporal_workflow_idstring or null
execution.vendor_idstring or null
execution.vendor_namestring or null
execution.resultobject or null
execution.started_atstring or null
execution.completed_atstring or null
execution.errorstring or null
execution.edited_subjectstring or null
execution.edited_bodystring or null
action_logsarray of objects
action_logs[].idstring
action_logs[].execution_idstring
action_logs[].action_typestring or null
action_logs[].action_dataobject
action_logs[].resultstring or null
action_logs[].created_atstring or null
emailsarray of objects
emails[].idstring
emails[].execution_idstring
emails[].directionstring
emails[].senderstring or null
emails[].recipientstring or null
emails[].subjectstring or null
emails[].body_htmlstring or null
emails[].body_textstring or null
emails[].ses_message_idstring or null
emails[].created_atstring or null

GET /api/v1/automations/executions/{id}/preview

Get automations execution preview

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
subjectstring or null
body_htmlstring or null
recipient_emailstring or null
trigger_dataobject
trigger_eventstring or null
vendor_namestring or null
rule_namestring or null
is_editedboolean

GET /api/v1/automations/history

Get automations history

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data array — each row:

FieldType
idstring
record_idstring
sourcestring
statusstring
occurred_atstring
rule_idstring or null
rule_namestring or null
tool_idstring or null
vendor_namestring or null
reasoning_summarystring or null
entity_refsarray of objects or null
execution_action_idstring or null

GET /api/v1/automations/history/agent/{id}

Get automations history agent

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
record_idstring
sourcestring
statusstring
occurred_atstring
rule_idstring or null
rule_namestring or null
tool_idstring or null
vendor_namestring or null
reasoning_summarystring or null
entity_refsarray of objects or null
execution_action_idstring or null

GET /api/v1/automations/history/stats

Get automations history stats

data payload:

FieldType
by_statusarray of objects
by_status[].statusstring
by_status[].countnumber
totalnumber

GET /api/v1/automations/rules

Get automations rules

data payload:

FieldType
rulesarray of objects
rules[].idstring
rules[].company_idstring or null
rules[].template_idstring or null
rules[].template_keystring or null
rules[].template_namestring or null
rules[].categorystring or null
rules[].template_descriptionstring or null
rules[].step_configarray of any or null
rules[].namestring
rules[].enabledboolean
rules[].trigger_eventstring or null
rules[].conditionsobject
rules[].actionsarray of any
rules[].email_subject_templatestring or null
rules[].email_body_templatestring or null
rules[].cooldown_hoursnumber
rules[].max_daily_emailsnumber
rules[].require_approvalboolean
rules[].quiet_hours_startstring or null
rules[].quiet_hours_endstring or null
rules[].quiet_hours_timezonestring or null
rules[].workflow_modestring or null
rules[].condition_groupsany or null
rules[].event_typesstring or null
rules[].trigger_sourcestring or null
rules[].recipient_rolestring or null
rules[].execution_countnumber
rules[].last_executed_atstring or null
rules[].created_atstring or null
rules[].updated_atstring or null

POST /api/v1/automations/rules/{id}/test

Create automations rule test

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rule_namestring or null
trigger_eventstring or null
total_matchesnumber
rate_limited_vendorsarray of string
would_firenumber
matchesarray of objects
dry_runboolean

GET /api/v1/automations/stats

Get automations stats

data payload:

FieldType
active_rulesnumber
total_rulesnumber
executions_30dnumber
successful_30dnumber
failed_30dnumber
emails_sent_30dnumber
replies_received_30dnumber
avg_response_hours_30dnumber or null
committed_30dnumber
value_recovered_30dnumber

GET /api/v1/automations/templates

Get automations templates

data payload:

FieldType
templatesarray of objects
templates[].idstring
templates[].template_keystring or null
templates[].namestring
templates[].descriptionstring or null
templates[].categorystring or null
templates[].trigger_eventstring or null
templates[].default_conditionsobject
templates[].default_actionsarray of any
templates[].default_email_subjectstring or null
templates[].default_email_bodystring or null
templates[].configurable_fieldsarray of any
templates[].sort_ordernumber
templates[].step_configarray of any or null
templates[].created_atstring or null

GET /api/v1/automations/triggers

Get automations triggers

data payload:

FieldType
triggersarray of objects
triggers[].namestring
triggers[].categorystring or null
triggers[].descriptionstring or null
triggers[].eventTypesarray of string
triggers[].availableFieldsarray of objects
triggers[].hasPollQueryboolean

Billing

GET /api/v1/billing/config

Get billing config

data payload:

FieldType
publishable_keystring

GET /api/v1/billing/usage

Get billing usage

data payload:

FieldType
planstring
current_usagenumber
limitnumber or null
within_limitboolean
percentage_usednumber
is_grandfatheredboolean
subscription_statusstring or null
company_idstring
lifetime_usagenumber
is_overageboolean
overage_countnumber
overage_price_centsnumber
per_doc_price_centsnumber or null
trial_ends_atstring or null
pilot_activeboolean
pilot_ends_atstring or null
pilot_days_remainingnumber
cancel_at_period_endboolean
current_period_endstring or null
company_created_atstring or null
dollars_caughtnumber
is_demoboolean
org_usageobject or null

GET /api/v1/billing/usage-history

Get billing usage history

data payload:

FieldType
itemsarray of objects
items[].idstring
items[].counted_atstring or null
items[].item_namestring or null
items[].kindstring
items[].doc_typestring or null
truncatedboolean

Briefing

GET /api/v1/briefing

List briefings

data payload:

FieldType
currency_codestring or null
heroobject
hero.open_issuesnumber
hero.dollars_caughtnumber
hero.emails_processednumber
hero.action_itemsnumber
action_bucketsarray of objects
action_buckets[].labelstring
action_buckets[].countnumber
action_buckets[].linkstring
highlightsarray of objects
highlights[].sourcestring or null
highlights[].severitystring or null
highlights[].titlestring
highlights[].subtitlestring or null
highlights[].linkstring or null
highlights[].amountstring or number or null
highlights[].created_atstring or null
emailobject
email.totalnumber
email.action_requirednumber
email.urgentnumber
email.inboundnumber
email.outboundnumber
generated_atstring or null

Budgets

GET /api/v1/budgets

List budget ledger rows for the authenticated company

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
sort_byquerystringnoSort column (allowlisted per endpoint).
sort_dirquerystringno—
orderquerystringnoAlias for sort_dir (used only when sort_dir is absent).
scope_kindquerystringnoFilter to one budget scope kind.
activequerystringno"1"/"true" restricts to budgets whose period covers today.

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
budgetsarray of objects
budgets[].idstring
budgets[].scope_kindstring
budgets[].scope_refstring or null
budgets[].scope_labelstring or null
budgets[].period_startstring or null
budgets[].period_endstring or null
budgets[].amount_usdnumber or string or null
budgets[].currency_codestring or null
budgets[].encumbrance_usdnumber or string or null
budgets[].actuals_usdnumber or string or null
budgets[].available_usdnumber or string or null
budgets[].excluded_non_usd_countnumber
budgets[].unvalued_doc_countnumber
budgets[].open_po_countnumber
budgets[].invoice_countnumber
budgets[].warning_pctnumber
budgets[].source_citationstring or null
budgets[].created_bystring or null
budgets[].created_atstring or null
budgets[].updated_atstring or null

GET /api/v1/budgets/{id}

Get budget

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
scope_kindstring
scope_refstring or null
scope_labelstring or null
period_startstring or null
period_endstring or null
amount_usdnumber or string or null
currency_codestring or null
encumbrance_usdnumber or string or null
actuals_usdnumber or string or null
available_usdnumber or string or null
excluded_non_usd_countnumber
unvalued_doc_countnumber
open_po_countnumber
invoice_countnumber
warning_pctnumber
source_citationstring or null
created_bystring or null
created_atstring or null
updated_atstring or null
monthly_actualsarray of objects
monthly_actuals[].monthstring or null
monthly_actuals[].actuals_usdnumber or string or null
monthly_actuals[].invoice_countnumber
excluded_notestring or null
unvalued_notestring or null

Carriers

GET /api/v1/carriers/{vendorId}/profile

Get carrier profile

ParameterInTypeRequiredDescription
vendorIdpathstringyes—

data payload:

FieldType
credentialsarray of objects
credentials[].credential_typestring
credentials[].credential_numberstring or null
credentials[].statusstring or null
credentials[].expiration_datestring or null
insurancearray of objects
insurance[].insurance_typestring
insurance[].insurer_namestring or null
insurance[].coverage_amountstring or number or null
insurance[].expiration_datestring or null
insurance[].statusstring or null
contactsarray of objects
contacts[].idstring or null
contacts[].rolestring or null
contacts[].contact_namestring or null
contacts[].emailstring or null
contacts[].phonestring or null
contacts[].is_primaryboolean or null
equipment_typesarray of string
rate_card_summaryobject
rate_card_summary.total_cardsnumber or string or null
rate_card_summary.active_cardsnumber or string or null
rate_card_summary.mode_countnumber or string or null
rate_card_summary.modesarray of string or null
rate_card_summary.earliest_ratestring or null
rate_card_summary.latest_expirystring or null
performanceobject or null
compliance_scorenumber or null

Chart of accounts

GET /api/v1/chart-of-accounts

List chart of accounts

data payload:

FieldType
accountsarray of objects
accounts[].account_codestring
accounts[].account_namestring
accounts[].account_typestring
accounts[].is_activeboolean

Communications

GET /api/v1/communications

List communications with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
statusquerystringno—
actionquerystringno—
typequerystringno—
searchquerystringno—
directionquerystringno—
date_fromquerystringno—
date_toquerystringno—
sortquerystringno—
orderquerystringno—
include_filedquerybooleannoOpt IN to filed noise mail (vendor_marketing / auto_reply / system_notification) — the default listing excludes it server-side.

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
communicationsarray of objects
communications[].idstring
communications[].email_ingest_idstring or null
communications[].communication_typesarray of string
communications[].action_requiredboolean
communications[].urgencystring or null
communications[].communication_datestring or null
communications[].senderobject
communications[].subjectstring or null
communications[].received_atstring or null
communications[].cc_recipientsarray of any
communications[].linked_postring or null
communications[].linked_vendor_namestring or null
communications[].entity_linksarray of objects
communications[].primary_match_scorenumber or string or null
communications[].body_textstring or null
communications[].email_directionstring or null
communications[].sender_domainstring or null
communications[].subject_normalizedstring or null
communications[].in_reply_tostring or null
communications[].has_documentsboolean
communications[].statusstring or null
communications[].snoozed_untilstring or null
communications[].resolved_atstring or null
communications[].resolved_bystring or null
communications[].email_classstring or null
communications[].filed_reasonstring or null
communications[].filed_summarystring or null
communications[].key_infoany or null
communications[].amountsany or null
communications[].datesany or null
communications[].peopleany or null
communications[].referencesany or null
communications[].provenancearray of objects
totalnumber or string or null

GET /api/v1/communications/{id}

Get communication

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
email_ingest_idstring or null
communication_typesarray of string
action_requiredboolean
urgencystring or null
communication_datestring or null
senderobject
sender.emailstring or null
sender.namestring or null
sender.titlestring or null
subjectstring or null
received_atstring or null
cc_recipientsarray of any
linked_postring or null
linked_vendor_namestring or null
entity_linksarray of objects
entity_links[].typestring or null
entity_links[].refstring or null
entity_links[].scorenumber or string or null
entity_links[].entity_typestring or null
entity_links[].entity_idstring or null
entity_links[].reference_valuestring or null
primary_match_scorenumber or string or null
body_textstring or null
email_directionstring or null
sender_domainstring or null
subject_normalizedstring or null
in_reply_tostring or null
has_documentsboolean
statusstring or null
snoozed_untilstring or null
resolved_atstring or null
resolved_bystring or null
email_classstring or null
filed_reasonstring or null
filed_summarystring or null
key_infoany or null
amountsany or null
datesany or null
peopleany or null
referencesany or null
provenancearray of objects
provenance[].fact_idstring
provenance[].extraction_run_idstring or null
provenance[].document_idstring or null
provenance[].evidence_quotestring or null
provenance[].confidencenumber or string or null
provenance[].fact_fingerprintstring or null
provenance[].page_startnumber or null
provenance[].page_endnumber or null
provenance[].char_startnumber or null
provenance[].char_endnumber or null
body_htmlstring or null
to_recipientsarray of string
thread_idstring or null
attachmentsarray of objects
attachments[].doc_idstring
attachments[].doc_typestring or null
attachments[].document_numberstring or null
attachments[].file_namestring or null
attachments[].relationstring or null
attachments[].mime_typestring or null
attachments[].size_bytesnumber or null
attachments[].total_amountnumber or string or null
attachments[].currencystring or null
attachments[].payment_termsstring or null
attachments[].document_datestring or null
unread_attachmentsarray of objects
unread_attachments[].filenamestring or null
unread_attachments[].notestring
extractedobject
extracted.summarystring or null
extracted.tracking_numbersarray of string or null
extracted.total_amountstring or number or null
extracted.amounts_mentionedarray of objects
extracted.attachments_mentionedarray of objects
extracted.response_neededboolean or null
extracted.delivery_updatestring or null
extracted.quantity_updatestring or null
extracted.vendor_questionsarray of string
extracted.response_deadlinestring or null
extracted.price_updatestring or null
extracted.order_statusstring or null
extracted.line_item_updatesarray of objects
extracted.quality_issuestring or object or null
extracted.return_rmastring or object or null
extracted.decision_requiredstring or object or null
extracted.insightsstring or null
extracted.lead_time_changestring or null
extracted.payment_infostring or null
extracted.payment_termsstring or null
extracted.ship_to_changestring or null
extracted.shipping_documentsstring or null
extracted.customs_infostring or null
extracted.lot_batch_numbersarray of string or null
extracted.certificationsarray of string or null
extracted.order_linksarray of objects
extracted.portal_reference_without_linkboolean or null
extracted.key_contactsarray of objects
extracted.extrasobject
sender_sourcestring or null
forwarded_bystring or null
link_resolutionobject or null
linked_po_link_idstring or null

GET /api/v1/communications/{id}/actions

Get communication actions

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
actionsarray of objects
actions[].idstring
actions[].action_typestring or null
actions[].notesstring or null
actions[].snooze_untilstring or null
actions[].link_po_numberstring or null
actions[].created_bystring or null
actions[].created_atstring or null

GET /api/v1/communications/{id}/facts

Get communication facts

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
email_ingest_idstring
factsarray of objects
facts[].fact_idstring
facts[].kindstring
facts[].statedobject or null
facts[].actstring or null
facts[].topicstring or null
facts[].speakerstring or null
facts[].addresseestring or null
facts[].subject_refstring or null
facts[].in_reply_tostring or null
facts[].valid_fromstring or null
facts[].conditionobject or null
facts[].supersededboolean
facts[].superseded_by_fact_idstring or null
facts[].confidencenumber or string or null
facts[].evidence_quotestring or null
facts[].displaystring or null
facts[].po_numberstring or null
facts[].payloadobject or null
facts[].attachment_checkobject or null
facts[].display_fieldsarray of objects

POST /api/v1/communications/{id}/link

Create communication link

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
successboolean
linkobject
link.idstring
link.communication_idstring or null
link.procurement_header_idstring or null
link.link_typestring or null
link.match_methodstring or null
link.linked_bystring or null

GET /api/v1/communications/{id}/link-suggestions

Get communication link suggestions

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
suggestionsarray of objects
suggestions[].doc_idstring
suggestions[].buyer_po_numberstring or null
suggestions[].vendor_namestring or null
suggestions[].match_reasonstring or null
suggestions[].document_typestring or null
suggestions[].created_atstring or null

POST /api/v1/communications/{id}/reply

Create communication reply

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
successboolean
sent_tostring or null
subjectstring or null
message_idstring or null

GET /api/v1/communications/{id}/thread

Get communication thread

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
threadarray of objects
thread[].idstring
thread[].communication_typesarray of string
thread[].action_requiredboolean
thread[].urgencystring or null
thread[].senderobject
thread[].subjectstring or null
thread[].received_atstring or null
thread[].directionstring or null
thread[].in_reply_tostring or null
thread[].summarystring or null
thread[].to_recipientsarray of string
thread[].cc_recipientsarray of string
thread[].sender_domainstring or null
thread[].body_textstring or null
thread[].body_htmlstring or null
thread[].extractedobject or null
thread[].provenancearray of objects

GET /api/v1/communications/{id}/threads

Get communication threads

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
threadsarray of objects
threads[].thread_idstring
threads[].thread_kindstring
threads[].primary_po_numberstring or null
threads[].statusstring
threads[].outcomestring or null
threads[].summarystring or null
threads[].has_anomalyboolean
threads[].delivered_in_fullboolean or null
threads[].relationshipsarray of objects
threads[].eventsarray of objects

GET /api/v1/communications/stats

Get communications stats

data payload:

FieldType
totalnumber
opennumber
resolvednumber
snoozednumber
action_requirednumber
urgentnumber
highnumber
inboundnumber
outboundnumber
unlinkednumber
awaiting_responsenumber

Company settings

GET /api/v1/company-settings

List company settings for the authenticated company

data payload:

FieldType
settingsobject

Completeness

GET /api/v1/completeness/vendors/{vendorId}

Get completeness vendor

ParameterInTypeRequiredDescription
vendorIdpathstringyes—

data payload:

FieldType
vendor_idstring
vendor_namestring
doc_countnumber
avg_completeness_scorenumber or null
docs_with_auditnumber
docs_without_auditnumber
missed_labelsarray of objects
missed_labels[].label_textstring
missed_labels[].suggested_canonical_keystring
missed_labels[].categorystring
missed_labels[].miss_countnumber
missed_labels[].doc_count_seennumber
missed_labels[].miss_ratenumber

Contracts

GET /api/v1/contracts

List contracts for the authenticated company

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
sort_byquerystringnoSort column (allowlisted per endpoint).
sort_dirquerystringno—
orderquerystringnoAlias for sort_dir (used only when sort_dir is absent).
statusquerystringnoFilter by contract status.
vendor_idquerystringnoFilter to one vendor.
contract_typequerystringnoFilter by contract type.
searchquerystringnoFree-text search over contract number / vendor name.
source_doc_idquerystringnoLook up contracts created from one source document (bypasses the list MV so freshly extracted contracts appear).
filterquerystringnoOpaque base64url filter-builder spec.

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
contractsarray of objects
contracts[].contract_idstring
contracts[].contract_numberstring or null
contracts[].contract_typestring or null
contracts[].scope_categorystring or null
contracts[].vendor_idstring or null
contracts[].vendor_namestring or null
contracts[].effective_datestring or null
contracts[].expiration_datestring or null
contracts[].total_value_limitstring or number or null
contracts[].cumulative_spendstring or number or null
contracts[].usage_completeboolean
contracts[].utilization_pctstring or number or null
contracts[].statusstring or null
contracts[].auto_renewalboolean or null
contracts[].health_scorestring or number or null
contracts[].risk_levelstring or null
contracts[].successor_contract_idstring or null
contracts[].successor_contract_numberstring or null
contracts[].created_atstring or null
statsobject
stats.totalnumber
stats.activenumber
stats.expiringnumber
stats.expirednumber
stats.over_ntenumber
stats.renewednumber
stats.is_renewalnumber

Custom fields

GET /api/v1/custom-fields/discovered

Get custom fields discovered

data payload:

FieldType
header_fieldsarray of objects
header_fields[].field_keystring
header_fields[].document_countnumber
header_fields[].line_item_countnumber
line_fieldsarray of objects
line_fields[].field_keystring
line_fields[].document_countnumber
line_fields[].line_item_countnumber

Delivery analytics

GET /api/v1/analytics/carrier-scorecards

Carrier scorecards + summary

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
currency_codestring or null
windowany or null
carriersarray of objects
carriers[].vendor_idstring or null
carriers[].carrier_namestring
carriers[].total_deliveriesnumber or string or null
carriers[].measured_deliveriesnumber or string or null
carriers[].otif_pctstring or number or null
carriers[].on_time_pctstring or number or null
carriers[].in_full_pctstring or number or null
carriers[].avg_days_variancestring or number or null
carriers[].carrier_otif_strict_pctstring or number or null or null
carriers[].carrier_otif_strict_on_timenumber or string or null
carriers[].carrier_otif_strict_measurednumber or string or null
carriers[].avg_strict_variance_daysstring or number or null or null
carriers[].transit_time_actual_avgstring or number or null or null
carriers[].total_freight_spendstring or number or null
carriers[].invoice_countnumber or string or null
carriers[].anomaly_countnumber or string or null
carriers[].critical_countnumber or string or null
carriers[].active_rate_cardsnumber or string or null
carriers[].composite_scorestring or number or null
carriers[].tenders_sentnumber or string or null
carriers[].tenders_acceptednumber or string or null
carriers[].acceptance_rate_pctstring or number or null
carriers[].avg_acceptance_lag_hoursstring or number or null
carriers[].acceptance_month_bucketstring or null
carriers[].delivered_basis_countnumber or string or null
carriers[].received_basis_countnumber or string or null
carriers[].graded_basis_labelstring or null
summaryobject
summary.total_carriersnumber or string or null
summary.fleet_otif_strict_pctstring or number or null or null
summary.fleet_otif_on_timenumber or string or null
summary.fleet_otif_measurednumber or string or null
summary.graded_basis_labelstring or null
summary.total_freight_spendstring or number or null
summary.active_rate_cardsnumber or string or null

GET /api/v1/analytics/contract-reviews

Get contract reviews

data payload:

FieldType
currency_codestring or null
latestobject or null
historyarray of objects
history[].idstring
history[].review_periodstring or null
history[].statusstring
history[].contracts_reviewednumber or string or null
history[].critical_findingsnumber or string or null
history[].high_findingsnumber or string or null
history[].medium_findingsnumber or string or null
history[].completed_atstring or null

GET /api/v1/analytics/discounts

Early-payment discount capture analytics

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
currency_codestring or null
totalsobject
totals.total_capturedstring or number or null
totals.total_missedstring or number or null
totals.captured_countnumber or string or null
totals.missed_countnumber or string or null
totals.capture_rate_pctstring or number or null
totals.eligible_countnumber or string or null
totals.expiring_soon_countnumber or string or null
totals.pipeline_savingsstring or number or null
totals.payment_data_availableboolean or null
over_timearray of objects
over_time[].monthstring
over_time[].capturedstring or number or null
over_time[].missedstring or number or null
over_time[].captured_countnumber or string or null
over_time[].missed_countnumber or string or null
by_vendorarray of objects
by_vendor[].vendor_idstring or null
by_vendor[].vendor_namestring
by_vendor[].capturedstring or number or null
by_vendor[].missedstring or number or null
by_vendor[].captured_countnumber or string or null
by_vendor[].missed_countnumber or string or null
by_vendor[].capture_rate_pctstring or number or null
periodstring

GET /api/v1/analytics/executive-summary

Get executive summary

data payload:

FieldType
currency_codestring or null
total_spendstring or number or null
total_spend_windowany or null
total_spend_basisstring or null
otif_pctstring or number or null
otif_windowany or null
otif_deliveriesnumber or string or null
otif_on_time_deliveriesnumber or string or null
otif_measured_deliveriesnumber or string or null
first_pass_match_ratestring or number or null or null
first_pass_match_windowany or null
first_pass_matchednumber or string or null
first_pass_match_eligiblenumber or string or null
value_surfacedstring or number or null
value_currency_codestring or null
open_exceptionsnumber or string or null
active_contractsnumber or string or null
on_contract_spend_pctstring or number or null
on_contract_spendstring or number or null
total_spend_for_coveragestring or number or null
on_contract_item_countnumber or string or null
total_item_countnumber or string or null

GET /api/v1/analytics/freight-audit

Freight audit anomaly rollup

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
totalsobject
totals.total_anomaliesnumber or string or null
totals.high_countnumber or string or null
totals.critical_countnumber or string or null
totals.medium_countnumber or string or null
totals.low_countnumber or string or null
totals.resolved_countnumber or string or null
by_typearray of objects
by_type[].anomaly_typestring
by_type[].countnumber or string or null
by_type[].critical_countnumber or string or null
trendarray of objects
trend[].monthstring
trend[].anomaly_countnumber or string or null
trend[].critical_countnumber or string or null
recentarray of objects
recent[].idstring or null
recent[].anomaly_typestring or null
recent[].severitystring or null
recent[].statusstring or null
recent[].messagestring or null
recent[].vendor_namestring or null
recent[].vendor_idstring or null
recent[].created_atstring or null

GET /api/v1/analytics/freight-spend

Freight spend KPIs, carriers, lanes

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
currency_codestring or null
kpisobject
kpis.shipment_countnumber or string or null
kpis.total_freight_spendstring or number or null
kpis.avg_cost_per_shipmentstring or number or null
spend_over_timearray of objects
spend_over_time[].monthstring
spend_over_time[].invoice_countnumber or string or null
spend_over_time[].total_spendstring or number or null
by_carrierarray of objects
by_carrier[].carrier_namestring
by_carrier[].invoice_countnumber or string or null
by_carrier[].total_spendstring or number or null
by_charge_typearray of objects
by_charge_type[].charge_typestring
by_charge_type[].line_countnumber or string or null
by_charge_type[].total_amountstring or number or null
top_lanesarray of objects
top_lanes[].originstring or null
top_lanes[].deststring or null
top_lanes[].shipment_countnumber or string or null
top_lanes[].total_spendstring or number or null
top_lanes[].avg_coststring or number or null

GET /api/v1/analytics/intermodal-audit

Intermodal audit anomaly rollup

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
totalsobject
totals.total_anomaliesnumber or string or null
totals.high_countnumber or string or null
totals.critical_countnumber or string or null
totals.medium_countnumber or string or null
totals.low_countnumber or string or null
totals.resolved_countnumber or string or null
by_typearray of objects
by_type[].anomaly_typestring
by_type[].countnumber or string or null
by_type[].critical_countnumber or string or null
trendarray of objects
trend[].monthstring
trend[].anomaly_countnumber or string or null
trend[].critical_countnumber or string or null
recentarray of objects
recent[].idstring or null
recent[].anomaly_typestring or null
recent[].severitystring or null
recent[].statusstring or null
recent[].messagestring or null
recent[].vendor_namestring or null
recent[].vendor_idstring or null
recent[].created_atstring or null

GET /api/v1/analytics/lane-intelligence

Lane intelligence (carrier recs, stats, rate cards)

ParameterInTypeRequiredDescription
origin_zipquerystringyesOrigin ZIP code.
dest_zipquerystringyesDestination ZIP code.
modequerystringnoFreight mode (default LTL).

data payload:

FieldType
laneobject
lane.origin_zipstring
lane.dest_zipstring
lane.modestring
lane.lane_idstring or null
lane.origin_countrystring or null
lane.dest_countrystring or null
lane.haversine_kmnumber or null
lane.region_pairstring or null
lane.transit_predictionobject or null
recommendationsarray of objects
recommendations[].carrier_namestring
recommendations[].carrier_vendor_idstring or null
recommendations[].shipment_countnumber or string or null
recommendations[].avg_coststring or number or null
recommendations[].median_coststring or number or null
recommendations[].min_coststring or number or null
recommendations[].max_coststring or number or null
recommendations[].otif_pctstring or number or null
recommendations[].on_time_pctstring or number or null
recommendations[].avg_days_variancestring or number or null
recommendations[].has_rate_cardboolean or null
recommendations[].rate_card_ratestring or number or null
recommendations[].rate_typestring or null
recommendations[].cost_scorenumber or string or null
recommendations[].otif_scorenumber or string or null
recommendations[].volume_scorenumber or string or null
recommendations[].composite_scorestring or number or null
recommendations[].acceptance_rate_pctstring or number or null
recommendations[].avg_acceptance_lag_hoursstring or number or null
recommendations[].tenders_sentnumber or string or null
recommendations[].tenders_acceptednumber or string or null
recommendations[].acceptance_month_bucketstring or null
lane_statsobject
lane_stats.total_shipmentsnumber or string or null
lane_stats.carrier_countnumber or string or null
lane_stats.avg_coststring or number or null
lane_stats.median_coststring or number or null
rate_cardsarray of objects
rate_cards[].carrier_namestring
rate_cards[].scac_codestring or null
rate_cards[].discount_pctstring or number or null
rate_cards[].rate_per_cwtstring or number or null
rate_cards[].flat_ratestring or number or null
rate_cards[].rate_per_milestring or number or null
rate_cards[].minimum_chargestring or number or null
rate_cards[].freight_classstring or null
rate_cards[].weight_break_minstring or number or null
rate_cards[].weight_break_maxstring or number or null

GET /api/v1/analytics/otif

OTIF analytics summary over a trailing window

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (default '30')

data payload:

FieldType
summaryobject
summary.otif_pctstring or number or null
summary.on_time_pctstring or number or null
summary.in_full_pctstring or number or null
summary.total_deliveriesnumber or string or null
summary.measured_deliveriesnumber or string or null
summary.on_time_countnumber or string or null
summary.in_full_countnumber or string or null
summary.otif_countnumber or string or null
summary.on_time_measurednumber or string or null
summary.in_full_measurednumber or string or null
summary.on_time_latest_promise_countnumber or string or null
summary.otif_latest_promise_countnumber or string or null
summary.on_time_latest_promise_pctstring or number or null
summary.otif_latest_promise_pctstring or number or null
summary.avg_days_variancestring or number or null
summary.requested_share_pctnumber or string or null
summary.metric_backingobject or null
summary.graded_basisobject or null
alertsany
windowany or null

GET /api/v1/analytics/otif/by-vendor

Get OTIF by vendor

data payload:

FieldType
vendorsarray of objects
vendors[].vendor_namestring
vendors[].vendor_idstring or null
vendors[].total_deliveriesnumber or string or null
vendors[].on_time_pctstring or number or null
vendors[].in_full_pctstring or number or null
vendors[].otif_pctstring or number or null
vendors[].on_time_latest_promise_pctstring or number or null
vendors[].otif_latest_promise_pctstring or number or null
vendors[].avg_days_variancestring or number or null
vendors[].delivered_basis_countnumber or string or null
vendors[].received_basis_countnumber or string or null
vendors[].graded_basis_labelstring or null
windowany or null
unattributed_deliveriesnumber or string or null

GET /api/v1/analytics/otif/trend

Get OTIF trend

data payload:

FieldType
trendarray of objects
trend[].week_startstring
trend[].otif_pctstring or number or null
trend[].on_time_pctstring or number or null
trend[].in_full_pctstring or number or null
trend[].otif_latest_promise_pctstring or number or null
trend[].on_time_latest_promise_pctstring or number or null
trend[].totalnumber or string or null
trend[].total_deliveriesnumber or string or null
trend[].otif_countnumber or string or null
trend[].measured_deliveriesnumber or string or null
windowany or null

GET /api/v1/analytics/savings

Savings totals, series, recent items, ROI

ParameterInTypeRequiredDescription
monthsquerystringnoTrailing window in months.

data payload:

FieldType
currency_codestring or null
totalsobject
totals.total_savingsstring or number or null
totals.duplicates_preventedstring or number or null
totals.price_variancesstring or number or null
totals.overbilling_caughtstring or number or null
totals.price_outliersstring or number or null
totals.cumulative_fraudstring or number or null
totals.sourcing_opportunitiesstring or number or null
totals.early_payment_discountsstring or number or null
totals.sole_source_riskstring or number or null
totals.late_delivery_coststring or number or null
totals.email_credit_memosstring or number or null
totals.discount_capturedstring or number or null
totals.discount_missedstring or number or null
totals.total_eventsnumber or string or null
totals.docs_with_valuenumber or string or null
savings_over_timearray of objects
savings_over_time[].monthstring
savings_over_time[].total_savingsstring or number or null
savings_over_time[].event_countnumber or string or null
recent_itemsarray of objects
recent_items[].event_idstring or null
recent_items[].doc_idstring or null
recent_items[].event_typestring or null
recent_items[].amount_usdstring or number or null
recent_items[].severitystring or null
recent_items[].part_numberstring or null
recent_items[].detailsstring or null
recent_items[].created_atstring or null
recent_items[].vendor_namestring or null
recent_items[].document_numberstring or null
roiobject
roi.total_invoices_processednumber or string or null
roi.total_invoice_spendstring or number or null
roi.total_savingsstring or number or null
roi.savings_rate_pctstring or number or null
tracker_identifiedstring or number or null
tracker_recoveredstring or number or null
monthsstring

GET /api/v1/analytics/savings-tracker

Get savings tracker

data payload:

FieldType
currency_codestring or null
rollupobject
rollup.total_identifiedstring or number or null
rollup.total_recoveredstring or number or null
rollup.recovery_ratestring or number or null
rollup.total_entriesnumber or string or null
rollup.recovered_countnumber or string or null
entriesarray of objects
entries[].idstring
entries[].contract_review_idstring or null
entries[].contract_idstring or null
entries[].finding_typestring or null
entries[].finding_titlestring
entries[].vendor_namestring or null
entries[].identified_amountstring or number or null
entries[].recovered_amountstring or number or null
entries[].statusstring
entries[].notesstring or null
entries[].recovered_atstring or null
entries[].created_atstring or null
entries[].updated_atstring or null
entries[].contract_numberstring or null
entries[].metric_backingobject or null

GET /api/v1/analytics/spend

Spend analytics (over time, by vendor, by category)

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
currency_codestring or null
spend_over_timearray of objects
spend_over_time[].monthstring
spend_over_time[].total_spendstring or number or null
spend_over_time[].invoice_countnumber or string or null
spend_by_vendorarray of objects
spend_by_vendor[].vendor_idstring or null
spend_by_vendor[].vendor_namestring
spend_by_vendor[].total_spendstring or number or null
spend_by_vendor[].invoice_countnumber or string or null
spend_by_vendor[].spend_pctstring or number or null
spend_by_categoryarray of objects
spend_by_category[].categorystring
spend_by_category[].total_spendstring or number or null
spend_by_category[].invoice_countnumber or string or null
trendsobject
trends.current_totalstring or number or null
trends.previous_totalstring or number or null
trends.change_pctstring or number or null
trends.current_invoice_countnumber or string or null
trends.previous_invoice_countnumber or string or null
concentrationobject
concentration.top5_pctstring or number or null
concentration.top10_pctstring or number or null
concentration.grand_totalstring or number or null
concentration.vendor_countnumber or string or null
periodstring
base_currencystring or null

GET /api/v1/analytics/tariff-exposure

Tariff exposure by country / material + coverage

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
currency_codestring or null
money_availableboolean
money_unavailable_reasonstring or null
duty_as_of_datestring or null
duty_snapshot_statusstring
duty_window_labelstring or null
total_duty_usdstring or number or null or null
flat_exposure_total_usdnumber or null
blended_effective_rate_pctstring or number or null or null
priced_linesnumber or null
avoidable_section_301_usdstring or number or null or null
duty_sourcestring or null
by_countryarray of objects
by_country[].countrystring
by_country[].country_codestring or null
by_country[].risk_tierstring or null
by_country[].base_tariff_pctstring or number or null
by_country[].doc_countnumber or string or null
by_country[].line_countnumber or string or null
by_country[].total_spendstring or number or null
by_country[].estimated_exposurestring or number or null
by_country[].linesarray of objects
by_country[].detail_coverageobject
by_country[].duty_from_document_usdnumber or string or null
by_country[].duty_from_inferred_usdnumber or string or null
by_country[].effective_tariff_pctstring or number or null or null
by_country[].duty_is_preciseboolean
domesticobject or null
by_materialarray of objects or null
material_by_countryarray of objects or null
material_coverageobject or null
coverageobject
coverage.total_linesnumber or string or null
coverage.lines_with_coonumber or string or null
coverage.lines_with_htsnumber or string or null
coverage.total_spendstring or number or null
coverage.spend_with_coostring or number or null
coverage.spend_with_htsstring or number or null
coverage.coverage_pctstring or number or null
coverage.hts_coverage_pctstring or number or null
top_itemsarray of objects
top_items[].item_idstring or null
top_items[].vendor_part_numberstring or null
top_items[].descriptionstring or null
top_items[].countrystring or null
top_items[].hts_codestring or null
top_items[].line_countnumber or string or null
top_items[].total_spendstring or number or null
top_vendorsarray of objects
top_vendors[].vendor_idstring or null
top_vendors[].vendor_namestring
top_vendors[].countrystring or null
top_vendors[].invoice_countnumber or string or null
top_vendors[].total_spendstring or number or null
trendarray of objects
trend[].monthstring
trend[].tagged_spendstring or number or null
trend[].total_spendstring or number or null
contract_clausesobject
contract_clauses.totalnumber or string or null
contract_clauses.with_tariff_clausenumber or string or null
contract_clauses.passthrough_allowednumber or string or null
contract_clauses.uncapped_passthroughnumber or string or null
risk_profilesarray of objects or null

GET /api/v1/analytics/tariff-gaps

Tariff data gaps by vendor and item

ParameterInTypeRequiredDescription
periodquerystringnoTrailing window in days (30

data payload:

FieldType
currency_codestring or null
money_availableboolean
money_unavailable_reasonstring or null
by_vendorarray of objects
by_vendor[].vendor_namestring
by_vendor[].vendor_idstring or null
by_vendor[].total_spendstring or number or null
by_vendor[].spend_no_coostring or number or null
by_vendor[].spend_no_htsstring or number or null
by_vendor[].total_linesnumber or string or null
by_vendor[].lines_no_coonumber or string or null
by_vendor[].lines_no_htsnumber or string or null
by_itemarray of objects
by_item[].item_idstring or null
by_item[].vendor_idstring or null
by_item[].vendor_part_numberstring or null
by_item[].descriptionstring or null
by_item[].vendor_namestring or null
by_item[].total_spendstring or number or null
by_item[].line_countnumber or string or null
by_item[].missing_cooboolean or null
by_item[].missing_htsboolean or null

GET /api/v1/analytics/value-surfaced

Value surfaced totals + monthly series

ParameterInTypeRequiredDescription
monthsquerystringnoTrailing window in months.

data payload:

FieldType
currency_codestring
currency_completeboolean
unresolved_currency_eventsinteger
windowobject
window.monthsinteger or null
window.labelstring
window.undated_eventsinteger
metric_backingobject or null
totalsobject
totals.total_valuestring or number or null
totals.verified_valuestring or number or null
totals.identified_valuestring or number or null
totals.recovered_valuestring or number or null
totals.total_eventsnumber or string or null
totals.total_docsnumber or string or null
categoriesarray of objects
categories[].keystring
categories[].labelstring
categories[].totalstring or number or null
categories[].eventsinteger
monthlyarray of objects
monthly[].monthstring
monthly[].totalstring or number or null
monthly[].eventsnumber or string or null

Dock appointments

GET /api/v1/dock-appointments

List dock appointments

data payload:

FieldType
appointmentsarray of objects
appointments[].idstring
appointments[].appointment_numberstring or null
appointments[].appointment_typestring or null
appointments[].statusstring or null
appointments[].carrier_idstring or null
appointments[].carrier_namestring or null
appointments[].carrier_display_namestring or null
appointments[].dock_doorstring or null
appointments[].facility_locationstring or null
appointments[].scheduled_datestring or null
appointments[].slot_startstring or null
appointments[].slot_endstring or null
appointments[].po_numbersstring or null
appointments[].shipment_doc_idstring or null
appointments[].tracking_numberstring or null
appointments[].trailer_numberstring or null
appointments[].seal_numberstring or null
appointments[].commodity_descriptionstring or null
appointments[].total_weightnumber or string or null
appointments[].total_palletsnumber or string or null
appointments[].special_instructionsstring or null
appointments[].notesstring or null
appointments[].check_in_atstring or null
appointments[].check_in_bystring or null
appointments[].actual_departurestring or null
appointments[].created_bystring or null
appointments[].created_atstring or null
appointments[].updated_atstring or null
totalnumber

GET /api/v1/dock-appointments/stats

Get dock appointments stats

data payload:

FieldType
datestring
totalnumber
by_statusobject

Dock doors

GET /api/v1/dock-doors

List dock doors

data payload:

FieldType
doorsarray of objects
doors[].idstring
doors[].door_numberstring
doors[].door_typestring
doors[].facility_locationstring or null
doors[].capabilitiesstring or null
doors[].notesstring or null
doors[].is_activeboolean

Documents

GET /api/v1/documents

List documents with cursor pagination — Returns documents for the authenticated company, newest first by default. Supports cursor pagination and a handful of filter + sort params.

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
sort_byquerystringnoSort column (allowlisted per endpoint).
sort_dirquerystringno—
doc_typequerystringno—
vendor_namequerystringno—
statusquerystringno—
searchquerystringno—
document_datequerystringno—

Returns: Paginated document list

GET /api/v1/documents/{doc_id}/threads

Get document threads

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
threadsarray of objects
threads[].thread_idstring
threads[].thread_kindstring
threads[].primary_po_numberstring or null
threads[].statusstring
threads[].outcomestring or null
threads[].summarystring or null
threads[].has_anomalyboolean
threads[].delivered_in_fullboolean or null
threads[].relationshipsarray of objects
threads[].eventsarray of objects

GET /api/v1/documents/{doc_id}/workbook

Get document workbook

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
workbookobject
workbook.doc_idstring
workbook.file_namestring or null
workbook.sourcestring or null
workbook.mime_typestring or null
workbook.doc_typestring or null
workbook.processing_statusstring or null
workbook.originobject
sheetsarray of objects
sheets[].sheet_indexnumber or string or null
sheets[].sheet_namestring or null
sheets[].kindstring
sheets[].child_doc_idstring or null
sheets[].doc_typestring or null
sheets[].document_numberstring or null
sheets[].processing_statusstring or null
sheets[].importobject or null
sheets[].gridobject or null

Doe diesel prices

GET /api/v1/doe-diesel-prices

List doe diesel prices

data payload:

FieldType
rowsarray of objects
rows[].idnumber
rows[].week_endingstring
rows[].regionstring
rows[].price_per_galstring or number or null
rows[].sourcestring or null
rows[].fetched_atstring or null
rows[].created_atstring or null

Entities

GET /api/v1/entities/{type}/{id}

Get entitie

ParameterInTypeRequiredDescription
typepathstringyes—
idpathstringyes—

data payload:

FieldType
entityobject
schemaarray of objects
schema[].field_pathstring
schema[].field_typestring
schema[].is_summableboolean
schema[].is_filterableboolean
schema[].descriptionstring or null
schema[].canonical_entity_typestring or null
schema[].ui_ordernumber or null
schema[].ui_formatstring or null
observationsarray of objects
observations[].fact_idstring
observations[].kindstring
observations[].payloadobject or null
observations[].source_typestring or null
observations[].source_idstring or null
observations[].created_atstring
provenanceobject or null
related_countnumber or null
timeline_countnumber or null

GET /api/v1/entities/{type}/{id}/graph

Get entitie graph

ParameterInTypeRequiredDescription
typepathstringyes—
idpathstringyes—

data payload:

FieldType
rootobject
root.typestring
root.idstring
root.display_namestring or null
root.route_keystring or null
root.senderstring or null
root.relationstring
edgesarray of objects
edges[].from_entity_typestring
edges[].from_entity_idstring
edges[].to_entity_typestring
edges[].to_entity_idstring
edges[].relationship_typestring
edges[].scorenumber or null
edges[].sourcestring or null
edges[].evidenceobject or null
nodesarray of objects
nodes[].typestring
nodes[].idstring
nodes[].display_namestring or null
nodes[].route_keystring or null
nodes[].senderstring or null
nodes[].relationstring

GET /api/v1/entities/{type}/{id}/timeline

Get entitie timeline

ParameterInTypeRequiredDescription
typepathstringyes—
idpathstringyes—

data payload:

FieldType
eventsarray of objects
events[].event_idstring
events[].event_typestring
events[].event_subtypestring
events[].event_dataobject or null
events[].source_typestring or null
events[].source_idstring or null
events[].event_timestring
events[].evidence_quotestring or null
events[].chunk_citationsarray of objects or null
total_countnumber

Erp

GET /api/v1/erp/connections

Get erp connections

data payload:

FieldType
connectionsarray of objects
connections[].idstring
connections[].erp_typestring
connections[].statusstring
connections[].sync_vendorsboolean
connections[].sync_accountsboolean
connections[].sync_posboolean
connections[].push_billsboolean
connections[].last_sync_atstring or null
connections[].error_messagestring or null
connections[].created_atstring or null

GET /api/v1/erp/field-mappings

Get erp field mappings

data payload:

FieldType
mappingsarray of objects
mappings[].idstring
mappings[].erp_typestring
mappings[].entity_typestring
mappings[].source_fieldstring
mappings[].source_field_labelstring or null
mappings[].source_field_typestring or null
mappings[].target_tablestring or null
mappings[].target_fieldstring or null
mappings[].target_jsonb_pathstring or null
mappings[].confidencenumber or null
mappings[].statusstring
mappings[].sourcestring or null
mappings[].transform_typestring or null
mappings[].transform_configobject or null
mappings[].created_atstring or null
mappings[].updated_atstring or null

GET /api/v1/erp/import/connections

Get erp import connections

data payload:

FieldType
connectionsarray of objects
connections[].idstring
connections[].system_typestring
connections[].system_namestring
connections[].statusstring
connections[].created_atstring or null
connections[].updated_atstring or null

GET /api/v1/erp/import/runs

Get erp import runs

data payload:

FieldType
import_runsarray of objects
import_runs[].idstring
import_runs[].target_tablestring or null
import_runs[].statusstring
import_runs[].rows_importednumber or string or null
import_runs[].rows_failednumber or string or null
import_runs[].error_messagestring or null
import_runs[].created_atstring or null
import_runs[].completed_atstring or null

GET /api/v1/erp/import/runs/{id}/rows

Get erp import run rows

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
import_run_idnumber
target_tablestring or null
statusstring
total_rowsnumber or string or null
inserted_rowsnumber or string or null
error_rowsnumber or string or null
landed_countnumber or string or null
diff_availableboolean
total_data_rowsnumber or string or null
rows_returnednumber or string or null
rowsarray of objects
rows[].row_numbernumber
rows[].cellsarray of objects

GET /api/v1/erp/mappings

Get erp mappings

data payload:

FieldType
mappingsarray of objects
mappings[].idstring
mappings[].import_connection_idstring or null
mappings[].system_namestring or null
mappings[].target_tablestring or null
mappings[].column_mappingobject or null
mappings[].header_valuesarray of string or null
mappings[].created_atstring or null

GET /api/v1/erp/sync/logs

Get erp sync logs

data payload:

FieldType
logsarray of objects
logs[].idstring
logs[].erp_typestring
logs[].directionstring or null
logs[].entity_typestring or null
logs[].entity_countnumber or string or null
logs[].statusstring
logs[].error_messagestring or null
logs[].started_atstring or null
logs[].completed_atstring or null
logs[].duration_msnumber or string or null

GET /api/v1/erp/unmapped-columns

Get erp unmapped columns

data payload:

FieldType
unmapped_columnsarray of objects
unmapped_columns[].idstring
unmapped_columns[].connection_idnumber or null
unmapped_columns[].entity_typestring or null
unmapped_columns[].source_fieldstring
unmapped_columns[].sample_valuesany
unmapped_columns[].suggested_target_tablestring or null
unmapped_columns[].suggested_target_columnstring or null
unmapped_columns[].suggested_confidencenumber or null
unmapped_columns[].parking_reasonstring
unmapped_columns[].created_atstring or null

Exposure

GET /api/v1/exposure

List exposures

data payload:

FieldType
as_of_datestring or null
base_currencystring
total_exposed_usdnumber or null
currency_codestring
money_availableboolean
money_unavailable_reasonstring or null
portfolio_as_of_datestring or null
events_linkednumber
briefingobject or null
by_kindarray of objects
by_kind[].signal_kindstring
by_kind[].labelstring
by_kind[].total_usdnumber or null
by_kind[].amount_labelstring
by_kind[].currency_codestring
by_kind[].window_labelstring
by_kind[].countnumber
signalsarray of objects
signals[].signal_kindstring
signals[].signal_kind_labelstring
signals[].signal_refstring
signals[].signal_labelstring
signals[].exposure_amount_usdnumber or null
signals[].amount_labelstring
signals[].currency_codestring
signals[].window_labelstring
signals[].exposure_basisstring
signals[].confidencenumber or null
signals[].as_of_datestring or null
signals[].snapshot_statusstring
signals[].sourceobject or null
signals[].evidence_summaryobject
signals[].related_eventsarray of objects

Feature flags

GET /api/v1/feature-flags

List feature flags

data payload:

FieldType
flagsobject

Filter facets

GET /api/v1/filter-facets/{table}

Get filter facet

ParameterInTypeRequiredDescription
tablepathstringyes—

data payload:

FieldType
facetsobject

Findings

GET /api/v1/findings

List findings (grouped by category, money-ranked) with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
statusquerystringno—
categoryquerystringnoOne buyer-facing category (the registry categories.order word: billing, contracts, payments, receiving, documents) — the finding type's registry assignment, resolved at read time (never the stored column). Omit for every category. The internal category is never returned.
po_numberquerystringnoScope to one PO — the row's PO # (its own po_number, else its document's buyer PO number). The orders list's open_findings_count counts exactly these rows under the default view.
vendor_idquerystringnoScope to one vendor — the row's vendor (its stamped vendor_id, else its document's seller). The vendors list's open_findings_count counts exactly these rows under the default view.
doc_idquerystringnoScope to one document — the findings raised on it. The invoices list's open_findings_count counts exactly these rows under the default view.
searchquerystringno—
sort_byquerystringnoOne explicit ranking (amount = surfaceable $, document_date = the date the finding's document states, vendor); omit for the grouped default (category order, then $ desc, severity, newest). An unknown value falls back to the default.
sort_dirquerystringnoDirection for sort_by; $ and document_date default desc, vendor asc.
detected_withinquerystringnoWindow on when Kynthar found the issue (created_at): 1d, 7d, 30d or 90d. Applies to the rows and to category_counts alike.
personaquerystringnoThe viewer's persona (buyer, ops, logistics, ap, compliance). It orders the grouped default: buyer and ap lead with money, ops and logistics with receiving, compliance with contracts. Omit it, or send one with no declared order, for the registry order. The rows' ranking and category_counts follow the same order.

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
findingsarray of objects
findings[].item_idstring
findings[].kindstring
findings[].waiting_onstring or null
findings[].targetobject or null
findings[].finding_idstring or null
findings[].finding_typestring or null
findings[].categorystring or null
findings[].severitystring or null
findings[].titlestring or null
findings[].summarystring or null
findings[].statusstring or null
findings[].verification_statusstring or null
findings[].resolution_notesstring or null
findings[].dismiss_reasonstring or null
findings[].resolved_bystring or null
findings[].surfaceable_savings_usdstring or number or null
findings[].source_document_datestring or null
findings[].next_stepstring or null
findings[].metric_backingobject or null
findings[].vendor_idstring or null
findings[].vendor_namestring or null
findings[].vendor_websitestring or null
findings[].document_labelstring or null
findings[].document_label_kindstring or null
findings[].document_typestring or null
findings[].additional_source_countnumber or string or null
findings[].doc_idstring or null
findings[].recurrence_countnumber or string or null
findings[].created_atstring or null
findings[].po_numberstring or null
findings[].source_fact_idstring or null
findings[].source_comm_idstring or null
findings[].claimobject or null
findings[].amountobject or null
findings[].amount_declaredboolean
currency_codestring or null
resolved_countnumber or string or null
resolved_scopeobject
resolved_scope.po_numberstring or null
resolved_scope.vendor_idstring or null
resolved_scope.doc_idstring or null
resolved_scope.contract_idstring or null
resolved_scope.categorystring or null
open_countnumber or string or null
open_amountobject or null
waiting_onstring
waiting_on_countsobject
waiting_on_counts.younumber
waiting_on_counts.vendornumber
waiting_on_counts.allnumber
recoverable_amountobject or null
situation_totalsarray of objects
situation_totals[].po_numberstring
situation_totals[].total_usdnumber or null
situation_totals[].metric_backingobject or null
category_countsarray of objects
category_counts[].categorystring
category_counts[].labelstring
category_counts[].countnumber
category_counts[].money_total_usdnumber or null
category_counts[].metric_backingobject or null
category_counts[].contextarray of objects

GET /api/v1/findings/{finding_id}/draft

Get finding draft

ParameterInTypeRequiredDescription
finding_idpathstringyes—

data payload:

FieldType
action_idstring or null
statusstring or null
draftobject or null
evidence_linksarray of objects
evidence_links[].kindstring
evidence_links[].idstring
evidence_links[].urlstring
evidence_links[].labelstring or null
draftable_kindstring or null
already_existsboolean

POST /api/v1/findings/{finding_id}/draft

Create finding draft

ParameterInTypeRequiredDescription
finding_idpathstringyes—

data payload:

FieldType
action_idstring or null
statusstring or null
draftobject or null
evidence_linksarray of objects
evidence_links[].kindstring
evidence_links[].idstring
evidence_links[].urlstring
evidence_links[].labelstring or null
draftable_kindstring or null
already_existsboolean

GET /api/v1/findings/stats

Get findings stats

data payload:

FieldType
totalnumber
materialnumber
proceduralnumber
criticalnumber
highnumber
surfaceable_totalnumber

Freight claims

GET /api/v1/freight-claims

List freight claims for the authenticated company

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
sort_byquerystringnoSort column (allowlisted per endpoint).
sort_dirquerystringno—
orderquerystringnoAlias for sort_dir (used only when sort_dir is absent).
vendor_idquerystringnoFilter to one carrier/vendor.
statusquerystringnoComma-separated claim status filter.
claim_typequerystringnoFilter by claim type.

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
itemsarray of objects
items[].idnumber or string
items[].claim_numberstring or null
items[].vendor_idstring or null
items[].vendor_namestring or null
items[].claim_typestring or null
items[].statusstring or null
items[].pro_numberstring or null
items[].tracking_numberstring or null
items[].shipment_doc_idstring or null
items[].invoice_doc_idstring or null
items[].amount_claimedstring or number or null
items[].amount_approvedstring or number or null
items[].amount_recoveredstring or number or null
items[].currency_codestring or null
items[].descriptionstring or null
items[].notesstring or null
items[].evidence_doc_idsarray of string or null
items[].filed_datestring or null
items[].acknowledged_datestring or null
items[].resolved_datestring or null
items[].created_atstring or null

GET /api/v1/freight-claims/{id}

Get freight claim

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idnumber or string
claim_numberstring or null
vendor_idstring or null
vendor_namestring or null
claim_typestring or null
statusstring or null
pro_numberstring or null
tracking_numberstring or null
shipment_doc_idstring or null
invoice_doc_idstring or null
amount_claimedstring or number or null
amount_approvedstring or number or null
amount_recoveredstring or number or null
currency_codestring or null
descriptionstring or null
notesstring or null
evidence_doc_idsarray of string or null
filed_datestring or null
acknowledged_datestring or null
resolved_datestring or null
created_atstring or null

GET /api/v1/freight-claims/stats

Get freight claims stats

data payload:

FieldType
by_statusarray of objects
by_status[].statusstring
by_status[].countnumber
total_claimsnumber
open_claimsnumber
resolved_claimsnumber
recovered_claimsnumber
denied_claimsnumber
recovery_rate_pctnumber or null
total_claimedstring or number or null
total_recoveredstring or number or null
total_approvedstring or number or null
currency_codestring or null
mixed_currencyboolean

Gl category mappings

GET /api/v1/gl-category-mappings

List GL category mappings

data payload:

FieldType
mappingsarray of objects
mappings[].idstring
mappings[].categorystring
mappings[].subcategorystring or null
mappings[].gl_account_codestring
mappings[].created_atstring or null
mappings[].account_namestring or null

Identity

GET /api/v1/identity/{type}/{id}

Get identity

ParameterInTypeRequiredDescription
typepathstringyes—
idpathstringyes—

data payload:

FieldType
canonicalobject
canonical.idstring
canonical.display_namestring or null
canonical.typestring
aliasesarray of objects
aliases[].valuestring
aliases[].typestring
merged_fromarray of objects
merged_from[].idstring
merged_from[].former_namestring or null
merged_from[].merged_atstring or null
decidedobject
decided.tierstring or null
decided.methodstring or null
decided.confidencenumber or string or null
decided.source_doc_idstring or null
decided.decided_atstring or null

Import review

GET /api/v1/import-review/census

Get import review census

data payload:

FieldType
by_sinkobject
open_totalnumber
over_7d_totalnumber
unsettledobject
unsettled.totalnumber
unsettled.over_1dnumber
unsettled.oldest_atstring or null

GET /api/v1/import-review/parked

Get import review parked

data payload:

FieldType
columnsobject
columns.itemsarray of objects
sheetsobject
sheets.itemsarray of objects
filesobject
files.itemsarray of objects
censusobject
census.by_sinkobject
census.open_totalnumber
census.over_7d_totalnumber
census.unsettledobject

GET /api/v1/import-review/parked/{sink}

Get import review parked

ParameterInTypeRequiredDescription
sinkpathstringyes—
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
itemsarray of objects
items[].item_idstring
items[].sinkstring
items[].observed_atstring or null
items[].titlestring or null
items[].detailobject
items[].sourceobject
items[].first_seen_atstring or null
items[].settled_atstring or null

POST /api/v1/import-review/parked/{sink}/{item_id}/dismiss

Create import review parked dismiss

ParameterInTypeRequiredDescription
sinkpathstringyes—
item_idpathstringyes—

data payload:

FieldType
item_idstring
sinkstring
dismissed_bystring
reasonstring

Ingested

GET /api/v1/ingested

Unified ingest feed (documents + emails + imports) with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
sourcequerystringno—
typequerystringno—
date_fromquerystringno—
date_toquerystringno—
searchquerystringno—
filterquerystringnoOpaque base64url-encoded FilterSpec (Notion filter-builder).
docs_onlyquerybooleanno—
emails_onlyquerybooleanno—
imports_onlyquerybooleannoRestrict the feed to tabular-intake artifacts (workbooks + ERP CSV imports).
directionquerystringnoEmail direction view — inbound
filed_onlyquerybooleannoRestrict the email branch to FILED noise mail.
include_filedquerybooleanno—

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
itemsarray of objects
items[].row_typestring
items[].idstring
items[].sourcestring
items[].typestring
items[].partystring or null
items[].titlestring or null
items[].tsstring or null
items[].statusstring or null
items[].size_bytesnumber or string or null
items[].page_countnumber or string or null
items[].parent_email_idstring or null
items[].subjectstring or null
items[].sender_emailstring or null
items[].body_previewstring or null
items[].summarystring or null
items[].vendor_idstring or null
items[].vendor_namestring or null
items[].vendor_resolvedboolean or null
items[].vendor_websitestring or null
items[].document_numberstring or null
items[].buyer_po_numberstring or null
items[].total_amountnumber or string or null
items[].currency_codestring or null
items[].amount_basisstring
items[].email_directionstring or null
items[].email_classstring or null
items[].filed_reasonstring or null
items[].filed_summarystring or null
items[].thread_message_countnumber or string or null
items[].attachmentsarray of objects
items[].sheet_countnumber or string or null
items[].import_rows_totalnumber or string or null
items[].import_rows_insertednumber or string or null
items[].import_rows_errorednumber or string or null
viewobject or null

Insights

GET /api/v1/insights

List insights

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
currency_codestring or null
insightsarray of objects
insights[].insight_idstring
insights[].analysis_typestring or null
insights[].categorystring or null
insights[].titlestring or null
insights[].summarystring or null
insights[].findingsarray of string or object or null or null
insights[].recommendationsarray of string or object or null or null
insights[].supporting_dataobject or null
insights[].confidence_scorestring or number or null
insights[].potential_savings_usdstring or number or null
insights[].verification_statusstring or null
insights[].prioritynumber or string or null
insights[].sensor_sourcearray of string or null
insights[].statusstring or null
insights[].run_idstring or null
insights[].recurrence_countnumber or string or null
insights[].first_seen_atstring or null
insights[].created_atstring or null
insights[].auto_triaged_atstring or null
insights[].auto_triage_actionstring or null
insights[].triage_trace_idstring or null
insights[].triage_reasonstring or null
insights[].provenanceobject or null
insights[].metric_backingobject or null
insights[].assigned_tostring or null
insights[].assigned_atstring or null
insights[].dismiss_reasonstring or null
insights[].action_notesstring or null
insights[].reviewed_atstring or null
insights[].reviewed_bystring or null

POST /api/v1/insights/generate

Create insights generate

data payload:

FieldType
successboolean
run_idstring
statusstring

GET /api/v1/insights/history

Get insights history

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
currency_codestring or null
insightsarray of objects
insights[].insight_idstring
insights[].analysis_typestring or null
insights[].categorystring or null
insights[].titlestring or null
insights[].summarystring or null
insights[].findingsarray of string or object or null or null
insights[].recommendationsarray of string or object or null or null
insights[].supporting_dataobject or null
insights[].confidence_scorestring or number or null
insights[].potential_savings_usdstring or number or null
insights[].verification_statusstring or null
insights[].prioritynumber or string or null
insights[].sensor_sourcearray of string or null
insights[].statusstring or null
insights[].run_idstring or null
insights[].recurrence_countnumber or string or null
insights[].first_seen_atstring or null
insights[].created_atstring or null
insights[].auto_triaged_atstring or null
insights[].auto_triage_actionstring or null
insights[].triage_trace_idstring or null
insights[].triage_reasonstring or null
insights[].provenanceobject or null
insights[].metric_backingobject or null
insights[].assigned_tostring or null
insights[].assigned_atstring or null
insights[].dismiss_reasonstring or null
insights[].action_notesstring or null
insights[].reviewed_atstring or null
insights[].reviewed_bystring or null
totalnumber or string or null
pagenumber or string or null
pagesnumber or string or null

GET /api/v1/insights/runs/{run_id}

Get insights run

ParameterInTypeRequiredDescription
run_idpathstringyes—

data payload:

FieldType
run_idstring
statusstring
insights_generatednumber or string or null
llm_cost_usdstring or number or null
error_messagestring or null
started_atstring or null
completed_atstring or null

GET /api/v1/insights/stats

Get insights stats

data payload:

FieldType
currency_codestring or null
total_savingsstring or number or null
total_at_riskstring or number or null
actioned_countnumber or string or null
reviewed_countnumber or string or null
total_countnumber or string or null
action_ratestring or number or null
this_monthnumber or string or null
top_categorystring or null
runs_this_monthnumber or string or null
generation_limitnumber or string or null
planstring or null
categoriesarray of objects
categories[].categorystring
categories[].countnumber or string or null
categories[].new_countnumber or string or null
categories[].savingsstring or number or null

GET /api/v1/insights/trends

Get insights trends

data payload:

FieldType
trendsarray of objects
trends[].weekstring or null
trends[].categorystring or null
trends[].countnumber or string or null
trends[].savingsstring or number or null
trends[].actionednumber or string or null
trends[].avg_recurrencestring or number or null

Integrations

GET /api/v1/integrations/notification-config

Get integrations notification config

data payload:

FieldType
configsarray of objects
configs[].idstring
configs[].providerstring
configs[].channel_configobject or null
configs[].enabledboolean
configs[].created_atstring or null
configs[].updated_atstring or null
configs[].team_namestring or null

GET /api/v1/integrations/slack/channels

Get integrations slack channels

data payload:

FieldType
channelsarray of objects
channels[].idstring
channels[].namestring

Invoices

GET /api/v1/invoices/{doc_id}/intelligence

Get invoice intelligence

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
doc_idstring
generated_atstring
severitystring or null
summarystring or null
findingsarray of objects
findings[].titlestring
findings[].descriptionstring
findings[].severitystring or null
acknowledged_findingsarray of objects
acknowledged_findings[].titlestring
acknowledged_findings[].user_idstring or null
acknowledged_findings[].user_emailstring or null
acknowledged_findings[].acknowledged_atstring or null
acknowledged_findings[].notestring or null
staleboolean

GET /api/v1/invoices/{invoice_number}/amendments

Get invoice amendments

ParameterInTypeRequiredDescription
invoice_numberpathstringyes—

data payload:

FieldType
invoice_numberstring
amendmentsarray of objects
amendments[].idstring or number
amendments[].doc_idstring or null
amendments[].invoice_numberstring
amendments[].vendor_idstring or null
amendments[].amendment_typestring
amendments[].line_numbernumber or null
amendments[].field_namestring
amendments[].old_valuestring or null
amendments[].new_valuestring
amendments[].effective_datestring or null
amendments[].sourcestring
amendments[].source_detailstring or null
amendments[].created_atstring
amendments[].updated_atstring
amendments[].provenanceobject or null
totalnumber

Issues

GET /api/v1/issues

Unified issues list with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
statusquerystringno—
severityquerystringno—
typequerystringno—
type_prefixquerystringnoFamily filter validated against a server-side allowlist.
vendorquerystringno—
date_fromquerystringno—
date_toquerystringno—
searchquerystringno—

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
issuesarray of objects
issues[].idstring
issues[].issue_idstring
issues[].sourcestring
issues[].typestring
issues[].severitystring
issues[].affected_countnumber
issues[].affected_fieldsarray of string
issues[].current_valuestring or null
issues[].expected_valuestring or null
issues[].deviation_scorenumber or null
issues[].descriptionstring or null
issues[].statusstring
issues[].actioned_bystring or null
issues[].actioned_atstring or null
issues[].resolution_notesstring or null
issues[].created_atstring or null
issues[].doc_idstring or null
issues[].file_namestring or null
issues[].document_numberstring or null
issues[].total_amountnumber or null
issues[].vendor_namestring or null
issues[].vendor_idstring or null
countsobject
counts.activenumber
counts.dismissednumber
counts.resolvednumber
counts.totalnumber

Items

GET /api/v1/items

List items with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
searchquerystringno—
categoryquerystringno—
sourcingquerystringno—
filterquerystringnoOpaque base64url-encoded FilterSpec (Notion filter-builder), compiled server-side against the trusted ITEM_FILTER_REGISTRY whitelist.
sortquerystringno—
orderquerystringno—

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
itemsarray of objects
items[].item_idstring
items[].descriptionstring or null
items[].categorystring or null
items[].subcategorystring or null
items[].skustring or null
items[].mpnstring or null
items[].uomstring or null
items[].currency_codestring or null
items[].line_item_countnumber or string or null
items[].document_countnumber or string or null
items[].vendor_countnumber or string or null
items[].total_qtynumber or string or null
items[].avg_pricenumber or string or null
items[].min_pricenumber or string or null
items[].max_pricenumber or string or null
items[].total_spend_lifetimenumber or string or null
items[].total_spend_ttmnumber or string or null
items[].total_spend_30dnumber or string or null
items[].total_spend_90dnumber or string or null
items[].total_spend_365dnumber or string or null
items[].total_spendnumber or string or null
items[].spend_rank_in_companynumber or string or null
items[].price_variance_pctnumber or string or null
items[].sourcing_strategystring or null
items[].first_purchasedstring or null
items[].last_purchasedstring or null
items[].last_unit_pricenumber or string or null
items[].price_trend_pctnumber or string or null
items[].avg_lead_time_daysnumber or string or null
items[].avg_lead_time_days_30dnumber or string or null
items[].avg_lead_time_days_365dnumber or string or null
items[].lead_time_p90number or string or null
items[].lead_time_observation_countnumber or string or null
items[].on_time_pctnumber or string or null
items[].on_time_pct_30dnumber or string or null
items[].on_time_pct_90dnumber or string or null
items[].on_time_pct_365dnumber or string or null
items[].delivery_countnumber or string or null
items[].delivery_count_30dnumber or string or null
items[].delivery_count_90dnumber or string or null
items[].delivery_count_365dnumber or string or null
items[].has_active_contractboolean or null
items[].active_contract_countnumber or string or null
items[].criticality_classstring or null
items[].criticality_reasoningstring or null
items[].supply_risk_scorenumber or string or null
items[].supply_risk_reasoningstring or null
items[].seasonality_patternstring or null
items[].seasonality_notesstring or null
items[].last_enriched_atstring or null
items[].intelligence_age_daysnumber or string or null
items[].has_active_intelligenceboolean or null
statsobject or null
currency_codestring or null
viewobject or null

GET /api/v1/items/{item_id}/intelligence

Get item intelligence

ParameterInTypeRequiredDescription
item_idpathstringyes—

data payload:

FieldType
intelligenceobject or null
generated_atstring or null

GET /api/v1/items/{item_id}/linked-documents

Get item linked documents

ParameterInTypeRequiredDescription
item_idpathstringyes—

data payload:

FieldType
item_idstring
linked_documentsarray of objects
linked_documents[].doc_idstring
linked_documents[].link_typestring or null
linked_documents[].match_methodstring or null
linked_documents[].confidencenumber or string or null
linked_documents[].linked_atstring or null
linked_documents[].file_namestring or null
linked_documents[].doc_typestring or null
linked_documents[].processing_statusstring or null
linked_documents[].uploaded_atstring or null
linked_documents[].generic_typestring or null
linked_documents[].extracted_fieldsobject or null
linked_documents[].tablesarray of string
documentsarray of objects
documents[].doc_idstring
documents[].link_typestring or null
documents[].match_methodstring or null
documents[].confidencenumber or string or null
documents[].linked_atstring or null
documents[].file_namestring or null
documents[].doc_typestring or null
documents[].processing_statusstring or null
documents[].uploaded_atstring or null
documents[].generic_typestring or null
documents[].extracted_fieldsobject or null
documents[].tablesarray of string
totalnumber

GET /api/v1/items/{item_id}/price-history

Get item price history

ParameterInTypeRequiredDescription
item_idpathstringyes—

data payload:

FieldType
currency_codestring or null
item_idstring
historyarray of objects
history[].datestring or null
history[].avg_pricenumber or string or null
history[].min_pricenumber or string or null
history[].max_pricenumber or string or null
history[].transaction_countnumber or string or null
history[].total_spendnumber or string or null

GET /api/v1/items/{item_id}/transactions

Get item transactions

ParameterInTypeRequiredDescription
item_idpathstringyes—

data payload:

FieldType
transactionsarray of objects
transactions[].line_item_idstring or null
transactions[].doc_idstring or null
transactions[].document_numberstring or null
transactions[].doc_typestring or null
transactions[].datestring or null
transactions[].vendor_namestring or null
transactions[].vendor_idstring or null
transactions[].quantitynumber or string or null
transactions[].unit_pricenumber or string or null
transactions[].line_totalnumber or string or null
transactions[].uomstring or null
transactions[].currency_codestring or null
transactions[].po_numberstring or null
transactions[].invoice_numberstring or null
po_invoice_rolluparray of objects
po_invoice_rollup[].po_numberstring
po_invoice_rollup[].invoice_countnumber

GET /api/v1/items/{item_id}/vendors

Get item vendors

ParameterInTypeRequiredDescription
item_idpathstringyes—

data payload:

FieldType
item_idstring
descriptionstring or null
categorystring or null
category_metric_backingobject or null
skustring or null
mpnstring or null
aliasesarray of string
weight_per_unit_lbsnumber or string or null
weight_unitstring or null
length_innumber or string or null
width_innumber or string or null
height_innumber or string or null
freight_classnumber or string or null
packaging_formstring or null
vendor_countnumber or string or null
priced_vendor_countnumber or string or null
total_spendnumber or string or null
avg_pricenumber or string or null
last_boughtobject or null
price_sample_countnumber or string or null
vendorsarray of objects
vendors[].vendor_idstring or null
vendors[].vendor_namestring or null
vendors[].document_countnumber or string or null
vendors[].line_item_countnumber or string or null
vendors[].total_quantitynumber or string or null
vendors[].avg_pricenumber or string or null
vendors[].last_costnumber or string or null
vendors[].min_pricenumber or string or null
vendors[].max_pricenumber or string or null
vendors[].total_spendnumber or string or null
vendors[].on_time_pctnumber or string or null
vendors[].avg_lead_time_daysnumber or string or null
vendors[].delivery_countnumber or string or null
vendors[].first_purchasedstring or null
vendors[].last_purchasedstring or null
vendors[].price_sample_countnumber or string or null
vendors[].last_price_updatestring or null
vendors[].last_price_doc_idstring or null
vendors[].price_vs_portfolio_pctnumber or string or null
vendors[].contract_pricenumber or string or null
vendors[].contract_driftobject or null
vendors[].lt_avg_daysnumber or string or null
vendors[].lt_ewma_daysnumber or string or null
vendors[].lt_trend_pctnumber or string or null
vendors[].lt_last_3array of number or null
vendors[].lt_observation_countnumber or string or null
vendors[].lt_last_observedstring or null
total_spend_lifetimenumber or string or null
total_spend_ttmnumber or string or null
spend_rank_in_companynumber or string or null
sourcing_strategystring or null
item_on_time_pctnumber or string or null
item_delivery_countnumber or string or null
item_avg_lead_time_daysnumber or string or null
item_lead_time_p90number or string or null
item_lead_time_observation_countnumber or string or null
item_last_unit_pricenumber or string or null
item_price_trend_pctnumber or string or null
has_active_contractboolean or null
active_contract_countnumber or string or null
intelligenceobject or null

GET /api/v1/items/facets

Get items facets

data payload:

FieldType
facetsobject

GET /api/v1/items/stats

Get items stats

data payload:

FieldType
total_itemsnumber
sole_source_countnumber
dual_source_countnumber
multi_source_countnumber
active_contract_countnumber
high_variance_countnumber

Lineage

GET /api/v1/lineage/aggregation

Get lineage aggregation

data payload:

FieldType
aggregateobject
aggregate.tablestring
aggregate.row_idstring
aggregate.columnstring
aggregate.valuenumber or null
agg_functionstring
contributor_countnumber
contributorsarray of objects
contributors[].tablestring
contributors[].row_idstring
contributors[].valuenumber or null
contributors[].doc_typestring or null
contributors[].doc_numberstring or null
contributors[].doc_datestring or null
contributors[].doc_idstring
contributors[].has_lineageboolean

POST /api/v1/lineage/cells

Create lineage cells

data payload:

FieldType
resultsarray of objects
results[].cellobject
results[].chainarray of objects
results[].foundboolean
results[].all_fact_idsarray of string

GET /api/v1/lineage/fact/{id}

Get lineage fact

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
fact_idstring
chainarray of objects
chain[].tablestring
chain[].row_idstring
chain[].evidence_quotestring or null
chain[].source_doc_idstring or null
chain[].page_startnumber or null
chain[].page_endnumber or null
chain[].char_startnumber or null
chain[].char_endnumber or null
chain[].parser_versionstring or null
chain[].extraction_run_idstring or null
chain[].llm_call_idstring or null
chain[].fact_kindstring or null
chain[].confidencenumber or null
chain[].verification_statusstring or null
chain[].source_segment_idstring or null
chain[].source_segment_typestring or null
chain[].schema_versionstring or null
chain[].prompt_versionstring or null
chain[].modelstring or null
chain[].schema_idstring or null
chain[].canonical_text_sha256string or null
chain[].source_channelstring or null
chain[].received_atstring or null
chain[].filenamestring or null
chain[].document_typestring or null
chain[].source_kindstring or null
chain[].section_tagstring or null
chain[].from_typestring or null
chain[].from_idstring or null
chain[].to_typestring or null
chain[].to_idstring or null
chain[].link_typestring or null
chain[].match_methodstring or null
chain[].actionstring or null
chain[].reasonstring or null
chain[].user_idstring or null
chain[].created_atstring or null

GET /api/v1/lineage/finding/{id}

Get lineage finding

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
finding_idstring
finding_typestring
categorystring or null
titlestring or null
summarystring or null
claimobject or null
verification_statusstring or null
verified_amountnumber or string or null
severitystring or null
statusstring or null
resolved_atstring or null
resolution_notesstring or null
dismiss_reasonstring or null
dismissed_atstring or null
resolved_bystring or null
superseded_by_finding_idstring or null
assigned_tostring or null
field_namestring or null
current_valuenumber or string or null
expected_valuenumber or string or null
doc_idstring or null
vendor_idstring or null
po_numberstring or null
invoice_numberstring or null
contract_idstring or null
potential_savings_usdnumber or string or null
detailsobject or null
related_entitiesarray of objects
related_entities[].kindstring
related_entities[].idstring
related_entities[].labelstring or null
contributorsarray of objects
contributors[].line_nonumber or string or null
contributors[].part_numberstring or null
contributors[].fieldstring or null
contributors[].observed_valuenumber or string or null
contributors[].expected_valuenumber or string or null
contributors[].quantitynumber or string or null
contributors[].line_overchargenumber or string or null
contributors[].fact_idstring or null
contributors[].evidence_quotestring or null
contributors[].char_startnumber or string or null
contributors[].char_endnumber or string or null
contributors[].walkableboolean
contributors[].resolvedboolean
evidence_walkarray of objects
evidence_walk[].sidestring
evidence_walk[].labelstring
evidence_walk[].fieldstring or null
evidence_walk[].valuestring or number or boolean or null
evidence_walk[].doc_idstring or null
evidence_walk[].line_nonumber or string or null
evidence_walk[].fact_idstring or null
evidence_walk[].quotestring or null
evidence_walk[].source_kindstring or null
evidence_walk[].source_tablestring or null
evidence_walk[].source_row_keystring or null
evidence_walk[].refstring or null
evidence_walk[].walkableboolean
aggregateobject or null
comparisonobject or null
paymentobject or null
triggering_factsarray of objects
triggering_facts[].fact_idstring
triggering_facts[].evidence_quotestring or null
triggering_facts[].doc_idstring or null
triggering_facts[].page_startnumber or string or null
triggering_facts[].page_endnumber or string or null
triggering_facts[].char_startnumber or string or null
triggering_facts[].char_endnumber or string or null
triggering_facts[].parser_versionstring or null
source_docsarray of objects
source_docs[].doc_idstring
source_docs[].doc_titlestring or null
source_docs[].filenamestring or null
source_docs[].document_numberstring or null
source_docs[].source_kindstring or null
source_docs[].primaryboolean
timelinearray of objects
timeline[].kindstring
timeline[].datestring
timeline[].contract_idstring or null
timeline[].contract_numberstring or null
timeline[].expiration_datestring or null
timeline[].po_numberstring or null
timeline[].doc_idstring or null
timeline[].doc_typestring or null
timeline[].primaryboolean
timeline[].labelstring or null
timeline[].communication_idstring or null
timeline[].subjectstring or null
timeline[].specificsobject or null
referenceobject or null
recoveryobject or null
source_fact_idstring or null
source_comm_idstring or null

GET /api/v1/lineage/promise/{po_number}

Get lineage promise

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
po_numberstring
activeobject or null
historyarray of objects
history[].valuestring
history[].sourcestring or null
history[].effective_atstring or null
history[].evidence_quotestring or null
history[].senderstring or null
history[].channelstring or null
history[].received_atstring or null
history[].open_refobject or null
history[].supersededboolean
po_requested_datestring or null

GET /api/v1/lineage/vendor-credential/{vendor_id}/{label}

Get lineage vendor credential

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
labelpathstringyes—

data payload:

FieldType
vendor_idstring
labelstring
categorystring
sourcestring
triggering_factsarray of any
source_docsarray of objects
source_docs[].doc_idstring
source_docs[].titlestring or null
source_docs[].doc_typestring or null
source_docs[].source_kindstring or null
source_docs[].received_atstring or null
evidence_urlstring or null
first_seen_atstring or null
last_seen_atstring or null

Measures

GET /api/v1/measures/{id}

Get measure

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
titlestring
unitstring or null
grainstring
as_ofstring or null
valuenumber or null
rowsarray of objects
benchmarkobject or null

Negotiations

GET /api/v1/negotiations/{id}

Get negotiation

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
vendor_idstring
subjectstring
statusstring
current_offerany or null
target_termsany or null
initiated_atstring or null
closed_atstring or null
closed_reasonstring or null
last_activity_atstring or null
created_atstring or null
vendor_namestring or null
event_countnumber or null
thread_countnumber
last_event_actorstring or null
contract_idstring or null
item_idstring or null
updated_atstring or null
subjectsarray of objects
subjects[].idstring
subjects[].term_scopestring
subjects[].subject_keystring
subjects[].statusstring
subjects[].current_offerobject or null
subjects[].target_termsobject or null
subjects[].item_idstring or null
subjects[].part_numberstring or null
subjects[].normalized_part_numberstring or null
subjects[].item_descriptionstring or null
subjects[].last_event_atstring
eventsarray of objects
events[].idstring
events[].event_typestring
events[].actorstring
events[].event_dataany or null
events[].event_atstring
events[].created_atstring
events[].thread_canonical_idstring or null
events[].transition_reasonstring or null
events[].low_confidenceboolean
events[].match_tierstring or null
events[].content_hashstring or null
events[].sourceobject
negotiated_savingsobject or null
terms_unacknowledgedobject or null

GET /api/v1/negotiations/{id}/brief-v2

Get negotiation brief v2

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
negotiation_idstring
vendor_idstring
vendor_namestring
accusation_auditobject
accusation_audit.claimsarray of objects
accusation_audit.findingsarray of objects
talking_pointsarray of objects
talking_points[].topicstring
talking_points[].factstring
talking_points[].dollar_impactnumber or null
talking_points[].detailany or null
talking_points_rawany or null
counter_proposalsarray of objects
counter_proposals[].item_idstring or null
counter_proposals[].part_numberstring or null
counter_proposals[].current_unit_pricenumber or null
counter_proposals[].counter_unit_pricenumber or null
counter_proposals[].justificationstring
counter_proposals[].source_urlsarray of any
counter_proposals[].alt_vendor_countnumber
anchoringobject
anchoring.anchor_pricenumber or null
anchoring.anchor_basisstring
anchoring.citationstring
anchoring.historical_lownumber or null
anchoring.best_alternativenumber or null
anchoring.observation_countnumber
synthesisobject or null
generated_atstring

GET /api/v1/negotiations/stats

Get negotiations stats

data payload:

FieldType
totalnumber
activenumber
agreednumber
stallednumber

Notifications

GET /api/v1/notifications/preferences

Get notifications preferences

data payload:

FieldType
preferencesarray of objects
preferences[].typestring
preferences[].categorystring
preferences[].descriptionstring
preferences[].forceDeliveryboolean
preferences[].channelsobject

GET /api/v1/notifications/types

Get notifications types

data payload:

FieldType
categoriesarray of objects
categories[].namestring
categories[].typesarray of objects

Open items

GET /api/v1/ops/open-items

Get open items

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
itemsarray of objects
items[].po_numberstring
items[].line_nonumber or string or null
items[].part_numberstring or null
items[].vendor_part_numberstring or null
items[].descriptionstring or null
items[].vendor_namestring or null
items[].vendor_idstring or null
items[].qty_orderedstring or number or null
items[].qty_receivedstring or number or null
items[].qty_shippedstring or number or null
items[].expected_datestring or null
items[].expected_basisstring or null
items[].delivery_standingstring or null
items[].days_latenumber or string or null
items[].statusstring or null
items[].days_variancenumber or string or null
items[].uomstring or null
items[].unit_pricestring or number or null
items[].tracking_numberstring or null
items[].carrier_namestring or null
items[].ship_datestring or null
statsobject
stats.totalnumber
stats.overduenumber
stats.unconfirmednumber
stats.awaiting_receiptnumber
stats.due_soonnumber
stats.at_risknumber
stats.on_tracknumber
stats.deliverednumber
stats.over_shippednumber
stats.max_overdue_daysnumber

Procurement

POST /api/v1/procurement/intake

Create procurement intake

data payload:

FieldType
requisitionobject
finding_idstring
suggested_vendorsarray of objects
suggested_vendors[].vendor_idstring
suggested_vendors[].vendor_namestring
suggested_vendors[].total_spendnumber or null
suggested_contractsarray of objects
suggested_contracts[].contract_idstring
suggested_contracts[].contract_numberstring or null
suggested_contracts[].vendor_idstring
suggested_contracts[].contract_typestring or null
suggested_contracts[].effective_datestring or null
suggested_contracts[].expiration_datestring or null
suggested_contracts[].statusstring or null

Procurement intel

GET /api/v1/procurement-intel/{finding_id}

Get procurement intel

ParameterInTypeRequiredDescription
finding_idpathstringyes—

data payload:

FieldType
finding_idstring
agent_modestring or null
finding_typestring or null
titlestring or null
summarystring or null
findingsarray of string or object or null or null
recommendationsarray of string or object or null or null
entity_refsany or null
confidence_scorestring or number or null
estimated_savings_usdstring or number or null
prioritynumber or string or null
sensor_sourcesany or null
statusstring or null
run_idstring or null
created_atstring or null
supporting_dataany or null
expires_atstring or null
reviewed_atstring or null
reviewed_bystring or null

GET /api/v1/procurement-intel/runs

List recent procurement-intel agent runs

ParameterInTypeRequiredDescription
limitqueryintegernoPage size (default 25, max 100).
agent_modequerystringnoFilter to one agent mode.

data payload:

FieldType
runsarray of objects
runs[].run_idstring
runs[].agent_modestring or null
runs[].statusstring or null
runs[].sensors_runnumber or string or null
runs[].findings_generatednumber or string or null
runs[].llm_cost_usdstring or number or null
runs[].error_messagestring or null
runs[].started_atstring or null
runs[].completed_atstring or null

GET /api/v1/procurement-intel/summary

Get procurement intel summary

data payload:

FieldType
by_statusarray of objects
by_status[].statusstring
by_status[].countnumber or string or null
by_status[].total_savingsstring or number or null
by_modearray of objects
by_mode[].agent_modestring
by_mode[].countnumber or string or null
by_mode[].new_countnumber or string or null
by_mode[].total_savingsstring or number or null
last_runsarray of objects
last_runs[].run_idstring
last_runs[].agent_modestring or null
last_runs[].statusstring or null
last_runs[].sensors_runnumber or string or null
last_runs[].findings_generatednumber or string or null
last_runs[].llm_cost_usdstring or number or null
last_runs[].error_messagestring or null
last_runs[].started_atstring or null
last_runs[].completed_atstring or null

Purchase orders

GET /api/v1/orders/{po_number}/landed-cost

Get order landed cost

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
currency_codestring or null
po_numberstring
line_itemsarray of any
total_landedstring or number or null
freight_totalstring or number or null
duty_totalstring or number or null
other_totalstring or number or null

GET /api/v1/po

List purchase orders

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
currency_codestring or null
purchase_ordersarray of objects
purchase_orders[].po_numberstring
purchase_orders[].vendor_namestring or null
purchase_orders[].vendor_idstring or null
purchase_orders[].vendor_websitestring or null
purchase_orders[].po_datestring or null
purchase_orders[].total_amountstring or number or null
purchase_orders[].fulfillment_statestring or null
purchase_orders[].is_openboolean
purchase_orders[].fulfillment_statusstring or null
purchase_orders[].lifecycle_statusstring or null
purchase_orders[].match_statusstring or null
purchase_orders[].delivery_standingstring or null
purchase_orders[].next_expected_datestring or null
purchase_orders[].delivery_expected_basisstring or null
purchase_orders[].next_expected_sourcestring or null
purchase_orders[].delivery_vendor_promise_datestring or null
purchase_orders[].delivery_vendor_promise_sourcestring or null
purchase_orders[].delivery_requested_datestring or null
purchase_orders[].delivery_days_latenumber or string or null
purchase_orders[].delivery_days_past_requestednumber or string or null
purchase_orders[].receipt_pctstring or number or null
purchase_orders[].open_findings_countnumber or string or null
purchase_orders[].anomaly_countnumber or string or null
purchase_orders[].critical_anomaly_countnumber or string or null
purchase_orders[].acknowledged_countnumber or string or null
purchase_orders[].comm_countnumber or string or null
purchase_orders[].unread_countnumber or string or null
purchase_orders[].intelligence_severitystring or null
purchase_orders[].delivery_site_namestring or null
statsobject
stats.totalnumber
stats.opennumber or null
stats.past_duenumber or null
stats.due_this_weeknumber or null
stats.unconfirmednumber or null
stats.in_transitnumber or null
stats.closednumber or null
viewobject or null

GET /api/v1/po/{po_number}

Get purchase order

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
po_numberstring
po_datestring or null
order_datestring or null
order_placed_datestring or null
confirmation_received_datestring or null
confirmationobject or null
statusstring or null
fulfillment_statestring or null
is_openboolean
state_sourcestring or null
state_confidencestring or null
fulfillment_statusstring or null
match_statusstring or null
match_receipt_backedboolean or null
open_obligation_countnumber or null
legsarray of objects
legs[].legstring
legs[].scope_kindstring
legs[].scope_refstring or null
legs[].scope_keystring or null
legs[].basisstring
legs[].sourceobject
legs[].asserted_byobject
legs[].stated_atstring or null
legs[].observed_atstring or null
legs[].recorded_atstring or null
legs[].statedobject
legs[].entriesarray of objects
legs[].entry_countinteger
obligationsarray of objects
obligations[].obligation_idstring
obligations[].typestring or null
obligations[].statusstring or null
obligations[].owed_bystring or null
obligations[].owed_tostring or null
obligations[].subjectstring or null
obligations[].opened_by_fact_idstring or null
obligations[].opened_atstring or null
obligations[].sla_due_atstring or null
expected_datestring or null
delivery_datestring or null
ship_to_addressstring or null
ship_to_namestring or null
payment_termsstring or null
currency_codestring or null
freight_termsstring or null
sourcestring or null
buyer_namestring or null
blanket_typestring or null
blanket_totalstring or number or null
blanket_releasedstring or number or null
status_summaryobject or null
vendorobject or null
amountsobject or null
deliveryobject or null
delivery_siteobject or null
shippingobject or null
line_itemsarray of objects
line_items[].line_nonumber or string or null
line_items[].part_numberstring or null
line_items[].vendor_part_numberstring or null
line_items[].manufacturer_part_numberstring or null
line_items[].descriptionstring or null
line_items[].quantitystring or number or null
line_items[].qty_orderedstring or number or null
line_items[].unit_pricestring or number or null
line_items[].unitstring or null
line_items[].uomstring or null
line_items[].amountstring or number or null
line_items[].line_totalstring or number or null
line_items[].qty_receivedstring or number or null
line_items[].qty_acceptedstring or number or null
line_items[].qty_arrivedstring or number or null
line_items[].qty_rejectedstring or number or null
line_items[].qty_received_sourcestring or null
line_items[].qty_shippedstring or number or null
line_items[].qty_invoicedstring or number or null
line_items[].qty_ackedstring or number or null
line_items[].expected_datestring or null
line_items[].actual_delivery_datestring or null
line_items[].on_timeboolean or null
line_items[].in_fullboolean or null
line_items[].days_variancenumber or string or null
line_items[].delivery_statusstring or null
line_items[].match_statusstring or null
line_items[].invoice_pricestring or number or null
line_items[].contract_pricestring or number or null
line_items[].ack_unit_pricestring or number or null
line_items[].invoice_unit_pricestring or number or null
line_items[].po_requested_datestring or null
line_items[].ack_promised_datestring or null
line_items[].email_promised_datestring or null
line_items[].promise_vs_requestobject or null
line_items[].ack_promised_ship_datestring or null
line_items[].email_promised_ship_datestring or null
line_items[].actual_ship_datestring or null
line_items[].ship_on_timeboolean or null
line_items[].ship_variance_daysnumber or string or null
line_items[].on_time_basisstring or null
line_items[].actual_datestring or null
line_items[].actual_date_sourcestring or null
line_items[].receipt_date_confidencenumber or string or null
line_items[].carrier_delivered_datestring or null
line_items[].carrier_delivered_sourcestring or null
line_items[].promise_sourcestring or null
line_items[].receipt_doc_idstring or null
line_items[].bol_doc_idstring or null
line_items[].pod_doc_idstring or null
line_items[].variance_daysnumber or string or null
line_items[].part_number_mismatchboolean or null
line_items[].deliveryobject or null
line_items[].schedulearray of objects
line_items[].receiptsarray of objects
line_items[].shipmentsarray of objects
line_items[].comm_updatesarray of objects
line_items[].ship_trackingstring or null
line_items[].carrier_namestring or null
linked_documentsarray of objects
linked_documents[].doc_idstring
linked_documents[].doc_typestring or null
linked_documents[].document_numberstring or null
linked_documents[].document_datestring or null
linked_documents[].total_amountstring or number or null
linked_documents[].file_namestring or null
linked_documents[].processing_statusstring or null
linked_documents[].requested_delivery_datestring or null
linked_documents[].email_ingest_idstring or null
linked_documents[].email_contextobject or null
shipment_trackingarray of objects
shipment_tracking[].tracking_numberstring or null
shipment_tracking[].carrier_namestring or null
shipment_tracking[].statusstring or null
shipment_tracking[].ship_datestring or null
shipment_tracking[].etastring or null
shipment_tracking[].delivered_datestring or null
intelligenceobject or null
exceptionsarray of any
delivery_healthany or null
contract_ntearray of any
narrative_commsarray of objects
narrative_comms[].idstring
narrative_comms[].typesarray of string
narrative_comms[].datestring or null
narrative_comms[].subjectstring or null
narrative_comms[].summarystring or null
narrative_comms[].senderstring or null
narrative_comms[].sender_emailstring or null
narrative_comms[].urgencystring or null
narrative_comms[].provenancearray of objects
narrative_comms[].filedboolean
narrative_comms[].email_classstring or null
narrative_comms[].filed_reasonstring or null
narrative_comms[].filed_summarystring or null
narrative_comms[].email_ingest_idstring or null
promise_moveobject or null
price_movesarray of objects
price_moves[].part_numberstring or null
price_moves[].scopestring or null
price_moves[].prior_pricestring or null
price_moves[].pricestring
price_moves[].currencystring or null
price_moves[].change_pctstring or null
price_moves[].effective_datestring or null
price_moves[].fact_idstring or null
price_moves[].comm_idstring or null

GET /api/v1/po/{po_number}/as-of

Get purchase order as-of state

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
po_numberstring
as_ofstring
no_data_as_ofboolean
first_seenstring or null
headerobject or null
linesarray of objects
lines[].line_nonumber or string or null
lines[].descriptionstring or null
lines[].uomstring or null
lines[].part_numberstring or null
lines[].quantitynumber or string or null
lines[].unit_pricenumber or string or null
lines[].line_totalnumber or string or null
lines[].changed_fieldsarray of string
lines[].inconsistentboolean
changed_countnumber or string or null
changesarray of objects
changes[].fieldstring
changes[].labelstring or null
changes[].line_nonumber or string or null
changes[].as_of_valuestring or number or null
changes[].current_valuestring or number or null
changes[].changed_byobject or null
legsarray of objects
legs[].legstring
legs[].scope_kindstring
legs[].scope_refstring or null
legs[].scope_keystring or null
legs[].basisstring
legs[].sourceobject
legs[].asserted_byobject
legs[].stated_atstring or null
legs[].observed_atstring or null
legs[].recorded_atstring or null
legs[].statedobject
legs[].entriesarray of objects
legs[].entry_countinteger

GET /api/v1/po/{po_number}/blanket-releases

Get purchase order blanket releases

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
releasesarray of any
summaryany or null

GET /api/v1/po/{po_number}/change-orders

Get purchase order change orders

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
change_ordersarray of objects
change_orders[].change_order_idstring
change_orders[].change_typestring or null
change_orders[].descriptionstring or null
change_orders[].created_atstring or null
change_orders[].created_bystring or null
change_orders[].vendor_ackedboolean or null
change_orders[].line_itemsarray of any
change_orders[].decision_statusstring or null

GET /api/v1/po/delivery-sites/list

Get purchase order delivery sites list

data payload:

FieldType
sitesarray of objects
sites[].site_idstring
sites[].site_namestring or null
sites[].addressstring or null
sites[].citystring or null
sites[].statestring or null
sites[].zip_codestring or null

GET /api/v1/po/matching-settings

Get purchase order matching settings

data payload:

FieldType
price_tolerance_pctnumber
tax_tolerance_pctnumber
qty_tolerance_pctnumber
desc_match_thresholdnumber

GET /api/v1/po/otif-settings

Get purchase order OTIF settings

data payload:

FieldType
late_tolerance_daysnumber
early_tolerance_daysnumber
penalize_early_deliveryboolean
use_business_daysboolean

GET /api/v1/po/stats

Get purchase order stats

data payload:

FieldType
totalnumber
opennumber or null
past_duenumber or null
due_this_weeknumber or null
unconfirmednumber or null
in_transitnumber or null
closednumber or null

Rate cards

GET /api/v1/rate-cards

List rate cards

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
rate_cardsarray of objects
rate_cards[].rate_card_idstring
rate_cards[].company_idstring or null
rate_cards[].carrier_vendor_idstring or null
rate_cards[].carrier_namestring
rate_cards[].modestring
rate_cards[].effective_datestring or null
rate_cards[].expiration_datestring or null
rate_cards[].statusstring
rate_cards[].discount_pctstring or number or null
rate_cards[].fsc_methodstring or null
rate_cards[].fsc_base_ratestring or number or null
rate_cards[].minimum_chargestring or number or null
rate_cards[].currency_codestring or null
rate_cards[].base_tariffstring or null
rate_cards[].scac_codestring or null
rate_cards[].contract_idstring or null
rate_cards[].contract_numberstring or null
rate_cards[].linked_contractstring or null
rate_cards[].lane_countnumber
rate_cards[].accessorial_countnumber
rate_cards[].created_atstring or null
rate_cards[].updated_atstring or null

GET /api/v1/rate-cards/{id}

Get rate card

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rate_card_idstring
company_idstring or null
carrier_vendor_idstring or null
carrier_namestring
modestring
effective_datestring or null
expiration_datestring or null
statusstring
discount_pctstring or number or null
fsc_methodstring or null
fsc_base_ratestring or number or null
minimum_chargestring or number or null
currency_codestring or null
base_tariffstring or null
scac_codestring or null
contract_idstring or null
contract_numberstring or null
linked_contractstring or null
lane_countnumber
accessorial_countnumber
created_atstring or null
updated_atstring or null
rate_linesarray of objects
rate_lines[].idnumber or string or null
rate_lines[].rate_card_idstring
rate_lines[].origin_zip_lowstring or null
rate_lines[].origin_zip_highstring or null
rate_lines[].dest_zip_lowstring or null
rate_lines[].dest_zip_highstring or null
rate_lines[].freight_classstring or null
rate_lines[].weight_break_minstring or number or null
rate_lines[].weight_break_maxstring or number or null
rate_lines[].rate_per_cwtstring or number or null
rate_lines[].flat_ratestring or number or null
rate_lines[].rate_per_milestring or number or null
rate_lines[].minimum_chargestring or number or null
rate_lines[].fak_classstring or null
accessorial_ratesarray of objects
accessorial_rates[].idnumber or string or null
accessorial_rates[].rate_card_idstring
accessorial_rates[].charge_codestring
accessorial_rates[].charge_descriptionstring or null
accessorial_rates[].rate_typestring
accessorial_rates[].rate_amountstring or number or null
accessorial_rates[].minimum_chargestring or number or null
accessorial_rates[].maximum_chargestring or number or null
accessorial_rates[].free_time_minutesnumber or string or null
accessorial_rates[].effective_datestring or null
accessorial_rates[].expiration_datestring or null

GET /api/v1/rate-cards/stats

Get rate cards stats

data payload:

FieldType
totalnumber
activenumber
expirednumber
expiring_soonnumber
archivednumber

Reconciliation

GET /api/v1/reconciliation

List reconciliations

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
invoicesarray of objects
invoices[].doc_idstring
invoices[].file_namestring or null
invoices[].doc_typestring or null
invoices[].vendor_idstring or null
invoices[].vendor_namestring or null
invoices[].vendor_resolvedboolean or null
invoices[].vendor_name_rawstring or null
invoices[].vendor_websitestring or null
invoices[].document_numberstring or null
invoices[].total_amountnumber or string or null
invoices[].subtotalnumber or string or null
invoices[].tax_amountnumber or string or null
invoices[].tax_ratenumber or string or null
invoices[].shipping_amountnumber or string or null
invoices[].discount_amountnumber or string or null
invoices[].discount_percentnumber or string or null
invoices[].discount_deadlinestring or null
invoices[].discount_days_leftnumber or string or null
invoices[].discount_capturable_amountnumber or string or null
invoices[].discount_statusstring or null
invoices[].document_datestring or null
invoices[].uploaded_atstring or null
invoices[].due_datestring or null
invoices[].due_in_daysnumber or string or null
invoices[].pay_urgencynumber or string or null
invoices[].net_daysnumber or string or null
invoices[].net_days_basisstring or null
invoices[].terms_anchor_datestring or null
invoices[].payment_termsstring or null
invoices[].final_statusstring or null
invoices[].matchany
invoices[].match_statusstring or null
invoices[].payabilityany
invoices[].matched_po_numberstring or null
invoices[].buyer_po_numberstring or null
invoices[].anomaly_countnumber or string or null
invoices[].critical_anomaly_countnumber or string or null
invoices[].high_anomaly_countnumber or string or null
invoices[].open_findings_countnumber or string or null
invoices[].payment_statusstring or null
invoices[].settlement_statestring or null
invoices[].current_statusstring or null
invoices[].risk_scorenumber or string or null
invoices[].sanctions_statusstring or null
invoices[].baseline_totalnumber or string or null
invoices[].previously_invoicednumber or string or null
invoices[].hold_reasonstring or null
invoices[].failed_checksany
invoices[].related_documentsany
invoices[].five_way_matchany
invoices[].creditsany
invoices[].linked_invoice_doc_idstring or null
invoices[].linked_invoice_numberstring or null
invoices[].credit_memo_match_methodstring or null
statsobject or null
viewobject or null

GET /api/v1/reconciliation/{doc_id}/gl-coding

Get reconciliation GL coding

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
rowsarray of objects
rows[].line_idnumber or string
rows[].line_nonumber
rows[].descriptionstring
rows[].line_totalnumber
rows[].gl_account_codestring or null
rows[].gl_cost_centerstring or null
rows[].gl_confidencenumber or null
rows[].gl_coded_bystring or null
summaryobject
summary.coded_linesnumber
summary.total_linesnumber
summary.all_codedboolean
payment_statusstring or null

PATCH /api/v1/reconciliation/{doc_id}/gl-coding

Update reconciliation GL coding

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
updatednumber
all_codedboolean

GET /api/v1/reconciliation/{doc_id}/history

Get reconciliation history

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
doc_idstring
current_statusstring
status_changed_bystring
status_changed_atstring
historyarray of objects
history[].idnumber
history[].action_typestring
history[].notesstring or null
history[].hold_reasonstring or null
history[].created_bystring
history[].created_atstring

GET /api/v1/reconciliation/{doc_id}/line-items

Get reconciliation line items

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
line_itemsarray of objects
line_items[].idnumber or string or null
line_items[].line_idnumber or string or null
line_items[].line_nonumber or string or null
line_items[].descriptionstring or null
line_items[].buyer_part_numberstring or null
line_items[].vendor_part_numberstring or null
line_items[].manufacturer_part_numberstring or null
line_items[].uomstring or null
line_items[].po_qtystring or number or null
line_items[].invoice_qtystring or number or null
line_items[].received_qtystring or number or null
line_items[].po_unit_pricestring or number or null
line_items[].invoice_unit_pricestring or number or null
line_items[].line_totalstring or number or null
line_items[].statusstring or null
line_items[].gl_account_codestring or null
line_items[].gl_cost_centerstring or null
line_items[].gl_confidencenumber or string or null
line_items[].gl_coded_bystring or null
line_items[].gl_coded_atstring or null
line_items[].expected_pricestring or number or null
line_items[].expected_price_sourcestring or null
line_items[].expected_price_effective_datestring or null
line_items[].expected_price_currencystring or null
line_items[].price_vs_expected_pctnumber or string or null
po_qty_labelstring
match_statusstring or null
match_verdictstring or null
match_confidencenumber or string or null
payabilityobject or null
five_way_matchobject or null
order_coverageobject or null
match_reasonsarray of objects or null
procurement_chainarray of objects
procurement_chain[].stagestring or null
procurement_chain[].doc_typestring or null
procurement_chain[].doc_idstring or null
procurement_chain[].document_numberstring or null
procurement_chain[].document_datestring or null
procurement_chain[].total_amountnumber or string or null
procurement_chain[].vendor_namestring or null
procurement_chain[].receipt_sourcestring or null
procurement_chain[].line_countnumber or string or null
chain_order_refobject or null
order_confirmationsobject or null
communication_hintsarray of objects
communication_hints[].idstring or null
communication_hints[].typesarray of string
communication_hints[].datestring or null
communication_hints[].subjectstring or null
communication_hints[].senderstring or null
communication_hints[].price_updateany or null
communication_hints[].quantity_updateany or null
communication_hints[].line_item_updatesany or null
money_documentsarray of objects
money_documents[].doc_idstring or null
money_documents[].doc_typestring or null
money_documents[].document_numberstring or null
money_documents[].relationshipstring or null
money_documents[].total_amountnumber or string or null
counterparty_positionobject or null

GET /api/v1/reconciliation/{doc_id}/timeline

Get reconciliation timeline

ParameterInTypeRequiredDescription
doc_idpathstringyes—

data payload:

FieldType
timelinearray of objects
timeline[].typestring
timeline[].actionstring or null
timeline[].userstring or null
timeline[].tsstring
timeline[].notesstring or null
timeline[].hold_reasonstring or null

GET /api/v1/reconciliation/cash-flow

Get reconciliation cash flow

data payload:

FieldType
currency_codestring or null
bucketsarray of objects
buckets[].bucket_typestring
buckets[].week_startstring or null
buckets[].week_endstring or null
buckets[].bucket_startstring or null
buckets[].bucket_endstring or null
buckets[].total_duenumber
buckets[].approved_duenumber
buckets[].pending_approval_duenumber
buckets[].invoice_countnumber
monthly_bucketsarray of objects
monthly_buckets[].bucket_typestring
monthly_buckets[].bucket_startstring or null
monthly_buckets[].bucket_endstring or null
monthly_buckets[].total_duenumber
monthly_buckets[].approved_duenumber
monthly_buckets[].pending_approval_duenumber
monthly_buckets[].invoice_countnumber
discount_opportunitiesarray of objects
discount_opportunities[].deadline_weekstring or null
discount_opportunities[].capturablenumber
discount_opportunities[].invoice_countnumber
summaryobject
summary.overduenumber
summary.next_7dnumber
summary.next_30dnumber
summary.next_90dnumber
summary.total_outstandingnumber
summary.pending_approval_totalnumber
summary.discount_capturablenumber
summary.discount_capturable_countnumber
summary.missed_discount_12monumber
summary.missed_discount_count_12monumber

GET /api/v1/reconciliation/facets

Get reconciliation facets

data payload:

FieldType
facetsobject

GET /api/v1/reconciliation/payment-funnel

Get reconciliation payment funnel

data payload:

FieldType
currency_codestring or null
gl_coding_enabledboolean
stagesarray of objects
stages[].stagestring
stages[].invoice_countnumber
stages[].stage_totalstring or number or null
stages[].avg_age_daysnumber
stages[].moved_in_last_7dnumber

GET /api/v1/reconciliation/stats

Get reconciliation stats

data payload:

FieldType
currency_codestring or null
reconciliationobject
reconciliation.totalnumber
reconciliation.matchednumber
reconciliation.discrepancynumber
reconciliation.no_ponumber
reconciliation.awaiting_ponumber
reconciliation.actionable_reviewnumber
reconciliation.pending_approvalnumber
reconciliation.blockednumber
reconciliation.approvednumber
reconciliation.holdnumber
reconciliation.rejectednumber
reconciliation.past_duenumber
reconciliation.discount_availablenumber
reconciliation.approval_rules_countnumber
reconciliation.uncoded_invoice_countnumber
reconciliation.matched_amountstring or number or null
reconciliation.discount_available_amountstring or number or null
anomaliesobject
anomalies.totalnumber
anomalies.criticalnumber
anomalies.highnumber
period_daysnumber

GET /api/v1/reconciliation/vendors

Get reconciliation vendors

data payload:

FieldType
vendorsarray of objects or array of string

Requisitions

GET /api/v1/requisitions

List requisitions

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
requisitionsarray of objects
requisitions[].idstring
requisitions[].company_idstring or null
requisitions[].pr_numberstring
requisitions[].requester_emailstring or null
requisitions[].requester_namestring or null
requisitions[].titlestring
requisitions[].justificationstring or null
requisitions[].vendor_idstring or null
requisitions[].vendor_name_freetextstring or null
requisitions[].vendor_canonical_namestring or null
requisitions[].delivery_site_idstring or null
requisitions[].delivery_site_namestring or null
requisitions[].needed_by_datestring or null
requisitions[].total_estimated_amountstring or number or null
requisitions[].currency_codestring or null
requisitions[].statusstring
requisitions[].original_freetextstring or null
requisitions[].llm_parsedboolean
requisitions[].submitted_atstring or null
requisitions[].approved_bystring or null
requisitions[].approved_atstring or null
requisitions[].rejected_bystring or null
requisitions[].rejected_atstring or null
requisitions[].rejection_reasonstring or null
requisitions[].changes_requested_bystring or null
requisitions[].changes_requested_atstring or null
requisitions[].changes_requested_reasonstring or null
requisitions[].generated_po_doc_idstring or null
requisitions[].generated_po_numberstring or null
requisitions[].created_atstring or null
requisitions[].updated_atstring or null
requisitions[].filtered_totalnumber or string or null
requisitions[].line_countnumber or string or null

GET /api/v1/requisitions/{id}

Get requisition

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
company_idstring or null
pr_numberstring
requester_emailstring or null
requester_namestring or null
titlestring
justificationstring or null
vendor_idstring or null
vendor_name_freetextstring or null
vendor_canonical_namestring or null
delivery_site_idstring or null
delivery_site_namestring or null
needed_by_datestring or null
total_estimated_amountstring or number or null
currency_codestring or null
statusstring
original_freetextstring or null
llm_parsedboolean
submitted_atstring or null
approved_bystring or null
approved_atstring or null
rejected_bystring or null
rejected_atstring or null
rejection_reasonstring or null
changes_requested_bystring or null
changes_requested_atstring or null
changes_requested_reasonstring or null
generated_po_doc_idstring or null
generated_po_numberstring or null
created_atstring or null
updated_atstring or null
filtered_totalnumber or string or null
line_countnumber or string or null
delivery_addressstring or null
delivery_citystring or null
delivery_statestring or null
po_awaiting_ackboolean or null
po_ack_datestring or null
linesarray of objects
lines[].idstring
lines[].requisition_idstring
lines[].line_nonumber
lines[].descriptionstring
lines[].item_idstring or null
lines[].item_namestring or null
lines[].item_categorystring or null
lines[].vendor_part_numberstring or null
lines[].quantitystring or number or null
lines[].unitstring
lines[].estimated_unit_pricestring or number or null
lines[].estimated_line_totalstring or number or null
lines[].gl_account_codestring or null
lines[].contract_idstring or null
lines[].contract_unit_pricestring or number or null
lines[].volume_tiersany or null
lines[].volume_tier_appliedstring or null
lines[].contract_min_qtystring or number or null
lines[].contract_max_qtystring or number or null

GET /api/v1/requisitions/contract-pricing

Get requisitions contract pricing

data payload:

FieldType
foundboolean
contract_idstring or null
unit_pricenumber or string or null
tier_appliedstring or null
volume_tiersarray of objects or null
next_tierobject or null
min_qtynumber or string or null
max_qtynumber or string or null
min_qty_warningstring or null
max_qty_warningstring or null
nte_warningstring or null
nte_utilization_pctnumber or string or null
rebate_hintstring or null

POST /api/v1/requisitions/parse

Create requisitions parse

data payload:

FieldType
parsedobject
parsed.titlestring or null
parsed.vendor_idstring or null
parsed.vendor_namestring or null
parsed.delivery_site_idstring or null
parsed.needed_by_datestring or null
parsed.urgencystring or null
parsed.itemsarray of objects
parsed.justificationstring or null
parsed.confidencenumber or string or null
original_textstring or null
intelligenceobject or null

GET /api/v1/requisitions/stats

Get requisitions stats

data payload:

FieldType
draftsnumber
pendingnumber
approvednumber
rejectednumber
changes_requestednumber
po_generatednumber
cancellednumber
this_monthnumber
approved_this_month_amountnumber

Rfqs

GET /api/v1/rfqs

List rfqs

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
dataarray of objects
data[].idstring
data[].rfq_numberstring or null
data[].titlestring or null
data[].rfq_typestring or null
data[].statusstring or null
data[].response_deadlinestring or null
data[].budget_targetstring or number or null
data[].currency_codestring or null
data[].notesstring or null
data[].delivery_site_idstring or null
data[].created_bystring or null
data[].issued_bystring or null
data[].issued_atstring or null
data[].awarded_vendor_idstring or null
data[].awarded_bystring or null
data[].awarded_atstring or null
data[].awarded_pr_idstring or null
data[].awarded_pr_numberstring or null
data[].awarded_po_numberstring or null
data[].awarded_contract_idstring or null
data[].award_typestring or null
data[].cancelled_bystring or null
data[].cancelled_atstring or null
data[].cancelled_reasonstring or null
data[].created_atstring or null
data[].vendor_countnumber
data[].response_countnumber
data[].line_countnumber
data[].lane_countnumber
rfqsarray of objects
rfqs[].idstring
rfqs[].rfq_numberstring or null
rfqs[].titlestring or null
rfqs[].rfq_typestring or null
rfqs[].statusstring or null
rfqs[].response_deadlinestring or null
rfqs[].budget_targetstring or number or null
rfqs[].currency_codestring or null
rfqs[].notesstring or null
rfqs[].delivery_site_idstring or null
rfqs[].created_bystring or null
rfqs[].issued_bystring or null
rfqs[].issued_atstring or null
rfqs[].awarded_vendor_idstring or null
rfqs[].awarded_bystring or null
rfqs[].awarded_atstring or null
rfqs[].awarded_pr_idstring or null
rfqs[].awarded_pr_numberstring or null
rfqs[].awarded_po_numberstring or null
rfqs[].awarded_contract_idstring or null
rfqs[].award_typestring or null
rfqs[].cancelled_bystring or null
rfqs[].cancelled_atstring or null
rfqs[].cancelled_reasonstring or null
rfqs[].created_atstring or null
rfqs[].vendor_countnumber
rfqs[].response_countnumber
rfqs[].line_countnumber
rfqs[].lane_countnumber
next_cursorstring or null
has_moreboolean
totalnumber or string or null

GET /api/v1/rfqs/{id}

Get rfq

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
rfq_numberstring or null
titlestring or null
rfq_typestring or null
statusstring or null
response_deadlinestring or null
budget_targetstring or number or null
currency_codestring or null
notesstring or null
delivery_site_idstring or null
created_bystring or null
issued_bystring or null
issued_atstring or null
awarded_vendor_idstring or null
awarded_bystring or null
awarded_atstring or null
awarded_pr_idstring or null
awarded_pr_numberstring or null
awarded_po_numberstring or null
awarded_contract_idstring or null
award_typestring or null
cancelled_bystring or null
cancelled_atstring or null
cancelled_reasonstring or null
created_atstring or null
vendor_countnumber
response_countnumber
line_countnumber
lane_countnumber
linesarray of objects
lines[].idnumber or string
lines[].rfq_idstring or null
lines[].item_idstring or null
lines[].descriptionstring or null
lines[].quantitystring or number or null
lines[].unitstring or null
lines[].target_unit_pricestring or number or null
lines[].estimated_unit_pricestring or number or null
lines[].delivery_site_idstring or null
lines[].awarded_vendor_idstring or null
lines[].awarded_vendor_namestring or null
lines[].awarded_quantitystring or number or null
lines[].award_amountstring or number or null
lanesarray of objects
lanes[].idnumber or string
lanes[].rfq_idstring or null
lanes[].origin_citystring or null
lanes[].origin_statestring or null
lanes[].origin_zipstring or null
lanes[].dest_citystring or null
lanes[].dest_statestring or null
lanes[].dest_zipstring or null
lanes[].modestring or null
lanes[].freight_classstring or number or null
lanes[].weight_minstring or number or null
lanes[].weight_maxstring or number or null
lanes[].annual_volume_estimatestring or number or null
lanes[].equipment_typestring or null
lanes[].hazmatboolean
lanes[].accessorials_requiredstring or null
lanes[].target_rate_per_cwtstring or number or null
lanes[].target_flat_ratestring or number or null
lanes[].notesstring or null
vendorsarray of objects
vendors[].rfq_idstring or null
vendors[].vendor_idstring
vendors[].vendor_namestring or null
vendors[].contact_emailstring or null
vendors[].contact_namestring or null
vendors[].statusstring or null
vendors[].quote_doc_idstring or null
vendors[].invited_atstring or null
vendors[].responded_atstring or null
vendors[].workflow_idstring or null
vendors[].scacstring or null
award_summaryobject or null

POST /api/v1/rfqs/{id}/add-vendors

Create rfq add vendors

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rfq_numberstring or null
added_countnumber
skipped_countnumber
already_invitedarray of string
skipped_no_emailarray of objects
skipped_no_email[].vendor_idstring
skipped_no_email[].reasonstring
vendorsarray of objects
vendors[].vendor_idstring
vendors[].vendor_namestring
vendors[].emailstring
vendors[].statusstring
vendors[].workflow_idstring or null

POST /api/v1/rfqs/{id}/award

Create rfq award

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rfq_numberstring
award_typestring
awarded_vendor_idstring or null
awarded_vendorstring or null
pr_numberstring or null
pr_idstring or null
po_numberstring or null
auto_approvedboolean or null
totalnumber or string or null
savingsnumber or string or null
rate_card_idstring or null
contract_idstring or null
pos_createdarray of objects
pos_created[].vendor_idstring
pos_created[].vendor_namestring or null
pos_created[].pr_numberstring
pos_created[].po_numberstring or null
pos_created[].awarded_amountnumber
pos_created[].awarded_line_countinteger
pos_created[].auto_approvedboolean
partial_awardboolean

POST /api/v1/rfqs/{id}/cancel-award

Create rfq cancel award

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
statusstring
prs_cancelledarray of objects
prs_cancelled[].pr_idstring
prs_cancelled[].pr_numberstring
prs_cancelled[].po_doc_idstring or null
rate_cards_inactivatedarray of objects
rate_cards_inactivated[].rate_card_idstring
contracts_terminatedarray of objects
contracts_terminated[].contract_idstring

POST /api/v1/rfqs/{id}/close-responses

Create rfq close responses

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
statusstring
vendors_closednumber

GET /api/v1/rfqs/{id}/compare

Get rfq compare

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rfqobject
rfq.idstring
rfq.rfq_numberstring or null
rfq.titlestring or null
rfq.statusstring or null
rfq.rfq_typestring or null
target_totalstring or number or null
line_itemsarray of objects
line_items[].idnumber or string
line_items[].rfq_idstring or null
line_items[].item_idstring or null
line_items[].descriptionstring or null
line_items[].quantitystring or number or null
line_items[].unitstring or null
line_items[].target_unit_pricestring or number or null
line_items[].estimated_unit_pricestring or number or null
line_items[].delivery_site_idstring or null
line_items[].awarded_vendor_idstring or null
line_items[].awarded_vendor_namestring or null
line_items[].awarded_quantitystring or number or null
line_items[].award_amountstring or number or null
lanesarray of objects
lanes[].idnumber or string
lanes[].rfq_idstring or null
lanes[].origin_citystring or null
lanes[].origin_statestring or null
lanes[].origin_zipstring or null
lanes[].dest_citystring or null
lanes[].dest_statestring or null
lanes[].dest_zipstring or null
lanes[].modestring or null
lanes[].freight_classstring or number or null
lanes[].weight_minstring or number or null
lanes[].weight_maxstring or number or null
lanes[].annual_volume_estimatestring or number or null
lanes[].equipment_typestring or null
lanes[].hazmatboolean
lanes[].accessorials_requiredstring or null
lanes[].target_rate_per_cwtstring or number or null
lanes[].target_flat_ratestring or number or null
lanes[].notesstring or null
bidsarray of objects
bids[].vendor_idstring
bids[].vendor_namestring or null
bids[].statusstring or null
bids[].quote_doc_idstring or null
bids[].invited_atstring or null
bids[].responded_atstring or null
bids[].bid_totalstring or number or null
bids[].vs_targetstring or number or null
bids[].scorestring or number or null
bids[].score_breakdownobject
bids[].raw_metricsobject
bids[].recommendedboolean
bids[].on_contract_line_countinteger
bids[].effective_baseline_totalnumber or string or null
bids[].quote_linesarray of objects
bids[].awarded_line_countinteger
bids[].awarded_amountnumber or string or null
lane_ratesarray of objects
lane_rates[].lanestring or null
lane_rates[].originstring or null
lane_rates[].destinationstring or null
lane_rates[].modestring or null
weights_usedobject

POST /api/v1/rfqs/{id}/issue

Create rfq issue

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rfq_numberstring
vendors_contactednumber
skipped_vendorsarray of objects
skipped_vendors[].vendor_idstring
skipped_vendors[].reasonstring
resultsarray of objects
results[].vendor_idstring
results[].vendor_namestring
results[].emailstring
results[].statusstring
results[].workflow_idstring or null

GET /api/v1/rfqs/{id}/issue-preview

Get rfq issue preview

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
rfq_idstring
rfq_numberstring or null
rfq_statusstring or null
rfq_typestring or null
sendable_countnumber
skipped_countnumber
sampleobject or null
recipientsarray of objects
recipients[].vendor_idstring
recipients[].vendor_namestring or null
recipients[].contact_emailstring or null
recipients[].contact_namestring or null
recipients[].send_statusstring

GET /api/v1/rfqs/stats

Get rfqs stats

data payload:

FieldType
draftnumber
issuednumber
evaluatingnumber
awardednumber
totalnumber
overdue_quote_countnumber
sla_daysnumber

GET /api/v1/rfqs/vendor-recommendations

Get rfqs vendor recommendations

data payload:

FieldType
recommendationsarray of objects
recommendations[].vendor_idstring
recommendations[].vendor_namestring or null
recommendations[].items_suppliednumber
recommendations[].otif_strict_pctstring or number or null
recommendations[].otif_on_timestring or number or null
recommendations[].otif_gradablestring or number or null
recommendations[].has_active_contractboolean
recommendations[].composite_scorestring or number or null
recommendations[].risk_scorestring or number or null
recommendations[].scorenumber

Schemas

GET /api/v1/schemas

List schemas

data payload:

FieldType
schemasarray of objects
schemas[].idstring
schemas[].doc_typestring
schemas[].company_idstring or null
schemas[].schema_versionnumber
schemas[].field_definitionsarray of objects
schemas[].special_instructionsstring or null
schemas[].is_activeboolean
schemas[].is_globalboolean
schemas[].field_countnumber
schemas[].extraction_prompt_templatestring or null
schemas[].created_atstring or null
schemas[].updated_atstring or null

GET /api/v1/schemas/{doc_type}

Get schema

ParameterInTypeRequiredDescription
doc_typepathstringyes—

data payload:

FieldType
idstring
doc_typestring
company_idstring or null
schema_versionnumber
field_definitionsarray of objects
special_instructionsstring or null
is_activeboolean
is_globalboolean
field_countnumber
extraction_prompt_templatestring or null
created_atstring or null
updated_atstring or null

GET /api/v1/schemas/types

Get schemas types

data payload:

FieldType
doc_typesarray of objects
doc_types[].doc_typestring
doc_types[].has_company_overrideboolean
doc_types[].has_global_defaultboolean

Settings

GET /api/v1/settings/rate-providers

Get settings rate providers

data payload:

FieldType
providersarray of objects
providers[].providerstring
providers[].statusstring
providers[].connected_atstring or null
providers[].last_check_atstring or null

Shipments

GET /api/v1/shipments

List shipments with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
statusquerystringno—
linked_statusquerystringnoUniversal Connect filter — all
searchquerystringno—
filterquerystringnoOpaque base64url-encoded FilterSpec (Notion filter-builder), compiled server-side against the trusted SHIPMENT_FILTER_REGISTRY whitelist.

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
shipmentsarray of objects
shipments[].idstring
shipments[].unified_idstring
shipments[].sourcestring or null
shipments[].source_doc_typestring or null
shipments[].source_doc_typesany
shipments[].doc_countnumber or string or null
shipments[].linked_statusstring or null
shipments[].company_idstring or null
shipments[].carrier_namestring or null
shipments[].carrier_vendor_idstring or null
shipments[].tracking_numberstring or null
shipments[].pro_numberstring or null
shipments[].bol_numberstring or null
shipments[].pod_numberstring or null
shipments[].booking_referencestring or null
shipments[].pod_doc_idstring or null
shipments[].po_numberstring or null
shipments[].linked_po_doc_idstring or null
shipments[].shipment_numberstring or null
shipments[].statusstring or null
shipments[].origin_citystring or null
shipments[].origin_statestring or null
shipments[].dest_citystring or null
shipments[].dest_statestring or null
shipments[].modestring or null
shipments[].origin_zipstring or null
shipments[].dest_zipstring or null
shipments[].pickup_datestring or null
shipments[].response_deadlinestring or null
shipments[].created_atstring or null
shipments[].updated_atstring or null
statsobject or null

GET /api/v1/shipments/{id}

Get shipment

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
idstring
shipment_numberstring or null
titlestring or null
statusstring or null
modestring or null
origin_addressstring or null
origin_citystring or null
origin_statestring or null
origin_zipstring or null
dest_addressstring or null
dest_citystring or null
dest_statestring or null
dest_zipstring or null
total_weightstring or number or null
total_piecesnumber or string or null
total_palletsnumber or string or null
freight_classstring or null
budget_targetstring or number or null
currency_codestring or null
special_requirementsstring or null
pickup_datestring or null
delivery_date_requiredstring or null
response_deadlinestring or null
awarded_carrier_idstring or null
awarded_ratestring or number or null
awarded_transit_daysnumber or string or null
booking_referencestring or null
tracking_numberstring or null
pro_numberstring or null
pickup_numberstring or null
pickup_window_startstring or null
pickup_window_endstring or null
actual_delivery_datestring or null
receiver_namestring or null
condition_notesstring or null
pod_doc_idstring or null
signature_statusstring or null
signature_confidencenumber or string or null
signature_signalstring or null
is_multilegboolean or null
equipment_typestring or null
shipper_namestring or null
shipper_contactstring or null
shipper_phonestring or null
consignee_namestring or null
consignee_contactstring or null
consignee_phonestring or null
temperature_minnumber or string or null
temperature_maxnumber or string or null
accessorialsarray of string
notesstring or null
carrier_namestring or null
created_atstring or null
issued_atstring or null
booked_atstring or null
cancelled_atstring or null
created_bystring or null
issued_bystring or null
booked_bystring or null
cancelled_bystring or null
cancelled_reasonstring or null
itemsarray of objects
items[].idstring or null
items[].line_nonumber or string or null
items[].descriptionstring or null
items[].quantitystring or number or null
items[].weightstring or number or null
items[].length_instring or number or null
items[].width_instring or number or null
items[].height_instring or number or null
items[].freight_classstring or null
items[].is_hazmatboolean or null
items[].po_numberstring or null
carriersarray of objects
carriers[].idstring or null
carriers[].carrier_idstring or null
carriers[].carrier_namestring or null
carriers[].contact_emailstring or null
carriers[].contact_namestring or null
carriers[].statusstring or null
carriers[].quoted_ratestring or number or null
carriers[].transit_daysnumber or string or null
carriers[].service_levelstring or null
carriers[].quote_sourcestring or null
carriers[].quote_expires_atstring or null
carriers[].quote_doc_idstring or null
carriers[].invited_atstring or null
carriers[].responded_atstring or null
legsarray of objects
legs[].idstring or null
legs[].leg_ordernumber or string or null
legs[].modestring or null
legs[].origin_citystring or null
legs[].origin_statestring or null
legs[].dest_citystring or null
legs[].dest_statestring or null
legs[].carrier_displaystring or null
legs[].carrier_namestring or null
legs[].statusstring or null
legs[].actual_coststring or number or null
legs[].quoted_ratestring or number or null
trackingobject or null
pickup_appointmentobject or null

GET /api/v1/shipments/{id}/amendments

Get shipment amendments

ParameterInTypeRequiredDescription
idpathstringyes—

data array — each row:

FieldType
idstring
shipment_idstring or null
po_numberstring or null
amendment_typestring or null
original_delivery_datestring or null
new_delivery_datestring or null
original_quantitystring or number or null
new_quantitystring or number or null
original_carrierstring or null
new_carrierstring or null
amendment_dataany or null
sourcestring or null
reasonstring or null
created_atstring or null
child_shipmentsarray of objects or null

GET /api/v1/shipments/{id}/freight-invoices

Get shipment freight invoices

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
invoicesarray of objects
invoices[].doc_idstring
invoices[].document_numberstring or null
invoices[].document_datestring or null
invoices[].total_amountstring or number or null
invoices[].vendor_namestring or null
invoices[].currency_codestring or null
invoices[].pro_numberstring or null
invoices[].processing_statusstring or null
invoices[].freight_anomaliesarray of objects or null
shipmentobject
shipment.pro_numberstring or null
shipment.tracking_numberstring or null
shipment.awarded_ratestring or number or null
shipment.shipment_numberstring or null

GET /api/v1/shipments/{id}/intelligence

Get shipment intelligence

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
intelligenceobject or null
generated_atstring or null

GET /api/v1/shipments/{id}/linked-documents

Get shipment linked documents

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
shipment_idstring or null
documentsarray of objects
documents[].doc_idstring
documents[].link_typestring or null
documents[].match_methodstring or null
documents[].confidencestring or number or null
documents[].linked_atstring or null
documents[].file_namestring or null
documents[].doc_typestring or null
documents[].processing_statusstring or null
documents[].uploaded_atstring or null
documents[].generic_typestring or null
documents[].tablesarray of string
linked_documentsarray of objects
linked_documents[].doc_idstring
linked_documents[].link_typestring or null
linked_documents[].match_methodstring or null
linked_documents[].confidencestring or number or null
linked_documents[].linked_atstring or null
linked_documents[].file_namestring or null
linked_documents[].doc_typestring or null
linked_documents[].processing_statusstring or null
linked_documents[].uploaded_atstring or null
linked_documents[].generic_typestring or null
linked_documents[].tablesarray of string
totalnumber or string or null

GET /api/v1/shipments/{id}/tracking

Get shipment tracking

ParameterInTypeRequiredDescription
idpathstringyes—

data payload:

FieldType
trackingobject or null

GET /api/v1/shipments/facets

Get shipments facets

data payload:

FieldType
facetsobject

GET /api/v1/shipments/stats

Get shipments stats

data payload:

FieldType
draftnumber
issuednumber
evaluatingnumber
bookednumber
in_transitnumber
deliverednumber
cancellednumber
linkednumber
unlinkednumber
platformnumber
totalnumber

Team

GET /api/v1/team/invitations

Get team invitations

data payload:

FieldType
invitationsarray of objects
invitations[].idstring
invitations[].invited_emailstring
invitations[].rolestring
invitations[].statusstring
invitations[].created_atstring or null
invitations[].expires_atstring or null
invitations[].invited_by_emailstring or null

GET /api/v1/team/members

Get team members

data payload:

FieldType
membersarray of objects
members[].user_idstring
members[].emailstring
members[].rolestring
members[].email_verifiedboolean or null
members[].created_atstring or null

Test metrics

GET /api/v1/test-metrics/dashboard

Get test metrics dashboard

data payload:

FieldType
overviewobject
overview.total_runsnumber
overview.avg_pass_ratestring or number or null
overview.min_pass_ratestring or number or null
overview.max_pass_ratestring or number or null
overview.total_scenarios_runnumber
overview.total_passednumber
overview.total_failednumber
overview.avg_latencystring or number or null
overview.total_coststring or number or null
trendarray of objects
trend[].run_datestring
trend[].avg_pass_ratestring or number or null
trend[].avg_check_pass_ratestring or number or null
trend[].run_countnumber
trend[].total_scenariosnumber
scenario_heatmaparray of objects
scenario_heatmap[].scenario_namestring
scenario_heatmap[].total_runsnumber
scenario_heatmap[].passed_countnumber
scenario_heatmap[].failed_countnumber
scenario_heatmap[].pass_ratestring or number or null
scenario_heatmap[].avg_latency_msstring or number or null
category_breakdownarray of objects
category_breakdown[].categorystring
category_breakdown[].total_runsnumber
category_breakdown[].passed_countnumber
category_breakdown[].failed_countnumber
category_breakdown[].pass_ratestring or number or null
comparisonobject
comparison.current_pass_ratestring or number or null
comparison.previous_pass_ratestring or number or null
comparison.pass_rate_changestring or number or null
comparison.current_total_scenariosnumber
comparison.previous_total_scenariosnumber
comparison.current_avg_latencystring or number or null
comparison.previous_avg_latencystring or number or null
scan_mode_breakdownarray of objects
scan_mode_breakdown[].scan_modestring or null
scan_mode_breakdown[].has_emailsboolean
scan_mode_breakdown[].total_runsnumber
scan_mode_breakdown[].passednumber
scan_mode_breakdown[].totalnumber
scan_mode_breakdown[].pass_ratestring or number or null
scan_mode_breakdown[].avg_coststring or number or null
top_failuresarray of objects
top_failures[].descriptionstring
top_failures[].categorystring
top_failures[].failure_countnumber
daysnumber

GET /api/v1/test-metrics/regressions

Get test metrics regressions

data payload:

FieldType
regressionsarray of objects
regressions[].scenario_namestring
regressions[].current_ratestring or number or null
regressions[].previous_avg_ratestring or number or null
regressions[].deltastring or number or null
regressions[].current_run_datestring
regressions[].run_countnumber

POST /api/v1/test-metrics/runs

Record a test run (returns 201 with the canonical success envelope)

Returns: Run recorded — canonical success envelope

GET /api/v1/test-metrics/scenario-failures

Get test metrics scenario failures

data payload:

FieldType
scenario_namestring
latestobject or null

Vendors

GET /api/v1/vendors

List vendors with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
searchquerystringno—
risk_levelquerystringno—
vendor_typequerystringno—
categoryquerystringno—
enrichedquerystringno—
industryquerystringno—
has_anomaliesquerystringno—
naicsquerystringno—
activity_daysquerystringno—
spend_minquerynumberno—
spend_maxquerynumberno—
open_po_minquerynumberno—
open_po_maxquerynumberno—
employee_count_minquerynumberno—
employee_count_maxquerynumberno—
filterquerystringnoOpaque base64url-encoded FilterSpec (Notion filter-builder), compiled server-side against the trusted VENDOR_FILTER_REGISTRY whitelist.
sincequerystringno—
sortquerystringno—
orderquerystringno—
offsetqueryintegerno—

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
currency_codestring or null
vendorsarray of objects
vendors[].vendor_idstring
vendors[].canonical_namestring
vendors[].display_namestring or null
vendors[].display_name_is_ambiguousboolean or null
vendors[].disambiguator_labelstring or null
vendors[].aliasesarray of string or null
vendors[].tax_idstring or null
vendors[].addressany or null
vendors[].headquartersstring or null
vendors[].industrystring or null
vendors[].naics_codestring or null
vendors[].naics_codesarray of string or null
vendors[].employee_countnumber or string or null
vendors[].revenue_usdstring or number or null
vendors[].founded_yearnumber or string or null
vendors[].websitestring or null
vendors[].risk_scorestring or number or null
vendors[].risk_factorsany or null
vendors[].confidencestring or number or null
vendors[].last_enriched_atstring or null
vendors[].additional_dataany or null
vendors[].certificationsany or null
vendors[].vendor_typestring or null
vendors[].carrier_otif_strict_pctstring or number or null or null
vendors[].avg_strict_variance_daysstring or number or null or null
vendors[].carrier_total_deliveriesnumber or string or null
vendors[].vendor_categoriesany or null
vendors[].geographic_coveragestring or null
vendors[].payment_terms_standardstring or null
vendors[].key_brandsarray of string or null
vendors[].competitorsarray of string or null
vendors[].document_countnumber or string or null
vendors[].email_countnumber or string or null
vendors[].invoice_countnumber or string or null
vendors[].po_countnumber or string or null
vendors[].other_doc_countnumber or string or null
vendors[].order_countnumber or string or null
vendors[].contract_countnumber or string or null
vendors[].item_countnumber or string or null
vendors[].total_spendstring or number or null
vendors[].spend_12mostring or number or null
vendors[].invoiced_90dstring or number or null
vendors[].open_po_valuestring or number or null
vendors[].open_po_unreceived_valuestring or number or null
vendors[].first_doc_datestring or null
vendors[].last_doc_datestring or null
vendors[].last_activity_atstring or null
vendors[].open_anomaly_countnumber or string or null
vendors[].critical_anomaly_countnumber or string or null
vendors[].open_findings_countnumber or string or null
vendors[].otif_pctstring or number or null
vendors[].otif_strict_pctstring or number or null
vendors[].otif_on_timestring or number or null
vendors[].otif_gradablestring or number or null
vendors[].ship_on_time_pctstring or number or null
vendors[].total_spend_30dstring or number or null
vendors[].total_spend_90dstring or number or null
vendors[].total_spend_365dstring or number or null
vendors[].on_time_pct_30dstring or number or null
vendors[].on_time_pct_90dstring or number or null
vendors[].on_time_pct_365dstring or number or null
vendors[].deliveries_30dnumber or string or null
vendors[].deliveries_90dnumber or string or null
vendors[].deliveries_365dnumber or string or null
vendors[].avg_response_lag_30dstring or number or null or null
vendors[].confirmed_count_30dnumber or string or null
vendors[].canonical_name_llmstring or null
vendors[].canonical_legal_namestring or null
vendors[].canonical_websitestring or null
vendors[].canonical_industrystring or null
vendors[].canonical_industry_sectorstring or null
vendors[].canonical_parentstring or null
vendors[].canonical_is_subsidiaryboolean or null
vendors[].canonical_looks_hallucinatedboolean or null
vendors[].canonical_naicsstring or null
vendors[].canonical_vendor_typestring or null
vendors[].canonical_public_privatestring or null
vendors[].canonical_headquartersstring or null
vendors[].vendor_segmentstring or null
vendors[].vendor_segment_reasoningstring or null
vendors[].vendor_segment_classified_atstring or null
vendors[].predicted_payment_terms_drift_daysstring or number or null or null
vendors[].predicted_response_lag_daysstring or number or null or null
vendors[].top_finding_severitystring or null
vendors[].top_finding_typestring or null
vendors[].top_finding_categorystring or null
vendors[].finding_countinteger or null
statsobject or null
viewobject or null

GET /api/v1/vendors/{vendor_id}

Get vendor

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
vendor_idstring
canonical_namestring
display_namestring or null
display_name_is_ambiguousboolean or null
disambiguator_labelstring or null
aliasesarray of string or null
tax_idstring or null
addressany or null
headquartersstring or null
industrystring or null
naics_codestring or null
naics_codesarray of string or null
employee_countnumber or string or null
revenue_usdstring or number or null
founded_yearnumber or string or null
websitestring or null
risk_scorestring or number or null
risk_factorsany or null
confidencestring or number or null
last_enriched_atstring or null
additional_dataany or null
certificationsany or null
vendor_typestring or null
carrier_otif_strict_pctstring or number or null or null
avg_strict_variance_daysstring or number or null or null
carrier_total_deliveriesnumber or string or null
vendor_categoriesany or null
geographic_coveragestring or null
payment_terms_standardstring or null
key_brandsarray of string or null
competitorsarray of string or null
document_countnumber or string or null
email_countnumber or string or null
invoice_countnumber or string or null
po_countnumber or string or null
other_doc_countnumber or string or null
order_countnumber or string or null
contract_countnumber or string or null
item_countnumber or string or null
total_spendstring or number or null
spend_12mostring or number or null
invoiced_90dstring or number or null
open_po_valuestring or number or null
open_po_unreceived_valuestring or number or null
first_doc_datestring or null
last_doc_datestring or null
last_activity_atstring or null
open_anomaly_countnumber or string or null
critical_anomaly_countnumber or string or null
open_findings_countnumber or string or null
otif_pctstring or number or null
otif_strict_pctstring or number or null
otif_on_timestring or number or null
otif_gradablestring or number or null
ship_on_time_pctstring or number or null
total_spend_30dstring or number or null
total_spend_90dstring or number or null
total_spend_365dstring or number or null
on_time_pct_30dstring or number or null
on_time_pct_90dstring or number or null
on_time_pct_365dstring or number or null
deliveries_30dnumber or string or null
deliveries_90dnumber or string or null
deliveries_365dnumber or string or null
avg_response_lag_30dstring or number or null or null
confirmed_count_30dnumber or string or null
canonical_name_llmstring or null
canonical_legal_namestring or null
canonical_websitestring or null
canonical_industrystring or null
canonical_industry_sectorstring or null
canonical_parentstring or null
canonical_is_subsidiaryboolean or null
canonical_looks_hallucinatedboolean or null
canonical_naicsstring or null
canonical_vendor_typestring or null
canonical_public_privatestring or null
canonical_headquartersstring or null
vendor_segmentstring or null
vendor_segment_reasoningstring or null
vendor_segment_classified_atstring or null
predicted_payment_terms_drift_daysstring or number or null or null
predicted_response_lag_daysstring or number or null or null
top_finding_severitystring or null
top_finding_typestring or null
top_finding_categorystring or null
finding_countinteger or null
default_gl_account_codestring or null
contact_emailstring or null
contact_namestring or null
contact_phonestring or null
created_atstring or null
updated_atstring or null
sourcesany or null
years_in_businessnumber or string or null
public_privatestring or null
business_classificationsany or null
financial_eventsany or null
ceo_namestring or null
recent_newsany or null
alertsany or null
sanctions_statusstring or null
sanctions_checked_listsarray of string or null
adverse_mediaany or null
risk_categoriesany or null
certification_gapsany or null
positive_signalsany or null
field_backingobject or null
credentialsarray of objects
credentials[].labelstring
credentials[].categorystring
credentials[].sourcestring
credentials[].evidence_refsarray of string
credentials[].evidence_urlstring or null
credentials[].first_seen_atstring
credentials[].last_seen_atstring
shipment_docsarray of objects
shipment_docs[].labelstring
shipment_docs[].categorystring
shipment_docs[].sourcestring
shipment_docs[].evidence_refsarray of string
shipment_docs[].evidence_urlstring or null
shipment_docs[].first_seen_atstring
shipment_docs[].last_seen_atstring
parent_vendor_idstring or null
parent_vendor_namestring or null
parent_link_methodstring or null
parent_link_confidencestring or number or null
subsidiariesarray of objects or null
composite_scorenumber or string or null
observed_payment_termsstring or null
observed_payment_terms_pctnumber or string or null
observed_currencystring or null
observed_incotermsstring or null
default_lead_time_daysnumber or string or null
vendor_lt_avg_daysstring or number or null
vendor_lt_ewma_daysstring or number or null
vendor_lt_trend_pctstring or number or null
vendor_lt_observation_countnumber or string or null
vendor_lt_last_observedstring or null
vendor_lt_last_3array of number or null
observed_lead_p10string or number or null
observed_lead_medianstring or number or null
observed_lead_p90string or number or null
observed_lead_countnumber or string or null
contactsarray of objects
contacts[].idstring or number
contacts[].vendor_idstring
contacts[].contact_namestring or null
contacts[].emailstring or null
contacts[].phonestring or null
contacts[].titlestring or null
contacts[].departmentstring or null
contacts[].faxstring or null
contacts[].rolestring or null
contacts[].sourcestring or null
contacts[].is_primaryboolean or null
contacts[].email_countnumber or null
contacts[].source_countsobject or null
contacts[].created_atstring or null
contacts[].updated_atstring or null
intelligenceobject or null
response_lagobject or null
recent_lead_time_changesarray of objects
recent_lead_time_changes[].po_doc_idstring or null
recent_lead_time_changes[].po_numberstring or null
recent_lead_time_changes[].original_daysnumber or string or null
recent_lead_time_changes[].new_daysnumber or string or null
recent_lead_time_changes[].reasonstring or null
recent_lead_time_changes[].stated_atstring or null

GET /api/v1/vendors/{vendor_id}/account-summary

Get vendor account summary

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
vendor_idstring
bucketsobject
buckets.invoiceobject
buckets.credit_memoobject
buckets.debit_noteobject
net_payable_usdnumber
unlinked_credit_countnumber
active_items_12monumber
spend_12mo_usdnumber
orders_count_12monumber
price_drift_90d_pctnumber or null
monthly_invoiced_12moarray of number
monthly_orders_12moarray of number
monthly_otif_12moarray of number or null
otif_pct_12monumber or null
otif_on_time_12mointeger or null
otif_measured_12mointeger or null
otif_received_12mointeger or null
otif_withheld_12mostring or null
otif_floorinteger or null
otif_window_monthsinteger
monthly_otif_latest_promise_12moarray of number or null
otif_latest_promise_pct_12monumber or null
related_party_held_usdnumber or null
otif_basis_12moobject or null

GET /api/v1/vendors/{vendor_id}/addresses

Get vendor addresses

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
addressesobject
total_uniqueinteger
contactsobject

GET /api/v1/vendors/{vendor_id}/contacts

Get vendor contacts

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
contactsarray of objects
contacts[].idstring or number
contacts[].vendor_idstring
contacts[].contact_namestring or null
contacts[].emailstring or null
contacts[].phonestring or null
contacts[].titlestring or null
contacts[].departmentstring or null
contacts[].faxstring or null
contacts[].rolestring or null
contacts[].sourcestring or null
contacts[].is_primaryboolean or null
contacts[].email_countnumber or null
contacts[].source_countsobject or null
contacts[].created_atstring or null
contacts[].updated_atstring or null

GET /api/v1/vendors/{vendor_id}/document-data

Get vendor document data

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
documentsarray of objects
documents[].doc_idstring
documents[].document_typestring or null
documents[].document_numberstring or null
documents[].document_datestring or null
documents[].total_amountstring or number or null
documents[].currencystring or null
documents[].statusstring or null
contactobject
contact.emailsarray of string
contact.phonesarray of string
contact.websitesarray of string
paymentobject
payment.bank_namesarray of string
payment.bank_accountsarray of string
payment.swift_codesarray of string
payment.branch_namesarray of string
tax_idsobject
tax_ids.gstinarray of string
doc_countnumber or string or null

GET /api/v1/vendors/{vendor_id}/emails

Get vendor emails

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
emailsarray of objects
emails[].email_ingest_idstring
emails[].subjectstring or null
emails[].sender_namestring or null
emails[].sender_emailstring or null
emails[].sender_domainstring or null
emails[].received_atstring or null
emails[].body_previewstring or null
emails[].communication_typesarray of string or null
emails[].urgencystring or null
emails[].action_requiredboolean or null
emails[].comm_statusstring or null

GET /api/v1/vendors/{vendor_id}/exposure

Get vendor exposure

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
vendor_idstring
total_spend_365dnumber
exposed_spendnumber
exposed_share_pctnumber or null
duty_owed_usdnumber or null
avoidable_301_usdnumber or null
exposed_by_countryarray of objects
exposed_by_country[].countrystring
exposed_by_country[].spendnumber
exposed_by_country[].share_pctnumber or null
exposed_by_country[].regimestring or null
exposed_by_country[].duty_owed_usdnumber or null
exposed_by_country[].avoidable_301_usdnumber or null

GET /api/v1/vendors/{vendor_id}/intelligence

Get vendor intelligence

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
vendor_idstring
severitystring or null
summarystring or null
body_markdownstring or null
actionsarray of string
historyarray of objects
history[].datestring
history[].eventstring
signals_usedarray of string
generated_atstring or null
data_hashstring or null
age_secondsnumber or null
is_staleboolean or null
cachedboolean or null

GET /api/v1/vendors/{vendor_id}/invoices

Get vendor invoices

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
documentsarray of objects
documents[].doc_idstring
documents[].document_typestring or null
documents[].invoice_numberstring or null
documents[].document_numberstring or null
documents[].document_datestring or null
documents[].due_datestring or null
documents[].statusstring or null
documents[].total_amountstring or number or null
documents[].base_totalstring or number or null
documents[].currencystring or null
documents[].po_numberstring or null
documents[].buyer_po_numberstring or null
documents[].match_statusstring or null
documents[].has_anomalyboolean or null
invoicesarray of objects
invoices[].doc_idstring
invoices[].document_typestring or null
invoices[].invoice_numberstring or null
invoices[].document_numberstring or null
invoices[].document_datestring or null
invoices[].due_datestring or null
invoices[].statusstring or null
invoices[].total_amountstring or number or null
invoices[].base_totalstring or number or null
invoices[].currencystring or null
invoices[].po_numberstring or null
invoices[].buyer_po_numberstring or null
invoices[].match_statusstring or null
invoices[].has_anomalyboolean or null

GET /api/v1/vendors/{vendor_id}/items

Get vendor items

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
itemsarray of objects
items[].item_idstring or null
items[].vendor_part_numberstring or null
items[].descriptionstring or null
items[].buyer_part_numberstring or null
items[].skustring or null
items[].manufacturer_part_numberstring or null
items[].categorystring or null
items[].country_of_originstring or null
items[].hts_codestring or null
items[].invoice_countnumber or string or null
items[].order_countnumber or string or null
items[].ordered_unit_pricestring or number or null
items[].last_ordered_atstring or null
items[].avg_pricestring or number or null
items[].min_pricestring or number or null
items[].max_pricestring or number or null
items[].total_spendstring or number or null
items[].first_purchasedstring or null
items[].last_purchasedstring or null
items[].price_trend_pctstring or number or null
items[].on_time_pctstring or number or null
items[].avg_lead_time_daysstring or number or null
items[].delivery_countnumber or string or null
items[].lead_p10string or number or null
items[].lead_medianstring or number or null
items[].lead_p90string or number or null
items[].lt_avg_daysstring or number or null
items[].lt_ewma_daysstring or number or null
items[].lt_trend_pctstring or number or null
items[].lt_last_3array of number or null
items[].lt_observation_countnumber or string or null
items[].sourcing_strategystring or null
items[].vendor_countnumber or string or null
viewobject or null

GET /api/v1/vendors/{vendor_id}/linked-documents

Get vendor linked documents

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
documentsarray of objects
documents[].doc_idstring
documents[].document_typestring or null
documents[].document_numberstring or null
documents[].document_datestring or null
documents[].link_typestring or null
documents[].total_amountstring or number or null
countnumber

GET /api/v1/vendors/{vendor_id}/qualification

Get vendor qualification

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
idstring
vendor_idstring
created_bystring
qualification_statusstring
qualification_scorenumber or null
w9_collectedboolean
w9_collected_atstring or null
banking_verifiedboolean
banking_verified_bystring or null
ofac_checked_atstring or null
coi_collectedboolean
coi_expires_atstring or null
qualified_atstring or null
expires_atstring or null
notesstring or null

GET /api/v1/vendors/{vendor_id}/recent-lead-time-changes

Get vendor recent lead time changes

ParameterInTypeRequiredDescription
vendor_idpathstringyes—

data payload:

FieldType
changesarray of objects
changes[].po_doc_idstring or null
changes[].po_numberstring or null
changes[].original_daysnumber or string or null
changes[].new_daysnumber or string or null
changes[].reasonstring or null
changes[].stated_atstring or null

GET /api/v1/vendors/{vendor_id}/threads

Get vendor threads

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
threadsarray of objects
threads[].thread_idstring
threads[].thread_kindstring
threads[].primary_po_numberstring or null
threads[].statusstring
threads[].outcomestring or null
threads[].summarystring or null
threads[].has_anomalyboolean
threads[].delivered_in_fullboolean or null
threads[].relationshipsarray of objects
threads[].eventsarray of objects

GET /api/v1/vendors/{vendor_id}/threads/unlinked

Get vendor threads unlinked

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
unlinkedarray of objects
unlinked[].keystring
unlinked[].kindstring
unlinked[].idstring
unlinked[].titlestring
unlinked[].subtitlestring or null
unlinked[].tsstring
unlinked[].doc_typestring or null

GET /api/v1/vendors/{vendor_id}/uploads

Get vendor uploads

ParameterInTypeRequiredDescription
vendor_idpathstringyes—
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).

Returns: Paginated — pass cursor/limit (see Pagination above).

data payload:

FieldType
uploadsarray of objects
uploads[].keystring
uploads[].sourcestring
uploads[].doc_sourcestring or null
uploads[].tsstring or null
uploads[].doc_typestring or null
uploads[].doc_idstring or null
uploads[].email_idstring or null
uploads[].titlestring
uploads[].subtitlestring or null
uploads[].po_numberstring or null
uploads[].amountstring or number or null
uploads[].urgencystring or null
uploads[].action_requiredboolean or null

GET /api/v1/vendors/collusion-clusters

Get vendors collusion clusters

data payload:

FieldType
clustersarray of objects
clusters[].idstring or number
clusters[].vendor_idsarray of string
clusters[].vendor_namesarray of string
clusters[].match_typesarray of string
clusters[].confidencenumber or null
clusters[].llm_summarystring or null
clusters[].total_spend_90dstring or number or null
clusters[].statusstring or null
clusters[].reviewed_bystring or null
clusters[].reviewed_atstring or null
clusters[].created_atstring or null
clusters[].updated_atstring or null
clusters[].evidenceany or null
totalnumber

GET /api/v1/vendors/enrichment-credits

Get vendors enrichment credits

data payload:

FieldType
enrichments_usednumber
free_tiernumber
unlimitedboolean
planstring or null

GET /api/v1/vendors/facets

Get vendors facets

data payload:

FieldType
facetsobject

GET /api/v1/vendors/stats

Get vendors stats

data payload:

FieldType
total_vendorsnumber
enriched_countnumber
high_risk_countnumber
total_spendstring or number or null
active_vendorsnumber
total_vendors_in_dbnumber
total_enriched_in_dbnumber
total_high_risk_in_dbnumber
avg_spend_per_vendornumber
new_vendorsnumber
risk_distributionobject
risk_distribution.unknownnumber
risk_distribution.lownumber
risk_distribution.mediumnumber
risk_distribution.highnumber
risk_distribution.criticalnumber
top_vendorsarray of objects
top_vendors[].vendor_idstring
top_vendors[].canonical_namestring
top_vendors[].total_spendstring or number or null
top_vendors[].document_countnumber or null
spend_concentrationobject
spend_concentration.top5_spendnumber
spend_concentration.total_spendnumber
spend_concentration.concentration_pctnumber
spend_concentration.top5_vendorsarray of objects
open_claims_countnumber
open_claims_amountnumber
periodstring
is_period_filteredboolean
trendsobject
trends.vendor_changenumber
trends.spend_changenumber
trends.spend_change_percentnumber
trends.prev_active_vendorsnumber
trends.prev_total_spendnumber

GET /api/v1/vendors/summary

Get vendors summary

data payload:

FieldType
currency_codestring or null
vendor_countnumber
total_spendstring or number or null
invoiced_90dstring or number or null
open_po_valuestring or number or null
with_anomaliesnumber

Webhooks

Get notified instantly when things happen in your account.

Setup

  1. Go to Settings
  2. Enable webhooks
  3. Enter your URL: https://your-server.com/webhooks/kynthar
  4. Save, then send a test event (webhook.test) to verify your endpoint

Events

EventWhen it fires
document.receivedA document arrived (upload, email, or API) and entered processing.
document.processedA document finished processing; extracted fields are available.
document.failedA document could not be processed.
anomaly.detectedAn anomaly was detected on a document (price, quantity, terms, or risk).
order.status_changedA purchase order's fulfillment status changed.
shipment.receivedA shipment was received against a purchase order.
invoice.matchedAn invoice was matched to its purchase order.
webhook.testSent when you trigger a test delivery to verify your endpoint and signature handling. Not subscribable.

What you receive

Every POST body is a versioned envelope (api_version: 2026-05-13):

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX...",
  "event_type": "document.received",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": { ... }
}

Your response

Return any 2xx within 10 seconds. Do heavy work async.

app.post('/webhooks/kynthar', (req, res) => {
  res.status(200).send('OK');  // Respond immediately

  // Process async
  handleWebhook(req.body).catch(console.error);
});

Anything else is retried 5 times (1m, 5m, 30m, 2h, 12h backoff), then dead-lettered after 24h.

Event reference

Every example below is validated against the exact schema production sends, and each X-Webhook-Signature header shows the real signature for that example body — computed with the test secret whsec_example_secret at timestamp 1715612400 — so you can verify your handler against known-good vectors.

document.received — Document received

A document arrived (upload, email, or API) and entered processing.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: document.received
X-Webhook-Signature: t=1715612400,v1=cf1e15e6adf46d688b97f03b4917d2df419eb6bf52d2103d50f1a3e652d1ba50

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "document.received",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "document_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "filename": "invoice-2026-0421.pdf",
    "source": "email",
    "received_at": "2026-05-13T15:30:00.000Z"
  }
}

document.processed — Document processed

A document finished processing; extracted fields are available.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: document.processed
X-Webhook-Signature: t=1715612400,v1=68c3c4b67413c050514dd20006ef8044f080180d261084ee4db916b9b9a45492

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "document.processed",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "document_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "document_type": "invoice",
    "classification": "invoice",
    "po_number": "PO-2026-0421",
    "vendor_name": "Acme Industrial Supply",
    "total_amount": 1250,
    "currency_code": "USD",
    "line_item_count": 12,
    "processed_at": "2026-05-13T15:30:00.000Z"
  }
}

document.failed — Document failed

A document could not be processed.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: document.failed
X-Webhook-Signature: t=1715612400,v1=49a652f9af61e0c5a0c365272f1587ace68efbb22e4f55eaaa43c66d246749b2

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "document.failed",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "document_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "error_code": "EXTRACTION_FAILED",
    "error_message": "Could not extract structured fields from the document.",
    "stage": "PARSE",
    "failed_at": "2026-05-13T15:30:00.000Z"
  }
}

anomaly.detected — Anomaly detected

An anomaly was detected on a document (price, quantity, terms, or risk).

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: anomaly.detected
X-Webhook-Signature: t=1715612400,v1=4ea3075c4ffc77a3a5357a5339ab96fc8f7bf23340c85dde7d2c5812bab36135

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "anomaly.detected",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "anomaly_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "document_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "category": "price",
    "severity": "high",
    "title": "Invoice price exceeds PO price",
    "description": "Line 1 bills $2,138.55/unit vs $2,087.31 on the PO.",
    "detected_at": "2026-05-13T15:30:00.000Z"
  }
}

order.status_changed — Order status changed

A purchase order's fulfillment status changed.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: order.status_changed
X-Webhook-Signature: t=1715612400,v1=38e379b2f00af4f9ea04c2306ee45f93fdcca6f6dcdec79467baaa602f1b0c73

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "order.status_changed",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "order_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "po_number": "PO-2026-0421",
    "previous_status": "confirmed",
    "new_status": "shipped",
    "changed_at": "2026-05-13T15:30:00.000Z"
  }
}

shipment.received — Shipment received

A shipment was received against a purchase order.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: shipment.received
X-Webhook-Signature: t=1715612400,v1=2b54b8f27797d88b769b2820ab7bd21a3aa68ed17eb2586887aa51e03550cb40

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "shipment.received",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "shipment_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "po_number": "PO-2026-0421",
    "carrier": "FedEx Freight",
    "tracking_number": "794583215982",
    "received_at": "2026-05-13T15:30:00.000Z"
  }
}

invoice.matched — Invoice matched

An invoice was matched to its purchase order.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: invoice.matched
X-Webhook-Signature: t=1715612400,v1=406fd4c569192a9203b93fb7c9f4706eaf9e20d39759371c8a2e52be7e324577

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "invoice.matched",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "invoice_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "document_id": "01HX3K5TJ0V2N8QW4RB6YD9SFM",
    "po_number": "PO-2026-0421",
    "match_type": "exact",
    "match_score": 0.98,
    "matched_at": "2026-05-13T15:30:00.000Z"
  }
}

webhook.test — Test event

Sent when you trigger a test delivery to verify your endpoint and signature handling. Not subscribable.

Example delivery:

POST https://your-server.com/webhooks/kynthar
X-Webhook-Event: webhook.test
X-Webhook-Signature: t=1715612400,v1=5e50b683e626c453f6f9586ec21a3c4568c1dd11b91aa451ace064d60c66032d

{
  "api_version": "2026-05-13",
  "event_id": "evt_01HX3K5TJ0V2N8QW4RB6YD9SFM",
  "event_type": "webhook.test",
  "timestamp": "2026-05-13T15:30:00.000Z",
  "data": {
    "message": "Test delivery from Kynthar.",
    "triggered_at": "2026-05-13T15:30:00.000Z"
  }
}

Verify signature (recommended)

X-Webhook-Signature is t=<unix seconds>,v1=<hex digest> — an HMAC-SHA256 of <timestamp>.<raw body> using your webhook secret. Reject stale timestamps (±300s) to block replays.

const crypto = require('crypto');

function verifyWebhook(rawBody, signatureHeader, secret) {
  const parts = Object.fromEntries(
    signatureHeader.split(',').map((p) => p.split('=', 2))
  );
  const t = parseInt(parts.t, 10);
  if (!t || !parts.v1) return false;

  // Replay protection (300s tolerance)
  if (Math.abs(Date.now() / 1000 - t) > 300) return false;

  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${t}.${rawBody}`)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(parts.v1, 'hex'),
    Buffer.from(expected, 'hex')
  );
}

Rate limits

Requests are rate-limited per IP and metered per plan. When you exceed a limit you get 429 with a registered error code in the standard error envelope.


Questions?

Email: support@kynthar.com