Operating system set to macOS
Documentation jurisdiction set to United States
Sign inConnect Claude

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.

https://api.dev.arch.ieDownload OpenAPI

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.

188
operations
24
resource groups
169
schemas

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

guide

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.

get/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 alteration

Resource

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.

Skill

Conversations

Chat with Archie. Single or multi-turn.

Skill

Catalogue

Discover available skills.

Skill

Advisory

Advisory

Skill

Analysis

Analysis

Skill

Audit

Audit

Skill

Authoring

Authoring

Skill

Communication

Communication

Skill

Compliance

Compliance

Skill

Data

Data

Skill

Forensic

Forensic

Skill

General

General

Skill

Integrations

Integrations

Skill

Memo

Memo

Skill

Reports

Reports

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

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

Skill

Utility

Utility

post/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.