{"schemaVersion":"2026-07-14","service":{"name":"Coasty","tagline":"Computer-use AI agents — controllable, schedulable, billable per credit.","homepage":"https://coasty.ai","statusPage":"https://status.coasty.ai","supportEmail":"founders@coasty.ai","foundingYear":2025,"licenseModel":"credit-based-subscription","sandboxAvailable":true},"endpoints":{"openapi":"https://coasty.ai/.well-known/openapi.json","pricing":"https://coasty.ai/api/pricing","llmsTxt":"https://coasty.ai/llms.txt","llmsFull":"https://coasty.ai/llms-full.txt","apiReference":"https://coasty.ai/docs","apiReferenceLlms":"https://coasty.ai/docs/llms.txt","sitemap":"https://coasty.ai/sitemap.xml","robots":"https://coasty.ai/robots.txt","securityTxt":"https://coasty.ai/.well-known/security.txt","mcpServerCard":"https://coasty.ai/.well-known/mcp/server-card.json","apiDocsHuman":"https://coasty.ai/api-docs","blog":"https://coasty.ai/blog","pricingPage":"https://coasty.ai/pricing","download":"https://coasty.ai/download"},"auth":{"methods":["bearer","x-api-key-header","machine-device-bearer","webhook-hmac"],"bearerFormat":"Bearer sk-coasty-{live|test}-<48 hex>","headerName":"X-API-Key","sandbox":{"keyPrefix":"sk-coasty-test-","cost":"free — billed at 0 credits","semantics":"same validation and response contracts; billed at zero by Coasty; managed Task/Workflow/Schedule side effects are sandboxed, while explicit direct BYOK on predict, ground, and inherited session predict can call and bill the supplied provider key"},"production":{"keyPrefix":"sk-coasty-live-","enrolment":"https://coasty.ai/developers/keys"},"scopes":["predict","ground","parse","session","keys","usage","machines:read","machines:write","actions:exec","terminal:exec","files:read","files:write","browser:execute","snapshots:write","connection:read","schedules:read","schedules:write","triggers:write","runs:read","runs:write","workflows:read","workflows:write","llm_keys"]},"api":{"baseUrl":"https://coasty.ai","publicPathPrefix":"/v1","versioningPolicy":"Breaking changes ship behind a new path prefix (/v2, /v3). Within a major version, additive changes are allowed without notice; field removals require 90-day deprecation.","localAutomation":{"guide":"https://coasty.ai/api-docs#local-overview","llmsReference":"https://coasty.ai/docs/llms.txt","promptPresets":["precise-ui","forms-data-entry","qa-regression","read-extract","cautious","fast-batch"]},"externalMachines":{"protocolVersion":"1","enrollment":{"method":"POST","path":"/v1/machines/external","auth":"owner API key with machines:write","idempotencyKeyRequired":true,"successStatus":201,"cacheControl":"no-store","deviceTokenRecovery":"initial response or exact Idempotency-Key/body replay during the 24-hour recovery window; never list/get"},"taskTarget":"Use the returned machine_id unchanged in Runs, Workflow task steps, schedules, and direct Machine actions.","deviceAuth":{"scheme":"Authorization: Bearer $COASTY_DEVICE_TOKEN","scope":"one enrolled machine only; never accepted as an owner API key","preAuthenticationPeerLimits":{"requestsPerMinute":1000,"requestsPerHour":40000},"authenticatedTokenLimits":{"requestsPerMinute":300,"requestsPerHour":12000},"accountAggregateLimits":{"requestsPerMinute":1200,"requestsPerHour":48000},"observationTokenLimits":{"requestsPerMinute":60,"requestsPerHour":3600}},"driverEndpoints":["GET /v1/machines/{machine_id}/commands?after=&limit=&wait_seconds=","POST /v1/machines/{machine_id}/observations","POST /v1/machines/{machine_id}/commands/{command_id}/results","POST /v1/machines/{machine_id}/heartbeat"],"capabilities":["screenshot","mouse","keyboard","scroll","terminal","files","browser"],"observations":{"formats":["image/png","image/jpeg"],"exactlyOneFrame":true,"base64PayloadMaxChars":10485760,"decodedDimensions":{"minWidth":320,"minHeight":240,"maxWidth":3840,"maxHeight":2160},"requestDigest":"SHA-256 of submitted decoded bytes","responseDigest":"SHA-256 of normalized bytes; may differ after metadata stripping/re-encoding","encrypted":true,"logicalRetentionSeconds":900,"excludedFrom":["SSE","webhooks","ordinary logs","durable run history"],"restartRecovery":"poll once for the current fence, heartbeat, then submit last_sequence + 1; heartbeat also returns nullable last_frame_id"},"commands":{"delivery":"at least once; persist next_cursor after durable processing and deduplicate by stable command id","concurrency":"exactly one queued or delivered command per machine; concurrent dispatch returns 409 MACHINE_BUSY","safety":"verify protocol, capability, deadline, fencing token, and frame precondition before execution","resultRule":"echo fencing_token and precondition_frame_id exactly, including null; conflicting terminal replay is rejected"},"pricing":{"enrollmentCredits":0,"runtimeCreditsPerHour":0,"directActionCredits":0,"frameTransportCredits":0,"taskAndWorkflowSteps":"managed inference keeps the selected-CUA per-step rate; live-key BYOK inference is 0 Coasty credits and is billed only by the selected provider"},"revoke":"Owner-authenticated DELETE /v1/machines/{machine_id} revokes the token and outstanding command leases.","lifecycle":"Owner start/stop/restart are logical dispatch gates that increment fencing and cancel pending commands; they do not power the caller-owned host.","unavailableManagedFeatures":{"connection":"409 INVALID_STATE; Coasty issues no SSH/VNC/WebSocket/browser-debug credentials","snapshot":"400 UNSUPPORTED_MACHINE_KIND; Coasty does not own the external disk"}},"idempotency":{"headerName":"Idempotency-Key","ttlSeconds":86400,"pendingTtlSecondsDefault":600,"pendingTtlSecondsMaximum":21600,"pendingTtlPolicy":"endpoint-derived for bounded long-running operations","namespace":"concrete API-key id plus live/test mode","operationBound":true,"fingerprintInputs":"operation + canonical JSON + non-secret effective LLM identity on BYOK-capable operations; never plaintext provider keys","crossEndpointReuseStatus":422,"enrollmentException":"POST /v1/machines/external is account-scoped so an exact enrollment replay survives owner API-key rotation.","maxKeyLength":128,"inFlightStatus":409,"inFlightCode":"IDEMPOTENCY_IN_FLIGHT"},"errorEnvelope":{"shape":{"error":{"code":"STRING","message":"STRING","type":"STRING","request_id":"STRING","retryable":"BOOLEAN","retry_with_same_idempotency_key":"BOOLEAN"}},"example":{"error":{"code":"INVALID_API_KEY","message":"API key is invalid or has been revoked.","type":"auth_error","request_id":"req_3f9c1ab8e2","retryable":false,"retry_with_same_idempotency_key":false}}}},"mcp":{"package":"@coasty/mcp","install":"npx -y @coasty/mcp","transports":["stdio","http"],"httpEndpoint":"https://api.coasty.ai/mcp","serverCard":"https://coasty.ai/.well-known/mcp/server-card.json","registry":"https://registry.modelcontextprotocol.io/v0/servers","toolGroups":["predict","machines","schedules","account","discovery"],"discoveryTools":["get_pricing","get_capabilities"]},"limits":{"maxRequestBodyBytes":15728640,"maxScreenshotBase64Chars":10485760,"minScreenshotBase64Chars":100,"maxTaskInstructionChars":32000,"maxPromptComponentChars":16000,"maxStatelessPriorTrajectorySteps":19,"maxSessionTrajectorySteps":20,"maxFilterableTools":8,"sessionInactivityTtlSeconds":7200,"maxRunDeadlineSeconds":86400,"machineTtlMinutes":{"minimum":5,"maximum":10080,"zeroClears":true},"schedulesPerTier":"https://coasty.ai/api/pricing"},"compatibility":{"httpVersions":["HTTP/1.1","HTTP/2","HTTP/3"],"tls":{"minVersion":"1.2"},"contentEncodings":["gzip","br"],"cors":{"wildcard":false,"credentialsRequired":true},"webhookSignatures":{"algorithm":"HMAC-SHA256","headerName":"Coasty-Signature","scheme":"t=<unix>,v1=<hex>"}},"notes":["Use sandbox keys (sk-coasty-test-*) for development — no credits billed and identical request/response schemas. Stored BYOK key management is live-only.","Pricing is dynamic; always re-fetch /api/pricing rather than hard-coding values.","OpenAPI spec is hand-curated; the FastAPI runtime spec is suppressed in production for security.","MCP server is the recommended integration path — install with `npx -y @coasty/mcp` and call `get_capabilities` for one-shot onboarding.","If you're an AI training crawler: see /robots.txt — we permit ai-train, ai-input, and search."],"contact":{"support":"founders@coasty.ai","security":"founders@coasty.ai","securityTxt":"https://coasty.ai/.well-known/security.txt","abuse":"abuse@coasty.ai"}}