{"openapi":"3.1.0","info":{"title":"Kanaeru public API","version":"1.0.0","summary":"Publicly reachable endpoints of the Kanaeru outcome delivery platform.","description":"Kanaeru delivers software outcomes with orchestrated AI agents. This specification covers the endpoints reachable on https://app.kanaeru.ai without a browser session: service health and API-key-triggered automations. Kanaeru is in an invite-based closed beta with no self-serve signup: automation API keys are issued inside an invited workspace's automations UI, so only the health endpoint is callable with no prior relationship. The richer programmatic surface — browsing visions, outcomes, and tasks, and driving delivery — is exposed to invited accounts over the Model Context Protocol at https://app.kanaeru.ai/orc/mcp (OAuth 2.1 + PKCE; authorization server metadata at https://app.kanaeru.ai/orc/.well-known/oauth-authorization-server). Human-readable documentation: https://app.kanaeru.ai/docs.","contact":{"name":"Kanaeru Labs support","email":"support@kanaeru.ai","url":"https://app.kanaeru.ai/contact"},"termsOfService":"https://app.kanaeru.ai/legal/terms"},"servers":[{"url":"https://app.kanaeru.ai","description":"This deployment."}],"paths":{"/orc/health":{"get":{"operationId":"getServiceHealth","summary":"Service health","description":"Liveness and version of the orchestrator backing this deployment. No authentication.","tags":["Status"],"responses":{"200":{"description":"The service is up.","content":{"application/json":{"schema":{"type":"object","required":["status","timestamp"],"properties":{"status":{"type":"string","description":"Overall status, \"ok\" when healthy."},"timestamp":{"type":"string","format":"date-time","description":"Server time of the check."},"version":{"type":"string","description":"Deployed orchestrator version."},"frontendUrl":{"type":"string","format":"uri","description":"The web client origin this orchestrator serves."}}}}}}}}},"/orc/api/automation-triggers/{slug}":{"post":{"operationId":"triggerAutomation","summary":"Trigger an automation","description":"Starts a run of a pre-configured workspace automation. Authenticate with the automation's API key in the x-api-key header; keys are issued per automation in the Kana automations UI. The request body is passed to the automation as its trigger payload. Returns 202 with the run identifier — execution is asynchronous.","tags":["Automations"],"security":[{"automationApiKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"description":"The automation's slug, shown alongside its API key in the automations UI.","schema":{"type":"string"}}],"requestBody":{"required":false,"description":"Arbitrary JSON payload made available to the automation run.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"202":{"description":"The automation run was accepted.","content":{"application/json":{"schema":{"type":"object","required":["runId","status"],"properties":{"runId":{"type":"string","description":"Identifier of the accepted run."},"status":{"type":"string","description":"Initial status of the run."}}}}}},"401":{"description":"Missing x-api-key header, or the key does not match the slug.","content":{"application/json":{"schema":{"type":"object","description":"Structured error shape returned by every endpoint on this origin. Errors are always JSON, never HTML.","required":["statusCode","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code, repeated in the body."},"error":{"type":"string","description":"Machine-readable error identifier."},"message":{"type":"string","description":"Human-readable explanation of the failure."},"hint":{"type":"string","description":"Optional resolution hint naming the resource that resolves the situation."}}}}}},"403":{"description":"The automation exists but is disabled.","content":{"application/json":{"schema":{"type":"object","description":"Structured error shape returned by every endpoint on this origin. Errors are always JSON, never HTML.","required":["statusCode","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code, repeated in the body."},"error":{"type":"string","description":"Machine-readable error identifier."},"message":{"type":"string","description":"Human-readable explanation of the failure."},"hint":{"type":"string","description":"Optional resolution hint naming the resource that resolves the situation."}}}}}}}}}},"components":{"schemas":{"ApiError":{"type":"object","description":"Structured error shape returned by every endpoint on this origin. Errors are always JSON, never HTML.","required":["statusCode","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code, repeated in the body."},"error":{"type":"string","description":"Machine-readable error identifier."},"message":{"type":"string","description":"Human-readable explanation of the failure."},"hint":{"type":"string","description":"Optional resolution hint naming the resource that resolves the situation."}}}},"securitySchemes":{"automationApiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Per-automation API key issued in the Kana automations UI."}}},"tags":[{"name":"Status","description":"Service status endpoints."},{"name":"Automations","description":"API-key-triggered workspace automations."}]}