API reference
Every endpoint, grouped by the surface it belongs to. Read the conventions once and the rest of this page is a lookup.
Try it
Composed against mocks, so it works with no credentials. Every outcome is on the menu including the two that are not a number, because those are the two a client gets wrong. Tick the box to point it at a real deployment instead.
A grounded answer. Returns the standardised contract — including when it declines. Full documentation.
Run the request to see the response.
curl -s https://api.taxorch.com/api/v1/tax-assistant/answer \
-H "Authorization: Bearer $TAXORCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question":"What is the income tax on £60,000 in the UK for 2024/25?","site":1}'Why the failures are on the menu
Every outcome above is reachable, including the two that are not a number. A playground where every request succeeds trains the one client this API is designed to prevent — the one that renders a figure and treats a refusal as an error.
Conventions
These hold for every endpoint below. They are stated here rather than repeated on each row, because repeating them would make each read as a property of that endpoint rather than of the platform.
- Every endpoint is authenticated
- There is no anonymous surface. Authentication is a bearer token; a request without one is refused rather than served a reduced result.
- Tenant scoping is enforced, not requested
- Most endpoints accept ?site=<id> and enforce per-site permission on top of the tenant scope. Queries filter by tenant through a scoped model base, so omitting the parameter narrows what you can see rather than widening it.
- Permission is checked by a shared mixin
- One mixin gates every endpoint rather than each view deciding for itself. A 403 means the role lacks the permission; the RBAC matrix is published on the trust page.
- Every call is audit-logged
- Actor, tenant, event type and pinned versions. Refusals are logged separately with their reason, which is what makes refusal rate a measurable metric.
- Staff-only surfaces are marked
- Corpus, quality, serving and readiness APIs require staff or superuser. A tenant role cannot reach them at all, and they are labelled throughout this reference.
- Versioned actions are mirrored
- The base prefix is /api/. Versioned actions appear under /api/v1/, and each surface pins its contract version in a response header so a client can detect a breaking change.
Status codes
Two of these are unusual enough to be worth reading before you write a client, and the last one is not a status code at all — it is the case most clients get wrong.
- 401
- No valid credentials. Not a hint that the resource exists.
- 403
- Authenticated, but the role or the site permission does not allow it. Staff-only surfaces return this to tenant roles.
- 409
- The target record is immutable — a finalised case is the common one. Reopening is a separate, audited action rather than a permitted write.
- 422
- A precondition is unmet, with a blocker list saying exactly which. Not a generic validation failure: it is a list of what to fix.
- 429
- Throttled. Applies to AI generation and question endpoints; the deterministic calculator path is local arithmetic.
- 200 with an abstention
- The important one. An answer the system declined to give is a successful response with verification_status set and no figure — never a 4xx.
Request and response shapes
Every high-risk answer returns the standardised answer contract, documented field by field. That is the shape worth learning, and it is the same whatever endpoint produced it.
Per-endpoint request bodies are not reproduced here. This reference is transcribed from the API surface document, which specifies the contract and the conventions rather than a schema for each of 179 entries — and writing one hundred and seventy-nine plausible schemas would put fiction in the one place you would trust it. Use the typed API for a contract you can generate against:
POST /api/v1/tax-assistant/answer
POST /api/v1/tax-assistant/upload
POST /api/v1/tax-assistant/classify
GET /api/v1/tax-assistant/{id}/statusA note on counting. There are approximately 151 routes, counted from the URL configuration. This catalogue has 179 entries, because some documented rows cover several actions — a ViewSet, or one path with three verbs. The two numbers are different things and this page never uses one for the other.
01Core assistant & calculation
What this surface does, in product terms
Operator Q&A (accepts a
languageparameter)Income tax calculation
Sales / VAT / GST calculation
US federal calculation
Payroll calculation
Supported jurisdiction list
Tax category catalogue
Currency conversion
Tax / VAT identifier validation
Tenant tax dashboard
User feedback on an answer (1–5)
02Coverage, fact interview & deterministic calculation
What this surface does, in product terms
Full coverage matrix
Seed coverage profiles
Interview sections (GET) / missing facts + validation (POST)
Fail-closed calculation: coverage → mixed-jurisdiction → missing facts → validation → calculate → immutable snapshot → rules envelope
Build a draft return package
Publish a rule pack (enforces citations + effective dates)
03Grounded answer engine
What this surface does, in product terms
Query plan: jurisdiction, year, tax type, issues, required tools, missing facts, can-answer verdict
Full grounded answer contract (fail-closed)
04Documents & receipts
What this surface does, in product terms
Typed document upload
List with type / validation / client / search filters
Document detail
Re-run validation (
full=truere-extracts)Correct or confirm extracted fields
Full receipt CRUD
Intake configuration
Candidate ledger/commerce matches
Finalise a receipt into the books
05Classification & categories
What this surface does, in product terms
Category tree per jurisdiction
Rename / soft-disable a category
On-demand classification
Classification correction feedback
Expense review queue (filterable by document type)
Resolve a review item
06Tax returns
What this surface does, in product terms
Upload a return packet
List with income / tax / refund summary and filters
Detail with editable figures
Secure download (**write-permission gated**)
07Tax research, memos & notices
What this surface does, in product terms
Ask a research question → cited answer
Searchable history with jurisdiction/category filters
Query detail
Citation detail
List / compose a memo
Memo detail and edit
Send via the notification pipeline
List / create a tax-authority notice
Notice detail
Generate a cited draft response
Send the response
08Tax planning & compliance
What this surface does, in product terms
List / create a planning report
Plan detail
Version a scenario
csv
Email the plan
Unified compliance status (audit proofs, legislative, currency)
Trigger refresh (
currency\
09Professional cases & workpapers
What this surface does, in product terms
List / create a case
Detail; update stage / reviewer
Add a workpaper item with evidence links
Add an issue
Resolve an issue
Attach an existing record to the case
Finalise (**422 + blocker list** when blocked)
Reopen a finalised case
Export the final pack
10Agentic workflows & personalisation
What this surface does, in product terms
Plan a multi-step workflow
Execute a plan
Approve a high-impact step
Cancel a run
List / detail with per-step rationale, citations, confidence
Personalisation profile
Coverage, threshold, kill-switch status
Transcript → editable summary + actions + missing facts
11AI bookkeeper & reports
What this surface does, in product terms
Chat (throttled)
List conversations
Detail / delete
Export a conversation
Request / list NL financial reports
Report detail
Email the report
Download the report
12Commerce ledger, audit proofs & legislative
What this surface does, in product terms
Ledger list + status counts (status/date/search filters, pagination)
Entry detail
Re-sync an order range or IDs
Proof list
Generate a monthly proof (
year,month)Re-hash and verify integrity
Authenticated PDF stream with
X-Content-SHA256Per-jurisdiction status, current rate, staleness, recent changes
Run all or one jurisdiction
Enable/disable, auto-apply, source URL, manual override
Rule-change changelog
13Fraud, anomalies & conversion
What this surface does, in product terms
Anomalies with type/severity/status/date filters and summary counts
Immediate async scan
Resolve or ignore
Conversion proposals
Analyse site pages
Approve / reject / deploy
14Finance exactness
What this surface does, in product terms
Single deterministic entry point for any tax/finance task
Run and persist ledger insights / list them
Accept or reject a suggestion
Build a professional artifact (memo, notice workpaper, filing checklist, client answer, close checklist, risk report)
15Accounting assistant (journal entries)
What this surface does, in product terms
Parse a receipt/invoice (multipart file, or JSON OCR text). Returns the document, queued flag and task id
Generate a balanced double-entry proposal from a document or raw transaction data
Parsed documents, filtered by status / category / search
Analyse a single document
Journal entries, filtered by status / search
Approve / reject / return, with optional edited lines and memo
Post an **approved** entry and record the ERP payload
Analyse a single entry
Multi-file batch parse
Poll batch progress and related documents
16Invoices, credit notes & accounting feeds
What this surface does, in product terms
Per-site, per-year invoice and credit-note counters
Issued invoices, filtered by order and status
Issue an invoice for an order
Regenerate body and checksum for the **same** document number
Issue a signed, expiring download link
Download as HTML or JSON with a signed token
Resend to the customer
Credit notes against refunds
signed-download\
Export history
Queue an export job
Signed download URL
Download with a signed token
Reusable export schedules
Run a schedule immediately
Connector records (no provider secrets stored)
Sync attempt history
Queue a sync for a completed export
17Corpus administrationStaff only
What this surface does, in product terms
Source registry list / create
Source detail (version bumps on edit)
Launch a pipeline import
Release list
Validation report + diff + provenance + index status
Re-validate
Promote (re-validates, blocks bad, indexes)
Roll back and re-index
Health dashboard
Corpus coverage
Country × product coverage matrix
Document search with citation preview
18Quality, evaluation & release gateStaff only
What this surface does, in product terms
List / seed golden cases
Reviewer verdict on a golden case
List / run evaluations
List / run the release gate
Apply an audited waiver (reason required)
Runtime quality metrics
Certification dashboard
19AI serving governanceStaff only
What this surface does, in product terms
List / seed model routes
Update a role's route (GPU/canary/enabled)
List / register a prompt version
Promote (eval must pass)
Roll back to a prior version
Tool schema registry
20Readiness, RBAC & privacyStaff only
What this surface does, in product terms
READY / NOT_READY / DEGRADED with per-gate remediation
8-role × permission matrix
Tenant governance posture
21Admin review & accuracyStaff only
What this surface does, in product terms
Answer review queue
Answer detail
Manual override
Refusal log
Accuracy analytics per tenant/model
22Exports & privacy
What this surface does, in product terms
Per-region filing export
CSV export
Full evidence bundle
Per-tenant privacy data export
23Commerce tax configuration
What this surface does, in product terms
Tax regions
Tax rates
Tax rules
Merchant registrations
Exemptions
Calculation snapshots
Provider health (internal / Avalara / TaxJar)
Preview a checkout calculation
24Versioned typed API
What this surface does, in product terms
Typed upload
Typed classification
Typed answer
Job status