# OutcomeOS > Outcome-based automation. Define a business result (e.g. "every qualified lead replies within 24 hours"), attach durable workflows, and verify success from trusted events — not from workflows finishing. OutcomeOS runs on Cloudflare Workers. Every dashboard action is available over REST (Bearer API key) and MCP. ## Docs - [Quickstart](https://outcomeos.cloud/docs/quickstart): signup → outcome → workflow → signed webhook → verified result - [Authentication](https://outcomeos.cloud/docs/authentication): API keys, roles, organizations - [Signed webhooks](https://outcomeos.cloud/docs/webhooks): HMAC-SHA256 signature format and idempotency - [Outcomes & verification](https://outcomeos.cloud/docs/outcomes): how success is decided - [Retries, idempotency & replay](https://outcomeos.cloud/docs/reliability) - [Errors](https://outcomeos.cloud/docs/errors) - [API reference](https://outcomeos.cloud/docs/api) · [OpenAPI](https://outcomeos.cloud/api/v1/openapi.json) · [Full action list](https://outcomeos.cloud/llms-full.txt) - [MCP](https://outcomeos.cloud/docs/mcp): endpoint https://outcomeos.cloud/mcp - [Self-hosting](https://outcomeos.cloud/docs/self-host) ## Actions ### Outcomes - list_outcomes (GET /api/v1/outcomes): List outcomes with progress, verified counts and status. - get_outcome (GET /api/v1/outcomes/:id): Get one outcome: success criteria, verification config, progress and linked workflows. - create_outcome (POST /api/v1/outcomes): Create a business outcome with explicit success criteria and a verification method. - update_outcome (PATCH /api/v1/outcomes/:id): Update an outcome's definition, or cancel / reactivate it (status: cancelled | not_started). - delete_outcome (DELETE /api/v1/outcomes/:id): Delete an outcome and its events. Linked workflows are kept and unlinked. - list_outcome_events (GET /api/v1/outcomes/:id/events): List the latest events recorded for an outcome, with whether each was counted as verified. - list_outcome_subjects (GET /api/v1/outcomes/:id/subjects): List evaluated subjects (e.g. leads, invoices) with achieved / failed / pending status and reason. - ingest_outcome_event (POST /api/v1/outcomes/:id/events): Record an outcome event (e.g. customer.reply_received for a lead). Counted only if its source is trusted by the outcome. - reveal_outcome_ingest_secret (POST /api/v1/outcomes/:id/ingest-secret): Reveal (or rotate) the HMAC secret for the outcome's signed event webhook. ### Workflows - list_workflows (GET /api/v1/workflows): List workflows with trigger, linked outcome, status, executions and success rate. - validate_workflow (POST /api/v1/workflows/validate): Validate a workflow definition without saving it. - get_workflow (GET /api/v1/workflows/:id): Get a workflow: draft definition, webhook URL and version history. - create_workflow (POST /api/v1/workflows): Create a draft workflow, empty, from a template id, or from a JSON definition. - update_workflow (PATCH /api/v1/workflows/:id): Save the draft (name, description, linked outcome, definition). Returns validation issues; publishing requires none. - publish_workflow (POST /api/v1/workflows/:id/publish): Publish the draft as a new immutable version. Running executions keep the version they started with. - set_workflow_status (POST /api/v1/workflows/:id/status): Activate or deactivate a published workflow. Inactive workflows reject webhook triggers. - duplicate_workflow (POST /api/v1/workflows/:id/duplicate): Copy a workflow's draft into a new draft workflow. - delete_workflow (DELETE /api/v1/workflows/:id): Delete a workflow, its versions and execution history. - test_workflow (POST /api/v1/workflows/:id/test): Run the current draft once with a sample payload. Test runs never record outcome events. - run_workflow (POST /api/v1/workflows/:id/run): Start an execution of the published version with a JSON payload (same as the webhook trigger, authenticated by API key). - get_workflow_version (GET /api/v1/workflows/:id/versions/:version): Get the immutable definition of a published version. - reveal_webhook_secret (POST /api/v1/workflows/:id/webhook-secret): Reveal (or rotate) the workflow's webhook signing secret. ### Executions - list_executions (GET /api/v1/executions): List executions, newest first. Filter by status (use `attention` for failed + requires_attention), workflow or outcome. - get_execution (GET /api/v1/executions/:id): Get an execution's full step timeline: inputs, outputs, errors, retries, logs (secrets masked) and related outcome events. - replay_execution (POST /api/v1/executions/:id/replay): Replay a failed, cancelled or attention-required execution. Default mode reuses steps that already succeeded and re-runs from the failure. - cancel_execution (POST /api/v1/executions/:id/cancel): Cancel a pending, running or waiting execution. Steps already in flight finish; nothing new starts. ### Integrations - list_integration_catalog (GET /api/v1/integrations/catalog): List every integration with its real availability: available, beta, needs operator setup, or coming soon. - list_connections (GET /api/v1/integrations): List connections. Credentials are never returned; only which secret fields are set. - create_connection (POST /api/v1/integrations): Save a connection (status pending). It only becomes connected after test_connection succeeds against the real provider. - update_connection (PATCH /api/v1/integrations/:id): Update a connection's name or credentials. Changing credentials resets it to pending until tested again. Blank secret fields keep the stored value. - test_connection (POST /api/v1/integrations/:id/test): Verify a connection against the real provider. Marks it connected only on success; otherwise records the provider's error. - delete_connection (DELETE /api/v1/integrations/:id): Delete a connection and its encrypted credentials. Workflow steps using it will fail with needs_credentials. ### Marketplace - submit_community_connector (POST /api/v1/marketplace/connectors): Submit (or resubmit) a declarative community connector for review. Once approved it is listed in the marketplace and anyone can connect it. A resubmission goes back to review while the approved version stays live. - list_my_community_connectors (GET /api/v1/marketplace/connectors): List community connectors your organization has submitted, with review status and reviewer notes. - list_connector_review_queue (GET /api/v1/marketplace/review): Platform admins only: community connector submissions, pending first. - review_community_connector (POST /api/v1/marketplace/review/:id): Platform admins only: approve (publish the submitted version), reject, or unpublish a community connector. The submitter is emailed. ### Organization - get_organization (GET /api/v1/org): Get the active organization: plan, limits, usage, workspaces and your role. - update_organization (PATCH /api/v1/org): Rename the organization. - create_workspace (POST /api/v1/org/workspaces): Create a workspace inside the organization. - list_audit_logs (GET /api/v1/audit-logs): List audit log entries for the organization, newest first. ### Team - list_members (GET /api/v1/org/members): List organization members and their roles. - update_member_role (PATCH /api/v1/org/members/:id): Change a member's role (admin, editor, viewer). - remove_member (DELETE /api/v1/org/members/:id): Remove a member from the organization. Their API keys for this org are revoked. - list_invitations (GET /api/v1/org/invitations): List pending invitations. - invite_member (POST /api/v1/org/invitations): Invite someone by email. Returns a one-time invite link (also emailed when email sending is configured). - revoke_invitation (DELETE /api/v1/org/invitations/:id): Revoke a pending invitation. ### API keys - list_api_keys (GET /api/v1/api-keys): List API keys (prefix only; keys are stored hashed and cannot be shown again). - create_api_key (POST /api/v1/api-keys): Create an API key bound to this organization. The full key is returned once. - revoke_api_key (DELETE /api/v1/api-keys/:id): Revoke an API key immediately. ### Templates - list_templates (GET /api/v1/templates): List outcome and workflow templates. ### Analytics - get_overview (GET /api/v1/analytics/overview): Dashboard overview: active outcomes, verified results, success rate, running and failed executions, recent activity. scope=real (default) or scope=demo; demo and real data are never combined. - get_analytics (GET /api/v1/analytics): Outcome and workflow analytics computed from recorded executions and verified outcome events. scope=real (default) or scope=demo; demo and real data are never combined. ### Assistant - list_assistant_proposals (GET /api/v1/assistant/proposals): List recent assistant proposals. - propose_automation (POST /api/v1/assistant/proposals): Turn a plain-language goal into a proposed outcome and draft workflow. Nothing is created until the proposal is approved. - approve_assistant_proposal (POST /api/v1/assistant/proposals/:id/approve): Approve a proposal: creates the outcome and a draft (unpublished) workflow linked to it. - reject_assistant_proposal (POST /api/v1/assistant/proposals/:id/reject): Reject a proposal. Nothing is created. ### Billing - get_billing (GET /api/v1/billing): Current plan, limits, usage this month and available plans. - start_checkout (POST /api/v1/billing/checkout): Create a Stripe Checkout session for a paid plan. The plan changes only after Stripe's signed webhook confirms payment. - open_billing_portal (POST /api/v1/billing/portal): Open the Stripe customer portal to manage or cancel the subscription. ### Demo - load_demo_data (POST /api/v1/demo/seed): Load the clearly labelled "never lose a qualified lead" demo: one outcome, one workflow and 100 sample leads. Nothing is sent anywhere. - clear_demo_data (DELETE /api/v1/demo): Remove all demo outcomes, workflows, executions and events from this organization.