Warddocs
Concepts

Input

A decision call has one required field, input: the body of the capability you are calling. Everything else is optional.

{
  "type": "statement",
  "input": { "file_base64": "...", "file_name": "march.csv", "profile": { "monthly_income": 3200 } },
  "subject_ref": "cust_1042",
  "subject_consent": true,
  "session_id": "review_771"
}

Type inference

Omit type and Ward infers it from the input:

Input contains Type
applicant kyc
disputed ato
name with owners, mcc, merchant_id, observed… merchant
files, or a .csv / .xlsx / .tsv file statement
mrz, claimed, or an image file document
session_id + intent_type intent
amount payment
name screen
only agent_id / agent_did agent

A PDF that could be either an ID or a statement needs an explicit type (otherwise 422). Send type in production: inference is a convenience for exploration.

Give context, not history

For real-time types (payment, intent, agent, screen) send the event plus a profile summary, not the full history: a cardholder's usual countries and average ticket, not two years of transactions. Real-time calls take up to 32,000 input tokens; file types take up to 1,000,000 per call. Larger inputs answer 413 call_too_large; split files across calls in the same session.

Files

Files go base64-encoded in file_base64 (with file_name), or as a files array for several statements of one account. Ward reads CSV, TSV, XLSX and PDFs with a text layer in any column layout; see Files in any format. Files are analysed in memory: for documents and KYC nothing is stored; statement analyses keep the result, not the file.

Your references

  • subject_ref: your customer id. Links decisions about the same customer (Subject memory).
  • external_ref (inside most inputs): your transaction, applicant or case id, echoed back and written to the audit log.