Security
This page says what we keep, what we do not, and what happens to a request from the moment it arrives. Nothing here is a feature you switch on.
What we keep
This is the whole record of an API request. Prompts and outputs stay in memory for the session and are never written to disk.
The session is the window in which a key's recent prompts stay in memory so repeated context is cheaper. It lasts at most 30 minutes after the last request.
The chat in your account is different. A conversation is stored so you can come back to it, until you delete it. It is not used to train a model.
Usage record
Nothing is used to train a model. Nothing you send to the API is kept.
Kept
- Usage recordTime, model, region, token counts, key id and cost. Shown on the usage page and used for billing.
- AccountEmail address, passkeys, and workspace members.
- BillingReceipts and the last four digits of a card. Card numbers are held by Stripe, not by us.
- API keysA hash of each key. The key itself is shown once and not stored.
- Request logsRequest id, model, node, token counts, timings, status and error codes, and key and workspace ids, for 30 days. For support and debugging.
- Chat conversationsThe title, messages, replies and attached files of each conversation, until you delete the conversation or your account or workspace is deleted. A conversation is shown only to the member who started it, and to anyone they give a share link.
Not kept from an API request
- PromptsStay in memory for the session. Never written to disk, never in a log.
- OutputsReturned to you and held in memory for the session. Never written to disk.
- Training dataNothing you send is used to train any model.
- Other copiesNo analytics or observability vendors sit in the request path.
- Cross-region copiesA request runs in the region you pick and does not run in another region.
What happens to a request
Every request to the API follows the same path, and no step on it writes a prompt to disk.
The chat sends each message as an API request of its own, in the first live region your workspace allows. The steps below are that request's. The chat itself stores the message before it is sent and the reply once it arrives.
With Search the web on, the model may send a search query, which can repeat words from your conversation, to a search provider in the United States. The reply can list the pages it used.
- 01The request arrives in the region you chose
The base URL picks the region.
us-region.api.safeailabs.aiis United States. Traffic is encrypted in transit with TLS 1.3. - 02The key is checked
The key in the Authorization header is hashed and compared with the stored hash. The key itself is never stored or logged.
- 03Credits are checked
If the workspace cannot cover the request it fails with
insufficient_creditsbefore any model runs. - 04The model runs in that region
The prompt is held in memory on the node that serves it. If the region has no capacity the request fails with a retry time. It is never routed to another region.
- 05The response is returned
Streamed or whole, straight back to you. The output is not copied anywhere on the way out.
- 06The usage record is written
Time, model, region, token counts, key id and cost, and a request log entry without the prompt or output. For an API request these are the only things that persist.
- 07The session ends
Prompts and outputs are released from memory at most 30 minutes after the last request on that key.
Regions
One sheet per live region. A line the fleet has confirmed is named plainly; one it has not says so.
United Statesus-region
Which models run in which region follows the capacity we can get. The pricing page shows availability per region and the status page shows whether a region is accepting requests now.
Keys, accounts and encryption
- API keys are shown once at creation and stored as a hash. A lost key is revoked and replaced, never recovered.
- A key works in every region unless you restrict it. Revoking it stops requests in every region within a minute.
- There are no passwords. Sign in is an emailed code or a passkey. Passkeys use WebAuthn and never leave your device.
- Traffic is encrypted in transit with TLS 1.3. The usage record and account data are encrypted at rest.
- Card details are held by Stripe. We store the card brand, the last four digits and the expiry, for display.
- Chat conversations and attached files are encrypted at rest.
- Access to production is limited to Safe AI Labs staff who need it.
Law
We name a law only beside what we do about it.
Safe AI Labs Pty Ltd is an Australian company. A request runs in the region you pick and does not run in another region. The region sheets say what the fleet has confirmed about each region.
We hold the usage record because the Australian Taxation Office requires records that support an invoice. We hold nothing that would let us reproduce the prompt or the output of an API request, so a request to produce one, from anyone, returns the usage record and nothing else. A conversation stored by the chat is held until it is deleted and can be required while it is.
Privacy in detail is on the privacy page.
Report a vulnerability
Email hello@safeailabs.ai with what you found and how to reproduce it. We reply within 2 business days and tell you when it is fixed.
Do not send a prompt or output that belongs to someone else. Do not run a test that degrades the service for others.