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

data payload:

FieldType
anomaliesarray of objects
anomalies[].idnumber or string
anomalies[].finding_idstring
anomalies[].anomaly_typestring
anomalies[].severitystring
anomalies[].statusstring
anomalies[].descriptionstring
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

Auth

GET /api/v1/auth/company-settings

Get auth company settings

data payload:

FieldType
company_idstring
company_namestring
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[].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.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/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
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

Chat home

GET /api/v1/chat-home/kpi-summary

Get chat home kpi summary

data payload:

FieldType
spend_12mo_usdnumber or null
monthly_spend_12moarray of number or null or null
open_po_countnumber or null
active_vendor_countnumber or null
otif_pct_12monumber or null
monthly_otif_12moarray of number or null or null
open_exception_countnumber or null
avg_lead_time_daysnumber or null
monthly_lead_time_12moarray of number or null or null

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[].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
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
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

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[].confidencenumber or string or null
facts[].evidence_quotestring or null
facts[].displaystring or null
facts[].po_numberstring or null
facts[].payloadobject or null

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[].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
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[].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
summaryobject
summary.total_carriersnumber or string or null
summary.avg_otifstring or number or null
summary.total_freight_spendstring or number or null
summary.active_rate_cardsnumber or string or null

GET /api/v1/analytics/contract-health

Get contract health

data payload:

FieldType
currency_codestring or null
summaryobject
summary.active_contractsnumber or string or null
summary.expiring_90dnumber or string or null
summary.nte_warningsnumber or string or null
summary.total_contract_valuestring or number or null
summary.total_spend_against_contractsstring or number or null
summary.overall_utilization_pctstring or number or null
expiring_contractsarray of objects
expiring_contracts[].contract_idstring
expiring_contracts[].contract_numberstring or null
expiring_contracts[].vendor_namestring
expiring_contracts[].expiration_datestring or null
expiring_contracts[].days_remainingnumber or string or null
expiring_contracts[].total_value_limitstring or number or null
expiring_contracts[].cumulative_spendstring or number or null
expiring_contracts[].auto_renewalboolean or null
expiring_contracts[].notice_period_daysnumber or string or null
nte_warningsarray of objects
nte_warnings[].contract_idstring
nte_warnings[].contract_numberstring or null
nte_warnings[].vendor_namestring
nte_warnings[].total_value_limitstring or number or null
nte_warnings[].cumulative_spendstring or number or null
nte_warnings[].utilization_pctstring or number or null
nte_warnings[].expiration_datestring or null
underutilizedarray of objects
underutilized[].contract_idstring
underutilized[].contract_numberstring or null
underutilized[].vendor_namestring
underutilized[].total_value_limitstring or number or null
underutilized[].cumulative_spendstring or number or null
underutilized[].utilization_pctstring or number or null
underutilized[].days_remainingnumber or string or null
underutilized[].time_elapsed_pctstring or number or null
price_creeparray of objects
price_creep[].vendor_idstring or null
price_creep[].vendor_namestring
price_creep[].vendor_part_numberstring or null
price_creep[].min_pricestring or number or null
price_creep[].max_pricestring or number or null
price_creep[].increase_pctstring or number or null
price_creep[].month_countnumber or string or null
price_creep[].total_invoicesnumber or string or null
otif_trendarray of objects
otif_trend[].monthstring
otif_trend[].total_deliveriesnumber or string or null
otif_trend[].otif_countnumber or string or null
otif_trend[].otif_pctstring or number or null
compliance_trendarray of objects
compliance_trend[].monthstring
compliance_trend[].total_validationsnumber or string or null
compliance_trend[].compliantnumber or string or null
compliance_trend[].compliance_pctstring or number or null
spend_concentrationarray of objects
spend_concentration[].vendor_idstring or null
spend_concentration[].vendor_namestring
spend_concentration[].total_spendstring or number or null
spend_concentration[].spend_pctstring or number or null
spend_concentration[].has_contractboolean 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
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
otif_pctstring or number or null
otif_deliveriesnumber or string or null
value_surfacedstring or number 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

Get OTIF

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.on_time_countnumber or string or null
summary.in_full_countnumber or string or null
summary.avg_days_variancestring or number or null
summary.requested_share_pctnumber or string or null
summary.metric_backingobject or null
alertsany

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[].avg_days_variancestring or number 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[].totalnumber or string 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
total_duty_usdstring or number or null or null
blended_effective_rate_pctstring or number or null 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[].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
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[].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_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
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[].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 or null
metric_backingobject or null
totalsobject
totals.total_valuestring or number or null
totals.verified_valuestring or number or null
totals.price_variancestring or number or null
totals.overbillingstring or number or null
totals.duplicates_preventedstring or number or null
totals.fraud_preventedstring or number or null
totals.price_outliersstring or number or null
totals.discountsstring or number or null
totals.sourcing_oppsstring or number or null
totals.risk_exposurestring or number or null
totals.otif_impactstring or number or null
totals.total_eventsnumber or string or null
totals.total_docsnumber or string or null
monthlyarray of objects
monthly[].monthstring
monthly[].totalstring or number or null
monthly[].price_variancestring or number or null
monthly[].overbillingstring or number or null
monthly[].duplicatesstring or number or null
monthly[].fraudstring or number or null
monthly[].outliersstring or number or null
monthly[].discountsstring or number or null
monthly[].sourcingstring or number or null
monthly[].riskstring or number or null
monthly[].otifstring or number or null
monthly[].eventsnumber or string or null
monthly[].docsnumber or string or null

GET /api/v1/analytics/vendor-scorecards

Vendor scorecards (paginated)

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).
sortquerystringnoScorecard sort column (default composite_score).
includequerystringnoHierarchy view — per-vendor leaves, parent rollups, or both.

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

data payload:

FieldType
currency_codestring or null
vendorsarray of objects
vendors[].vendor_idstring
vendors[].vendor_namestring
vendors[].composite_scorenumber or string or null
vendors[].otif_pctstring or number or null
vendors[].on_time_pctstring or number or null
vendors[].in_full_pctstring or number or null
vendors[].total_deliveriesnumber or string or null
vendors[].avg_days_variancestring or number or null
vendors[].anomaly_countnumber or string or null
vendors[].critical_anomaly_countnumber or string or null
vendors[].total_spendstring or number or null
vendors[].invoice_countnumber or string or null
vendors[].risk_scorestring or number or null
vendors[].industrystring or null
vendors[].active_contractsnumber or string or null
vendors[].nearest_expirationstring or null
vendors[].claims_countnumber or string or null
vendors[].claims_open_countnumber or string or null
vendors[].claims_amount_openstring or number or null
vendors[].avg_price_trend_pctstring or number or null
vendors[].price_tracked_itemsnumber or string or null
vendors[].vendor_categoriesarray of string or null
vendors[].primary_categorystring or null
vendors[].vendor_typestring or null
vendors[].countrystring or null
vendors[].state_or_regionstring or null
vendors[].citystring or null
vendors[].postal_codestring or null
vendors[].open_po_countnumber or string or null
vendors[].open_po_valuestring or number or null
vendors[].parent_vendor_idstring or null
vendors[].is_rollupboolean or null
vendors[].subsidiary_countnumber or string or null
vendors[].subsidiary_idsarray of string or null

GET /api/v1/analytics/vendor-trends

Per-vendor monthly trend series

ParameterInTypeRequiredDescription
vendor_idsquerystringnoComma-separated vendor ids.
monthsquerystringnoTrailing window in months.

data payload:

FieldType
trendsobject

GET /api/v1/analytics/vendor-trends/aggregate

Aggregated monthly trend series

ParameterInTypeRequiredDescription
vendor_idsquerystringnoComma-separated vendor ids.
monthsquerystringnoTrailing window in months.

data payload:

FieldType
monthlyarray of objects
monthly[].monthstring or null
monthly[].total_spendstring or number or null
monthly[].total_documentsnumber or string or null
monthly[].total_deliveriesnumber or string or null
monthly[].otif_pctstring or number or null
monthly[].on_time_pctstring or number or null
monthly[].in_full_pctstring or number 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.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
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

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
events_linkednumber
briefingobject or null
by_kindarray of objects
by_kind[].signal_kindstring
by_kind[].labelstring
by_kind[].total_usdnumber
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[].exposure_basisstring
signals[].confidencenumber or null
signals[].as_of_datestring or null
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 (impact-ranked) with cursor pagination

ParameterInTypeRequiredDescription
cursorquerystringnoOpaque base64url cursor; omit for first page.
limitqueryintegernoPage size (default 25, max 100).
statusquerystringno—
categoryquerystringno—
vendor_idquerystringno—
bucketquerystringnomaterial = exclude $0 procedural noise; procedural = only it.
searchquerystringno—

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

data payload:

FieldType
findingsarray of objects
findings[].finding_idstring
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[].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_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
currency_codestring or null
auto_resolved_last_7dnumber or string or null

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
total_claimedstring or number or null
total_recoveredstring or number or null
total_approvedstring or number or null

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

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_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[].email_directionstring or null
items[].email_classstring or null
items[].filed_reasonstring 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

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
currency_codestring or null
itemsarray of objects
items[].item_idstring
items[].currency_codestring or null
items[].descriptionstring or null
items[].categorystring or null
items[].category_metric_backingobject or null
items[].subcategorystring or null
items[].skustring or null
items[].mpnstring or null
items[].uomstring 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_spendnumber 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[].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[].open_anomaly_countnumber or string or null
items[].critical_anomaly_countnumber or string or null
items[].intelligenceobject or null
statsobject
stats.currency_codestring or null
stats.total_itemsnumber or string or null
stats.total_spendnumber or string or null
stats.total_spend_lifetimenumber or string or null
stats.total_spend_ttmnumber or string or null
stats.sole_source_countnumber or string or null
stats.dual_source_countnumber or string or null
stats.multi_source_countnumber or string or null
stats.active_contract_countnumber or string or null
stats.high_variance_countnumber or string or null
categoriesarray of string

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

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
total_spendnumber or string or null
avg_pricenumber or string or null
last_price_updatestring 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[].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
has_active_contractboolean or null
active_contract_countnumber or string or null
intelligenceobject or null

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
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
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[].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

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

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[].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.due_soonnumber
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[].latest_expected_datestring or null
purchase_orders[].latest_promise_sourcestring or null
purchase_orders[].receipt_pctstring or number 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.action_requirednumber
stats.overduenumber
stats.due_soonnumber
stats.pendingnumber
stats.confirmednumber
stats.shippednumber
stats.in_transitnumber
stats.deliverednumber
stats.partial_shipnumber
stats.partial_receiptnumber
stats.on_holdnumber
stats.backorderednumber
stats.cancellednumber
stats.disputednumber
stats.closed_shortnumber
stats.closed_completenumber

GET /api/v1/po/{po_number}

Get purchase order

ParameterInTypeRequiredDescription
po_numberpathstringyes—

data payload:

FieldType
po_numberstring
po_datestring or null
order_placed_datestring or null
confirmation_received_datestring 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
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
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_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[].actual_datestring or null
line_items[].actual_date_sourcestring or null
line_items[].receipt_date_confidencenumber or string 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[].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
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

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

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
action_requirednumber
overduenumber
due_soonnumber
pendingnumber
confirmednumber
shippednumber
in_transitnumber
deliverednumber
partial_shipnumber
partial_receiptnumber
on_holdnumber
backorderednumber
cancellednumber
disputednumber
closed_shortnumber
closed_completenumber

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
validation_runsarray of objects
validation_runs[].doc_idstring
validation_runs[].doc_typestring or null
validation_runs[].document_numberstring or null
validation_runs[].vendor_namestring or null
validation_runs[].vendor_idstring or null
validation_runs[].document_datestring or null
validation_runs[].due_datestring or null
validation_runs[].total_amountstring or number or null
validation_runs[].subtotalstring or number or null
validation_runs[].tax_amountstring or number or null
validation_runs[].tax_ratestring or number or null
validation_runs[].shipping_amountstring or number or null
validation_runs[].matchobject or null
validation_runs[].anomaly_countnumber or string or null
validation_runs[].critical_anomaly_countnumber or string or null
validation_runs[].high_anomaly_countnumber or string or null
validation_runs[].current_statusstring or null
validation_runs[].matched_po_numberstring or null
validation_runs[].buyer_po_numberstring or null
validation_runs[].discount_statusstring or null
validation_runs[].discount_percentnumber or string or null
validation_runs[].discount_deadlinestring or null
validation_runs[].sanctions_statusstring or null
validation_runs[].payment_statusstring or null
validation_runs[].uploaded_atstring
validation_runs[].baseline_totalstring or number or null
validation_runs[].previously_invoicedstring or number or null
validation_runs[].hold_reasonstring or null
validation_runs[].linked_invoice_doc_idstring or null
validation_runs[].linked_invoice_numberstring or null
validation_runs[].credit_memo_match_methodstring 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_confidencenumber or string or null
five_way_matchobject 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
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

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.missed_discount_12monumber
summary.missed_discount_count_12monumber

GET /api/v1/reconciliation/payment-funnel

Get reconciliation payment funnel

data payload:

FieldType
currency_codestring or null
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.close_readinessobject
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[].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
shipments[].source_doc_typestring or null
shipments[].doc_countnumber
shipments[].source_doc_typesarray of string or null
shipments[].linked_statusstring
shipments[].po_numberstring or null
shipments[].linked_po_doc_idstring or null
shipments[].shipment_numberstring or null
shipments[].statusstring or null
shipments[].modestring or null
shipments[].origin_citystring or null
shipments[].origin_statestring or null
shipments[].origin_zipstring or null
shipments[].dest_citystring or null
shipments[].dest_statestring or null
shipments[].dest_zipstring or null
shipments[].pickup_datestring or null
shipments[].created_atstring or null
shipments[].updated_atstring or null
shipments[].tracking_numberstring or null
shipments[].pro_numberstring or null
shipments[].response_deadlinestring or null
shipments[].pod_doc_idstring or null
shipments[].booking_referencestring or null
shipments[].carrier_namestring or null
shipments[].carrier_vendor_idstring or null
totalnumber
limitnumber
offsetnumber

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/stats

Get shipments stats

data payload:

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

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

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[].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[].otif_pctstring or number or null
vendors[].otif_strict_pctstring 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

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
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
otif_pctstring or number or null
otif_strict_pctstring 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[].captured_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

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

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[].captured_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[].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/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
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