{"name":"Dictum Flow","version":2,"origin":"https://dictumflow.com","documentation":"https://dictumflow.com/docs","legacyHumanAuthentication":{"type":"cookie-session","requestHeaders":{"Content-Type":"application/json","X-Request-Id":"<unique-request-id>"},"storage":"Use a private cookie jar outside the repository. Never print cookies, passwords or signing secrets.","signup":{"method":"POST","url":"https://dictumflow.com/api/auth/token/password/signup","body":{"email":"<user-email>","password":"<locally-supplied-password>","displayName":"<name>","redirectTo":"https://dictumflow.com/"},"confirmation":"If confirmationRequired is true, let the user confirm their email before login. Never infer a session from account creation alone."},"login":{"method":"POST","url":"https://dictumflow.com/api/auth/token/password/login","body":{"email":"<user-email>","password":"<locally-supplied-password>"}},"verify":{"method":"POST","url":"https://dictumflow.com/api/auth/verify","body":{"includeUser":true}},"refresh":{"method":"POST","url":"https://dictumflow.com/api/auth/token/refresh","body":{}},"ensureAccess":{"method":"POST","url":"https://dictumflow.com/api/auth/access/ensure","body":{}},"logout":{"method":"POST","url":"https://dictumflow.com/api/auth/session/logout","body":{}},"contract":"https://auth-supabase-app.agentcore.workers.dev/example"},"authentication":{"type":"agent-account-key","requestHeaders":{"Content-Type":"application/json","X-Request-Id":"<unique-request-id>"},"signup":{"method":"POST","url":"https://dictumflow.com/api/agents/register","body":{"name":"<agent-name>","registration_id":"<stable-registration-id>","registration_token":"<privately-generated-32-byte-lowercase-hex>"},"confirmationRequired":false},"account":{"method":"POST","url":"https://dictumflow.com/api/agents/account","authorization":"Bearer <dga_live_account_key>","actions":["account","credentials","rotate_account_key","delete_account"],"rotationBody":{"action":"rotate_account_key","new_token":"<new-private-64-hex-token>"}},"storage":"Generate and privately save the registration ID and token before signup. Save all returned keys outside chat and source repositories. Retry registration with exactly the same fields.","signing":"The credentials action returns identitySigningKeyId and identitySigningKey. Keep both on your backend and follow the SDK signed identity contract."},"accountAndProjectOperations":[{"path":"/api/account/bootstrap","methods":["GET","POST"],"authentication":"cookie-session"},{"path":"/api/account/api-key","methods":["GET"],"authentication":"cookie-session"},{"path":"/api/account/api-key/rotate","methods":["POST"],"authentication":"cookie-session"},{"path":"/api/account/usage","methods":["GET"],"authentication":"cookie-session"},{"path":"/api/account/models/stt","methods":["GET"],"authentication":"cookie-session"},{"path":"/api/account/models/llm","methods":["GET"],"authentication":"cookie-session"},{"path":"/api/account/provider-keys","methods":["GET","POST"],"authentication":"cookie-session"},{"path":"/api/account/project","methods":["PATCH"],"authentication":"cookie-session"},{"path":"/api/account/webhook","methods":["GET","PATCH"],"authentication":"cookie-session"},{"path":"/api/account/signing-key","methods":["GET"],"authentication":"cookie-session"},{"path":"/api/account/signing-key/ensure","methods":["POST"],"authentication":"cookie-session"},{"path":"/api/account/sites","methods":["POST"],"authentication":"cookie-session"},{"path":"/api/account/sites/:id","methods":["PATCH","DELETE"],"authentication":"cookie-session"},{"path":"/api/account/account","methods":["GET"],"authentication":"cookie-session"},{"path":"/api/account/account/delete","methods":["POST"],"authentication":"cookie-session"}],"projectContract":"https://dictumflow.com/example/account","inputs":{"bootstrap":{"POST":{"mode":"managed"},"GET":"Optional project_id query selects an owned project."},"project":{"PATCH":{"project_id":"<project-id>","stt_provider_model":"<model-id>"},"optionalFields":["llm_provider_model","transcript_transform_prompt","stt_keywords"]},"provider-keys":{"GET":"project_id query required","POST":{"project_id":"<project-id>","transport":"post or realtime","provider":"<catalogue-provider>","api_key":"<private-provider-key>"}},"signing-key":{"GET":"project_id query required"},"signing-key/ensure":{"POST":{"project_id":"<project-id>"},"note":"Existing keys return metadata only; save a newly created secret immediately. Signing keys are immutable."},"api-key":{"GET":"project_id query required; returns the full project key to its owner."},"api-key/rotate":{"POST":{"project_id":"<project-id>"},"note":"Revokes the previous project API key."},"webhook":{"GET":"project_id query required; returns the signing secret to its owner.","PATCH":{"project_id":"<project-id>","url":"<public-HTTPS-url-or-null>"}},"sites":{"POST":{"project_id":"<project-id>","limits":{"max_audio_session_seconds":120,"user_daily_audio_seconds":21600}},"optionalFields":["domain"]},"sites/:id":{"PATCH":"At least one of is_active:boolean or limits:{max_audio_session_seconds,user_daily_audio_seconds}.","DELETE":"No body; deactivates the owned site."},"usage":{"GET":"Unique optional query fields: project_id, site_id, status, date_from, date_to, limit (up to 1000), cursor."},"account":{"GET":"No body; account details, usage and remaining quota."},"account/delete":{"POST":"No body. Cancels owned active billing before deleting DictumFlow data. Preserves shared identity and other applications."},"models/stt":{"GET":"No query; use exact catalogue IDs and transport tags."},"models/llm":{"GET":"No query; use exact catalogue IDs."}},"accountProfile":{"path":"/api/auth/account/profile","method":"POST","requiredFields":["displayName","companyName","billingName","billingAddressLine1","billingAddressLine2","billingCity","billingPostalCode","billingCountryCode","billingTaxId"],"note":"All fields are required; nullable values are explicit. billingCountryCode uses uppercase ISO 3166-1 alpha-2."},"accountPassword":{"path":"/api/auth/account/password","method":"POST","body":{"password":"<new-password>","currentPassword":"<current-password>"},"note":"The authentication contract defines nonce and verified-recovery exceptions."},"accountEmail":{"path":"/api/auth/account/email","method":"POST","body":{"email":"<new-email>","redirectTo":"https://dictumflow.com/"}},"unavailable":["No standalone provider-keys/test route exists in the backend. Test a configured integration through the public SDK/transcription API.","MCP OAuth account linking is not implemented."],"billing":{"contract":"https://dictumflow.com/example/billing","status":{"method":"GET","path":"/api/billing/dictumflow/status?project_id=<project-id>"},"checkout":{"method":"POST","path":"/api/billing/dictumflow/checkout","body":{"project_id":"<project-id>","plan":"pro or scale"}},"portal":{"method":"POST","path":"/api/billing/dictumflow/portal","body":{"project_id":"<project-id>"}},"payment":"Return the hosted Stripe URL to the user. Do not enter payment details or purchase without their instruction."},"mcp":{"url":"https://dictumflow-mcp.agentcore.workers.dev/mcp","contract":"https://dictumflow-mcp.agentcore.workers.dev/contracts","authentication":"No key for register_agent. Then Authorization: Bearer <dga_live_account_key> or Bearer <dka_live_project_api_key>","scope":"register_agent creates the account without email verification. manage_account reads details and credentials, rotates the account key or deletes the product account. Authenticated project tools manage models, usage, webhooks and sites. Billing currently uses the legacy authenticated HTTP boundary.","oauthSupported":false},"workflow":["Read this contract and the MCP contract. For an existing account, load its saved key; do not create another account.","For a new account, generate and privately save a random 32-byte lowercase hex registration_token and a stable registration_id.","Call POST /api/agents/register or unauthenticated MCP register_agent with name, registration_id and registration_token. No human confirmation or email is required.","Save the returned accountKey and project credentials privately. Reconnect MCP with the accountKey.","Call manage_account with action credentials to retrieve the signing key and its ID. Configure sites and server-signed SDK identities through the documented project tools.","Retry uncertain registration with the identical private token, ID and name. Inspect errors, rid and retryable; respect quota Retry-After."],"clients":{"codingAgents":"Claude Code, Codex and other agents with HTTP or shell tools can execute this workflow.","chatgpt":"Reading this document does not install a connector. ChatGPT requires a configured MCP connection; this server currently uses an API key and does not offer automatic OAuth account linking."}}