Draftworks

Data handling

The lifecycle of a request's data — what exists during processing, what is retained afterward, and who processes what.

This page follows one request through the system and accounts for every piece of data it creates. The operational summary is on the privacy page; the legally binding policy is at /legal/privacy.

During a request

While a request is in flight, its content necessarily exists in memory at two places: the gateway (to forward it and hash it) and the Azure fleet (to run the model). Both are transient. The gateway computes SHA-256 hashes of the exact request and response bytes for the receipt; under the Azure data-processing terms, Microsoft processes content to serve the call, does not retain it, and does not use it for training.

On the Responses API, OpenAI and Azure default store to true, which would persist content upstream for 30 days. Draftworks forces the default to false; server-side state exists only if you opt in per request.

After a request

What remains, per request:

DataWhereWhyRetention
prompt_sha256, response_sha256Receipt storeThe signed receipt commits to content without containing itIndefinite, receipts are permanent
Token counts (input, cached, output, reasoning)Usage ledgerBilling and your usage dashboardsIndefinite
Request metadata: timestamp, endpoint, model id, key id, latency, status codeUsage ledgerBilling, debugging, abuse preventionIndefinite
Billed and list costUsage ledgerThe credit ledger and your savings figuresIndefinite

A hash commits to content without revealing it: given prompt_sha256 alone, the prompt cannot be reconstructed; given the prompt, anyone can verify the hash. That asymmetry is what lets receipts exist without content retention.

Account data

DataWhyRetention
Email, nameSign-in and account recoveryLife of the account
API keysStored as SHA-256 hashes onlyUntil you delete the key
Credit ledger and purchase historyPrepaid billingLife of the account

Closing your account from /dashboard/settings deletes it immediately; remaining balance is forfeited, as the flow warns. Signed receipts are content-free and remain retrievable by request id, which is what makes them useful as permanent evidence.

Who processes what

SubprocessorRoleSees content
Microsoft AzureModel inferenceTransiently, to run the model
VercelGateway and hostingTransit only
ConvexLedger: hashes, counts, metadataNo
StripePaymentsNo

For a data processing agreement or any privacy request, contact privacy@draftworks.dev. The full subprocessor list and change-notification procedure are in the legal policy.

On this page