{"service":"Obsideo signup","what":"Self-serve onboarding for Obsideo: encrypted, S3-compatible object storage with continuous cryptographic possession proofs.","signup":{"email_otp":{"free_tier_gb":12.0,"note":"No card, no CAPTCHA. Returns working S3 credentials inline.","steps":[{"method":"POST","path":"/v1/auth/start","body":{"email":"you@example.com","source":"optional label"}},{"method":"POST","path":"/v1/auth/verify","body":{"email":"you@example.com","code":"6-digit code from the email","customer_signing_public_key":"obk_sig_...","referral_code":"optional, +1 GB"}}]},"trial_no_email":{"quota_mb":100,"ttl_days":7,"proof_of_work_bits":20,"enabled":true,"note":"No email and no human in the loop. This is the agent path.","steps":[{"method":"POST","path":"/v1/trial/start","body":{"source":"optional label"},"returns":"issuance ticket + proof-of-work challenge"},{"method":"POST","path":"/v1/trial/redeem","body":{"ticket":"from /v1/trial/start","nonce":"your PoW solution","customer_signing_public_key":"obk_sig_...","source":"optional label"}}]}},"upgrade":{"what":"Graduates a 100 MB trial to the 12.0 GB free tier IN PLACE.","keeps":"Same account_id, bucket, api_key and S3 keypair. Nothing moves, so there is nothing to copy out.","expired_is_not_lost":"A trial suspended for passing its 7-day TTL can still claim, and comes back with its data. Suspension retains objects, it does not delete them.","auth":"Bearer: the account_token returned by /v1/trial/redeem","steps":[{"method":"POST","path":"/v1/trial/claim/start","body":{"email":"you@example.com"}},{"method":"POST","path":"/v1/trial/claim/verify","body":{"email":"you@example.com","code":"6-digit code from the email"}}]},"billing":{"what":"Paid plan: 200 GB blocks at $5/month each, billed by Stripe. Nothing is ever charged or changed without an explicit call or click.","enabled":true,"auth":"Bearer: the account_token from signup","steps":[{"method":"POST","path":"/v1/billing/checkout","body":{"blocks":1},"returns":"Stripe-hosted checkout url; open it in a browser"},{"method":"GET","path":"/v1/billing","body":{},"returns":"plan, status, any pending upgrade offer"},{"method":"POST","path":"/v1/billing/stepup","body":{"blocks":2},"returns":"changes the plan size; this call IS the agreement"},{"method":"POST","path":"/v1/billing/portal","body":{},"returns":"Stripe portal url: cancel, change card, invoices"}]},"other_endpoints":{"GET /health":"liveness","GET /v1/notices":"live operator broadcasts","GET /v1/account/usage":"usage vs quota (Bearer account token)","GET /v1/account/me":"account id, email, quota, live web sessions (Bearer account token or web session)","POST /v1/auth/logout":"end this web session (Bearer web session)","POST /v1/auth/logout-all":"end every other web session on the account","GET /v1/account/referral":"referral code + stats (Bearer account token)","GET/POST /v1/account/email-preferences":"opt in or out of update emails (Bearer account token)","GET /v1/billing":"plan, status, pending upgrade offer (Bearer account token)","POST/GET /v1/shares/invites, DELETE /v1/shares/invites/{id}":"share a slideshow by email (web session)"},"docs":{"integration_contract":"https://obsideo.io/agents.md","summary_for_models":"https://obsideo.io/llms.txt","openapi":"https://signup.obsideo.io/openapi.json"}}