API Reference · v2026-04-24
The Archie Connect API
A REST surface over everything Archie does, generated from the live registry. When a capability ships, this spec regenerates and the docs follow. Every call takes a bearer token.
The spec is OpenAPI 3.1. Import it straight into Postman or Insomnia by pasting https://api.dev.arch.ie/openapi.json into the import dialog, no separate collection to maintain.
Conventions
Authentication
Every request carries an API key in the Authorization header. Test keys are isolated from live data and carry their own credit cap. Mint a key, or read the full Authentication guide.
Errors
Errors return a consistent envelope. Branch on code, and quote correlation_id when you contact support. The full table lives in Error handling.
400Bad requestMalformed body or missing field.401UnauthorizedMissing or invalid key.403ForbiddenValid key, insufficient scope.404Not foundDoes not exist, or no access.422UnprocessableUnderstood but failed validation.429Rate limitedHonour Retry-After.5xxServer errorRetry with backoff.Rate limiting
Limits are per key, per minute. The REST surface allows 60 req/min; the MCP connector allows 300. Every response carries the headers below.
X-RateLimit-LimitMaximum requests in the current window.X-RateLimit-RemainingRequests left in the window.X-RateLimit-ResetUnix timestamp when the window resets.Retry-AfterSeconds to wait after a 429.Versioning
Pin a version with the Archie-Version header; omit it for the latest. Breaking changes are dated and announced under Versioning.
Resource
WorkStreams
WorkStream templates, Workplans (a template bound to a client), Cycles (executions), and Tasks. Inline and containerized execution modes share this surface. Replaces the retired playbooks API.
/api/v1/workstreams/{workstream_id}/topicsList topics anchored to a workstream recipeget/api/v1/workstreams/blueprintsList blueprints (deprecated)get/api/v1/workstreams/blueprints/{blueprint_id}Get blueprint by ID (deprecated)get/api/v1/workstreams/blueprints/{blueprint_id}/triggersList triggers for blueprint (deprecated)get/api/v1/workstreams/blueprints/{blueprint_id}/write-statusGet write mode status (deprecated)get/api/v1/workstreams/cyclesList cycles (fleet view)get/api/v1/workstreams/cycles/{cycle_id}Get cycle with tasksget/api/v1/workstreams/cycles/{cycle_id}/activityRecent activity-feed events for a cycleget/api/v1/workstreams/cycles/{cycle_id}/artifactsList cycle artifactsget/api/v1/workstreams/cycles/{cycle_id}/artifacts/{artifact_id}Get artifact metadataget/api/v1/workstreams/cycles/{cycle_id}/artifacts/{artifact_id}/downloadDownload artifact contentget/api/v1/workstreams/cycles/{cycle_id}/impact-ledgerGet impact ledger for cycleget/api/v1/workstreams/cycles/{cycle_id}/tasksList tasks for cycleget/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}Get task detailget/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/logsGet task execution logs (Chain of Thought)get/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/logs/summaryGet execution log summaryget/api/v1/workstreams/jobsList job definitionsget/api/v1/workstreams/jobs/{job_id}Get job definitionget/api/v1/workstreams/jobs/{job_id}/cyclesList cycles for a job definitionget/api/v1/workstreams/jobs/{job_id}/versionsList WorkPlan version historyget/api/v1/workstreams/jobs/{job_id}/versions/{version_num}Get a specific WorkPlan version snapshotget/api/v1/workstreams/templatesList workflow templatesget/api/v1/workstreams/templates/{template_id}Get template by IDget/api/v1/workstreams/templates/{template_id}/versionsList template version historyget/api/v1/workstreams/triggers/{trigger_id}/executionsGet trigger execution historyget/api/v1/workstreams/triggers/{trigger_id}/healthGet trigger healthget/api/v1/workstreams/triggers/dlqList DLQ entriesget/api/v1/workstreams/triggers/dlq/{entry_id}Get DLQ entryget/api/v1/workstreams/triggers/dlq/summaryGet DLQ summaryget/api/v1/workstreams/triggers/health/summaryGet trigger health summaryget/api/v1/workstreams/workplan-domainsList WorkPlan-able DomainAgents (the domain-centric create picker)get/api/v1/workstreams/workplansList workplansget/api/v1/workstreams/workplans/{blueprint_id}Get workplan by IDget/api/v1/workstreams/workplans/{blueprint_id}/clients/{client_id}/alterationsPer-client alteration pageget/api/v1/workstreams/workplans/{blueprint_id}/input-resolutionResolve a workplan's inputs per client (sourced vs missing)get/api/v1/workstreams/workplans/{blueprint_id}/rosterWorkPlan cohort roster (all clients, exceptions on top)get/api/v1/workstreams/workplans/{blueprint_id}/triggersList triggers for workplanget/api/v1/workstreams/workplans/{blueprint_id}/write-statusGet write mode statuspost/api/v1/skills/workstream.advance/invokeAdvance a paused or awaiting-approval workstream run — approve a task, skip a step, pause, or resume. This is the supervisory surface; for starting a new run use workstream_run, for cancelling use workstream_cancel.post/api/v1/skills/workstream.cancel/invokeCancel a running workstream run. The run terminates; you'll need to start a fresh one if you want to retry. Reason is recorded to the audit trail and shown in Studio.post/api/v1/skills/workstream.delete/invokeDelete a workstream — a guarded soft-delete (status='deleted'); it disappears from listings but the row is retained. REFUSES if the workstream has any non-terminal (running/paused/queued) cycle, and requires an explicit confirm=true. In-flight cycles are unaffected.post/api/v1/skills/workstream.describe/invokeDescribe a workstream by id, slug, or permakey. Returns the full definition: metadata, execution_mode, declared inputs, and step count. The adapter resolves the literal across both inline and containerized execution modes.post/api/v1/skills/workstream.duplicate/invokeDuplicate a workstream — create a copy of its definition with a new name (defaults to 'Copy of <original>'), reset to version 1 in draft status. The original is unchanged.post/api/v1/skills/workstream.list/invokeList workstreams visible to the caller. Filter by scope (plan / user / team / firm / gallery) and lifecycle status. Returns summary rows including execution_mode so callers can distinguish inline (Temporal-native, declarative) from container (Fly.io, agentic) workstreams.post/api/v1/skills/workstream.run/invokeStart a workstream run against the supplied client / period / runtime variables. Returns a run_id you can poll with workstream_status, events_url for live SSE progress, and detail_url to open the run in Workstream Studio. The query_id in the output is the join key for Slack→Studio deep-links.post/api/v1/skills/workstream.status/invokeGet the current status of a workstream run — overall lifecycle state plus current/next step pointers and progress percentage. For live progress streaming, use the events_url returned by workstream_run instead.post/api/v1/skills/workstream.update/invokeUpdate a workstream's metadata — rename (name) or change its description. Only provided fields change. Operates on the workstream definition; in-flight cycles run off a snapshot and are not affected.post/api/v1/workstreams/{blueprint_id}/run-batchRun a WorkPlan as N cycles (concurrent fan-out)post/api/v1/workstreams/{workstream_id}/run-stepRun a single workstream step in isolationpost/api/v1/workstreams/blueprintsCreate blueprint from template (deprecated)post/api/v1/workstreams/blueprints/{blueprint_id}/disable-writesDisable write operations (deprecated)post/api/v1/workstreams/blueprints/{blueprint_id}/enable-writesEnable write operations (deprecated)post/api/v1/workstreams/blueprints/{blueprint_id}/triggersCreate trigger for blueprint (deprecated)post/api/v1/workstreams/cyclesStart new cyclepost/api/v1/workstreams/cycles/{cycle_id}/cancelCancel cycle (emergency stop)post/api/v1/workstreams/cycles/{cycle_id}/execute-reversalExecute reversal (Phase 3)post/api/v1/workstreams/cycles/{cycle_id}/forkFork a terminal inline cycle, seeding unchanged step outputspost/api/v1/workstreams/cycles/{cycle_id}/pausePause a cyclepost/api/v1/workstreams/cycles/{cycle_id}/resolve-payee-flagResolve a payee review flag into durable routing precedentpost/api/v1/workstreams/cycles/{cycle_id}/restart-workflowRestart workflow for cyclepost/api/v1/workstreams/cycles/{cycle_id}/resumeResume a paused cyclepost/api/v1/workstreams/cycles/{cycle_id}/resume-from-checkpointResume failed inline cycle from checkpointpost/api/v1/workstreams/cycles/{cycle_id}/reversal-planGenerate reversal plan (Phase 3)post/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/approveApprove or reject taskpost/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/approve-with-signalApprove task with Temporal workflow signalpost/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/complete-uploadSignal that document upload is completepost/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/generate-planGenerate AI execution plan for taskpost/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/reject-with-signalReject task with Temporal workflow signalpost/api/v1/workstreams/cycles/{cycle_id}/tasks/{task_id}/upload-filesLink uploaded files to a document_upload taskpost/api/v1/workstreams/cycles/agentStart agentic cyclepost/api/v1/workstreams/cycles/approve-bulkApprove or reject N awaiting-approval task instances at oncepost/api/v1/workstreams/jobsCreate job definitionpost/api/v1/workstreams/jobs/{job_id}/approve-gateApprove (or reject) every awaiting gate in a cohort at oncepost/api/v1/workstreams/jobs/{job_id}/runRun job (fan-out across clients)post/api/v1/workstreams/jobs/{job_id}/versions/{version_num}/rollbackRollback a WorkPlan to a prior versionpost/api/v1/workstreams/steps/describe-from-wdlDescribe a single workstream step in plain Englishpost/api/v1/workstreams/steps/generate-from-descriptionGenerate a single workstream step from a descriptionpost/api/v1/workstreams/tasks/{task_id}/approve/Approve task (frontend convenience)post/api/v1/workstreams/tasks/{task_id}/reject/Reject task (frontend convenience)post/api/v1/workstreams/templatesCreate workflow templatepost/api/v1/workstreams/templates/{template_id}/forkFork a recipe into a private copypost/api/v1/workstreams/templates/{template_id}/versions/{version}/restoreRestore template to a previous versionpost/api/v1/workstreams/templates/generate-from-descriptionGenerate workstream from descriptionpost/api/v1/workstreams/triggers/{trigger_id}/health/resetReset trigger healthpost/api/v1/workstreams/triggers/dlq/{entry_id}/resolveResolve DLQ entrypost/api/v1/workstreams/triggers/dlq/{entry_id}/retrySchedule DLQ retrypost/api/v1/workstreams/workplansCreate workplan from templatepost/api/v1/workstreams/workplans/{blueprint_id}/clients/{client_id}/alterations/patchesAdd one alterationpost/api/v1/workstreams/workplans/{blueprint_id}/disable-writesDisable write operationspost/api/v1/workstreams/workplans/{blueprint_id}/enable-writesEnable write operationspost/api/v1/workstreams/workplans/{blueprint_id}/triggersCreate trigger for workplanput/api/v1/workstreams/blueprints/{blueprint_id}Update blueprint (deprecated)put/api/v1/workstreams/triggers/{trigger_id}Update triggerput/api/v1/workstreams/workplans/{blueprint_id}Update workplanput/api/v1/workstreams/workplans/{blueprint_id}/clients/{client_id}/alterationsReplace the client's alteration setpatch/api/v1/workstreams/jobs/{job_id}Update job definitionpatch/api/v1/workstreams/templates/{template_id}Update templatepatch/api/v1/workstreams/workplans/{blueprint_id}Patch workplan config (partial save)delete/api/v1/workstreams/blueprints/{blueprint_id}Archive blueprint (deprecated)delete/api/v1/workstreams/cycles/{cycle_id}Delete cycledelete/api/v1/workstreams/templates/{template_id}Delete templatedelete/api/v1/workstreams/triggers/{trigger_id}Delete triggerdelete/api/v1/workstreams/workplans/{blueprint_id}Archive workplandelete/api/v1/workstreams/workplans/{blueprint_id}/clients/{client_id}/alterationsClear all the client's alterationsdelete/api/v1/workstreams/workplans/{blueprint_id}/clients/{client_id}/alterations/patches/{patch_id}Remove one alterationResource
WorkStreams Cycles
Launch, track, and resolve WorkStream cycle executions.
Resource
WorkStreams Drafts
Draft a WorkStream conversationally before you commit it.
Resource
WorkStreams Studio
Author and refine WorkStream blueprints in Studio.
Resource
Connect Keys
Create, list, and revoke the API keys that authenticate Connect requests.
/api/v1/connect-keysList API keys for the caller's organizationget/api/v1/connect-keys/_helpers/permission-catalogPermission catalog for key creation (derived from the skills registry)get/api/v1/connect-keys/_helpers/workspacesList workspaces in the caller's organization (for portal key-pin dropdown)get/api/v1/connect-keys/{key_id}Get a single API key (merged WorkOS + mirror shape)post/api/v1/connect-keysCreate a new API keypost/api/v1/connect-keys/{key_id}/flush-cacheFlush the in-process WorkOS validator cache for a keypost/api/v1/connect-keys/{key_id}/rotateRotate an API key (new sk_*, old expires after grace period)patch/api/v1/connect-keys/{key_id}Update API key metadata (name/permissions in WorkOS, the rest in mirror)delete/api/v1/connect-keys/{key_id}Revoke an API keySkill
Conversations
Chat with Archie. Single or multi-turn.
Skill
Catalogue
Discover available skills.
Skill
Advisory
Advisory
/api/v1/skills/acquisitions.advise/invokeM&A advice — acquisition, merger, asset/share purchase, due diligence framing.post/api/v1/skills/payroll.advise/invokePayroll compliance advice — STP/RTI/SGC, contractor classification, payroll tax.post/api/v1/skills/tax.advise/invokeGet tax advice (income, corporate, CGT, FBT, stamp duty) by jurisdiction.post/api/v1/skills/tax.indirect.advise/invokeGST, VAT, sales tax, HST, QST, use-tax advice by jurisdiction.post/api/v1/skills/tax.international.advise/invokeCross-border tax advice — transfer pricing, treaties, withholding, PE, CFC, structure.post/api/v1/skills/tax.quarterly.estimate/invokeAdvisory — LLM-driven; verify against authoritative sources before relying. Calculate a US federal quarterly estimated tax payment under one of the three IRC §6654/§6655 safe harbor rules (prior-year, annualised, or current-year). Read-only — outputs a worksheet with cumulative-required tracking and underpayment risk flag.post/api/v1/skills/wealth.advise/invokeWealth management advice — investment structures, retirement, asset protection.post/api/v1/skills/wealth.succession.advise/invokeSuccession planning — family business transition, buy-sell, ownership transfer, governance.Skill
Analysis
Analysis
/api/v1/skills/documents.analyse/invokeAnalyse an uploaded document — summarise, extract figures, classify, risk-assess.post/api/v1/skills/financials.analyse/invokeAnalyse client financials — variance, trend, ratio, cashflow, profitability, or working capital.post/api/v1/skills/portfolios.analyse/invokeAnalyse an investment portfolio — opening/closing reconciliation, FX and fair-value movements, capital gains/losses, and journal generation. Used by Family Investment Company (FIC) analysis (UK), trust accounts, personal SIPP/ISA reviews, and other wealth workstreams across UK, AU, US, CA jurisdictions. Currency-agnostic; the workstream step supplies jurisdiction-specific parameters such as the annual exempt amount.post/api/v1/skills/propose.qbo.tax.group.mapping/invokePropose CCH-Axcess-style tax-line mappings for the rows of a prepared QBO trial balance. Conversational — uses consult_accounting_expert + search_knowledge_base + the firm's tax-group catalog to assign each TB row a tax_code / engagement_tax_code / line_description with confidence + reasoning. Inputs: tb_rows (alpha-canonical from enrich_tb_rows) + tax_group_catalog + entity_type (1065/1120/1120S/1040). Output: 1:1 mapping list + counts + unmapped account_numbers. Does NOT render a CCH file — the deliverable is the source Caseware TB Excel with TaxCodeCode populated, rendered by the existing TB Excel generator downstream.Skill
Audit
Audit
/api/v1/skills/audit.workpaper.review/invokeAdvisory — LLM-driven; verify against authoritative sources before relying. Review an audit workpaper — completeness, methodology, evidence sufficiency, and standards compliance. Pairs with prepare_audit_workpaper; supports self-check, senior review, partner review, and concurring-partner review tiers.post/api/v1/skills/controls.test/invokeTest internal controls — design or operating effectiveness, sample selection, exceptions.post/api/v1/skills/reports.audit-workpaper.prepare/invokePrepare an audit working paper — lead schedules, substantive testing, planning memos, going-concern, debt confirmations, related-party.Skill
Communication
Communication
/api/v1/skills/communications.draft/invokeDraft a client communication — email, letter, memo, or report.post/api/v1/skills/meeting.followup/invokeExtract action items, decisions, and a follow-up email draft from a meeting transcript or uploaded recording. Read-only — the user reviews and sends the draft. Pairs with meeting.prep.post/api/v1/skills/meeting.prep/invokeProduce a pre-meeting briefing for a client meeting — recent topics, open action items, talking points, suggested questions. Read-only; pairs with meeting.followup for the post-meeting half.Skill
Compliance
Compliance
Skill
Data
Data
Skill
Forensic
Forensic
Skill
General
General
Skill
Integrations
Integrations
Skill
Memo
Memo
/api/v1/skills/memos.expert.prepare/invokePrepare a litigation expert report — damages, loss quantification, opinion.post/api/v1/skills/prepare.asc606.memo/invokePrepare an ASC 606 revenue-recognition workpaper + memo. Supply either an uploaded contract (file_ids) OR the full contract text as scenario — the engine extracts payment streams, parties, term, and royalty tiers from the text inline. No file upload needed when scenario contains the contract text.Skill
Reports
Reports
/api/v1/skills/prepare.asc360.memo/invokePrepare an ASC 360 capex memo (PP&E capitalise-vs-expense, depreciation, impairment). Deterministic engine: capitalised cost = sum of GROUNDED cost components; depreciation = depreciable base / useful life; impairment via the recoverability test. An ungrounded capitalisation policy or cost component is FLAGGED for partner input — never printed as a cost.post/api/v1/skills/prepare.asc610.20.gain/invokePrepare an ASC 610-20 gain-on-derecognition memo for the sale of a nonfinancial asset to a non-customer. Deterministic engine: gain = consideration - carrying amount - transaction costs, re-computed from GROUNDED inputs (each a verbatim document quote or an attributed assertion). An ungrounded monetary input (e.g. a GL carrying amount not in the deal docs) is FLAGGED for partner input — never printed as a gain.post/api/v1/skills/prepare.asc842.memo/invokePrepare an ASC 842 lessee memo + lease schedules. Deterministic engine: lease liability = present value of the payment vector at the discount rate; ROU asset, operating single-cost / finance amortisation and the maturity ladder all re-computed from GROUNDED inputs. An ungrounded discount rate or payment clause is FLAGGED for partner input — never printed as a measurement.post/api/v1/skills/reports.cfo-pack.prepare/invokePrepare a CFO/board pack — KPI dashboard, financial review, forecast, commentary, risks, actions.post/api/v1/skills/reports.due-diligence.prepare/invokePrepare an M&A due-diligence / quality-of-earnings report.post/api/v1/skills/reports.financial.prepare/invokeGenerate a financial report (TB, P&L, balance sheet, mgmt accounts, or financial statements).post/api/v1/skills/reports.forecast.prepare/invokePrepare a financial forecast — multi-scenario, with assumptions register.post/api/v1/skills/reports.tax-return.prepare/invokePrepare a tax return artifact — income, BAS, IAS, VAT, corporate tax, payroll, or self-assessment.post/api/v1/skills/reports.trust-accounts.prepare/invokePrepare trust accounts — distributions, beneficiary statements, capital accounts, income allocation, trustee reporting.post/api/v1/skills/reports.valuation.prepare/invokePrepare a business valuation report — DCF, multiples, asset-based, or maintainable earnings.Skill
Research
Research
Skill
Review
Review
Skill
Topics
Topics
/api/v1/skills/topic.archive/invokeArchive a Topic (status='archived'). Archiving an already-archived topic is rejected; un-archive via topic_update status='active'.post/api/v1/skills/topic.ask/invokeAsk a question in a Topic conversation and wait (bounded) for the final answer. On timeout the turn keeps running server-side and status=running is returned — poll the conversation.post/api/v1/skills/topic.create/invokeCreate a Topic in the caller's workspace (optionally bound to a client). The topic is stamped created_by_type=archie.post/api/v1/skills/topic.delete/invokeSoft-delete a Topic (status='deleted') and unlink its conversations. The topic drops off every list surface; reversible only by an operator. Deleted is terminal.post/api/v1/skills/topic.get/invokeGet a Topic by UUID (aggregate counts; optional canvas descriptor with sections/tabs/email_draft).post/api/v1/skills/topic.link.conversation/invokeLink a conversation to a Topic (idempotent on same-topic re-link; a conversation belongs to at most one topic).post/api/v1/skills/topic.list/invokeList Topics in the caller's workspace (filter by status/type/search, paginated).post/api/v1/skills/topic.messages/invokeRead a Topic conversation's messages (user + assistant turns, chronological, paginated) — the pick-it-up-anywhere reader: poll a running topic_ask for its answer, or read turns that happened on the web. Never creates a conversation.post/api/v1/skills/topic.post.message/invokePost a message into a Topic conversation and dispatch the turn (fire-and-return: poll the conversation for the answer). Auto-creates and links a conversation when the topic has none.post/api/v1/skills/topic.update/invokeUpdate a Topic's metadata — rename (name), retitle, set type / theme_color / status / description / icon, or rebind client_id. Only the provided fields change. Set status='active' to unarchive; soft-deleted topics are terminal (answer not-found).Skill
Transactions
Transactions
/api/v1/skills/accounts.reconcile/invokeReconcile bank, AR, AP, intercompany, or other accounts.post/api/v1/skills/accruals.suggest/invokeAdvisory — LLM-driven; verify against authoritative sources before relying. Suggest month-end accruals for a client by scanning the trial balance, variance against prior periods, and recurring patterns. Read-only — produces structured suggestions for review; the user posts via record_journal_entry.post/api/v1/skills/journal.record/invokeRecord an accounting journal entry to Xero/QBO.post/api/v1/skills/transactions.classify/invokeClassify a financial transaction to chart-of-accounts code.Skill
Utility
Utility
/api/v1/skills/clients.list/invoke(Utility) List accessible clients.post/api/v1/skills/derive.period/invoke(Utility) Derive canonical period bounds + matching prior-period bounds from a kind discriminator + anchor date. Pure compute — same input always produces identical output. Supports BAS-AU monthly/quarterly/annual today; additional jurisdictions are new ``kind`` values.post/api/v1/skills/detect.tb.duplicates/invoke(Utility) Surface trial-balance rows that share an ``account_number`` (``code``) with another non-zero-balance row. Zero-balance rows are excluded from the duplicate check — a stale inactive account sharing a code with a real one does NOT poison the real one. Output is the conflict subset with ``conflict_codes`` + ``conflict_count`` added per row.post/api/v1/skills/enrich.tb.rows/invoke(Utility) Enrich a trial balance with auto-renumber + classification. Operates on alpha's canonical TB-row dict shape (``{code, name, section, debit, credit}``) and CoA-row dict shape (``{account_id, code, name, type, balance}``). Adds ``classification`` ∈ ``ok|auto_renumbered|dropped|needs_manual_review``, assigns Maginot-style numbers (1xxx Assets / 2xxx Liabilities / ...) to rows missing a code, flags duplicate-code collisions for manual review, drops zero-balance rows. Pure compute — same input always produces identical output. Does NOT re-implement the balance check; that remains inline at the 5 existing sites.post/api/v1/skills/search.query/invoke(Utility) Search the knowledge base directly.post/api/v1/skills/workflows.decide/invoke(Utility) Approve or reject a workflow item.