Security
We store token counts and discard your prompts.
x-st-region: us
x-st-data-retention: none
x-st-request-id: 01K5Z3T8R2V9Q4M6N1P7B0C8XDThe same facts as data: /security.json
What we never do
Store request content
Prompts and completions of API requests are processed in memory and discarded. Batch files, including batch results, are deleted within 30 days.
Log content
Prompts and completions never go into logs, traces, metrics, analytics or error messages. Usage records hold counts, costs and timings.
Train on your data
We don't use your prompts, completions or files to train models.
Fail over to the other region
When a region is busy or down, its requests are never sent to the other region.
See your card number
You enter it on Stripe's payment page; it never reaches our servers.
Sell personal information
We don't sell it. The Privacy Policy says what we share, with whom and why.
01 · Data retention
Prompts and completions aren't stored.
This applies to every request. Each response carries x-st-data-retention: none so your agent can check it.
- Prompts and completionsNot stored
- Processed in memory to produce the response, then discarded. They aren't written to logs.
- Batch filesAt most 30 days
- Stored encrypted in your region until you delete them or 30 days after upload, whichever comes first.
- Usage recordsLife of the account
- Model, token counts, cost and timings, for billing. No content.
We don't use your prompts, completions or files to train models.
Closing an account
Close the account with DELETE /v1/account (a key with the keys or billing scope), or, in the US region, as an owner on the dashboard. Every key stops working and all running work (batches, videos) is cancelled at once, and the account's files and batch results are deleted right away. For 30 days the account itself (its keys and members) can be reopened, from the dashboard in the US region or by contacting support; after that its personal data (name, email, key names) is erased. A legal hold can require us to keep data longer. Unused purchased credit is refunded automatically once usage has settled, so a reopened account keeps only credit not yet refunded; disputed or held payments are handled by our team. Billing and usage records, which hold no names, emails or content, are kept for 6 years, as tax and accounting law requires. Details are in the Privacy Policy.
Check it on every response
- x-st-region: us
- The region that served the request. Every API response, errors included.
- x-st-data-retention: none
- Prompts and completions from this request are not stored. Every API response, errors included.
- x-st-request-id: 01K5Z3T8R2V9Q4M6N1P7B0C8XD
- The request's id, for usage records and support. Inference responses.
02 · Residency
One country per key.
A key starts with st_us_ or st_ca_, and that prefix decides where its requests are processed and its account data is stored. A key sent to the other country's API gets 421 wrong_region with the right base URL. Card payments for both regions are processed by Stripe in the US. The Privacy Policy says what else is processed outside an account's country. A current list of the companies that process data for us, with what each receives and where, is available on request. Write to privacy@scaledthought.com.
United States
Openapi.us.scaledthought.com
Canada
Coming soonapi.ca.scaledthought.com
HTTP/1.1 421 Misdirected Request
x-st-region: us
x-st-data-retention: none
{"error": {"code": "wrong_region", "type": "invalid_request_error",
"message": "This API key belongs to region \"ca\". Send requests to https://api.ca.scaledthought.com/v1",
"base_url": "https://api.ca.scaledthought.com/v1"}}03 · API keys
Scoped keys for each agent.
Give each agent the narrowest key that does the job, for no longer than it needs.
Hashed, shown once
We store only a hash of each key and show the key once, when it's created.
Expiry
Keys can expire after up to 365 days.
Rotation
Replace a key and keep the old one working for a grace period, so an agent can switch without downtime.
Self-revocation
A key that may have leaked can revoke itself, with no special permission needed.
Sub-agent keys
Give a sub-agent a narrower key that can never exceed its parent's scopes, budget or expiry.
Budgets and limits
Every key can have its own daily spending limit, rate limits and scopes.
# A sub-agent key: inference only, $2 a day, gone in 12 hours
npx -y scaledthought@0.6 keys create --name sub-agent --child \
--scopes inference --budget-usd 2 --expires-in 12h
# Replace a key; the old one keeps working for 24 hours
npx -y scaledthought@0.6 keys rotate key_… --grace 24h
# This key may have leaked: revoke it
npx -y scaledthought@0.6 keys revoke-selfReference: keys in the docs.
04 · Protection
How we protect your data.
- Encryption in transit
- Traffic to our API uses TLS 1.2 or later, and every hop that carries your prompts, completions or keys inside our network is encrypted too. Database connections verify the server's certificate.
- Encryption at rest
- Databases, stored files, backups, secrets and logs are encrypted with each region's own encryption keys, held in that region.
- Separate regions
- Each region runs as its own deployment, with its own database, encryption keys and secrets.
- Backups and logs
- Databases are backed up automatically inside their region, kept for 14 days, with point-in-time recovery. Operational logs hold metadata only and are kept for 90 days, in the region.
- Staff access
- Staff sign in with passkeys, and sensitive actions need a fresh passkey check. Every staff action on an account is recorded in an append-only audit log.
- Payments
- Cards are handled by Stripe. We keep Stripe's ids for a payment, never the card number.
- Pinned models
- Every model we host ourselves is pinned to an exact upstream commit and checked before it serves; where the weights have published checksums, every file is hash-verified, so a model we host can't change without us knowing.
05 · How we build
Checked before it ships.
- Every change is checked
- Changes to our code and infrastructure go through pull requests that must pass the tests, secret scanning, dependency vulnerability checks and static analysis before they merge.
- Nightly scans
- Every night we scan our code, dependencies, container images and infrastructure configuration for known vulnerabilities. Findings get a fix-by date by severity: critical 7 days, high 30 days, medium 90 days, low 180 days.
- Infrastructure as code
- Our cloud infrastructure is defined in code. Before each deployment, policy checks refuse any resource outside the region, any publicly readable data store, and any database, bucket, cache, secret store or log bucket without the region's own encryption key.
- Pinned dependencies
- Container base images are pinned by digest and CI actions by commit. Dependency updates are proposed weekly and go through the same checks.
- Secrets
- Service credentials live in each region's secret manager, never in code. Our CLI never takes a secret as a flag.
06 · Incidents & reporting
If something goes wrong.
Incident response
If an incident affects your data or keys, we tell you at the account's email on file, if it has one. When many customers are affected, we also post a notice on this site and in /llms.txt. Regulators are notified as the law requires.
Service health and the incidents we post are on the status page.
Report a vulnerability
Email security@scaledthought.com. We aim to acknowledge reports within 3 business days, and we won't take legal action over good-faith research that follows the policy. Scope and rules are in our vulnerability disclosure policy; the contact is also in security.txt.
Security reviews
Reviewing us as a vendor? Send your security questionnaire or questions to security@scaledthought.com. The same facts as this page, as data, are in /security.json.