Privacy policy
This policy explains how Verdifax handles personal data: what we collect, who receives it, how long we keep it, and what you can ask us to do. It applies to the Verdifax website (verdifax.com), the dashboard, the documentation site (docs.verdifax.com), and the API (api.verdifax.com).
Last updated: October 17, 2026
Summary
This policy describes how the system works today, including its current gaps. Our API receives the content you send in readable form. We keep hashes of your payload and of any AI output text, but we store the metadata you include exactly as you send it. Our hosted service sends AI output text to Anthropic for a governance review. Our API and database are hosted in the United States. Nothing is deleted automatically, and some data cannot currently be deleted at all.
Who we are
The Verdifax service is operated by Verdifax, LLC, a Delaware limited liability company ("Verdifax", "we", "us"). You can reach us about privacy at privacy@verdifax.com.
We decide how the personal data in access requests, accounts, logs and website use is handled. For content that our customers send through the API, the customer decides what to send and why. [Pending review by counsel: whether Verdifax acts as a controller or as a processor for personal data contained in customer content sent through the API.]
What we collect
Access requests
The access request form at verdifax.com/request asks for your name, email address, organization, role, use case, and a message. The form has no country field. Our server also gives each request a priority label based on your email address and organization.
The form is processed by a Cloudflare Pages Function. It emails the submission to our access@verdifax.com inbox through Resend, with your email address as the reply-to address, and it sends the submission to our API, which stores it in our database. We use this information to evaluate your request and, if we approve it, to create your API key.
If we approve your request, we email you a one-time link to claim your API key. The link expires after 72 hours. This email is sent through Resend and contains your name, your organization, and the link. It does not contain the key itself.
Accounts and API keys
For each API key we store: a name made from your organization (or from your email address if no organization was given); a SHA-256 hash of the key, never the key itself; when the key was created and last used; how many runs it has made; its tier and expiry date; whether it has been revoked; a Stripe customer id if you pay us through Stripe; and a signing key pair, described under Security below.
API requests and sealed records
When you call the API, our servers receive the payload you send, any
AI output text you include in the ai_output_text field, and any
metadata you include, all in readable form. Our server reads the payload to process the request, which includes our
Malicious Code Defense check: it scans the payload for known code-attack
signatures in four categories, prompt injection, dangerous API use,
supply-chain attacks and filesystem escape.
We store a SHA-256 hash of the payload, not the payload itself. We store a SHA-256 hash of the AI output text, not the text itself. There is one exception: if the AI governance review returns output that our server cannot parse, the error message we store and log can contain that output.
We store the metadata you include exactly as you send it, as part of the sealed record of the run. This can include actor identifiers (often email addresses), approver names and comments, decision notes, and any raw prompt text, model output, IP address, user agent, affected-entity identifiers or policy text that you choose to include. You decide what goes into these fields, so please leave out personal data that the record does not need.
Each sealed record also contains a hash of the IP address and a hash of
the user agent that made the request. From run 245 on, these are keyed
hashes (HMAC-SHA256 under a secret that only the Verdifax server holds,
written with the prefix hmac-sha256:): nobody without the secret can
recover the address from its hash or test a guess against it. Verdifax,
which holds the secret, can tell that two records came from the same
address, and could recover an address by trying every possible one. From
run 247 on, the server always computes these two hashes itself and
refuses a request that supplies its own; before run 247, a request
could supply its own values, which were sealed in place of the server's.
Records sealed up to run 244 contain unsalted SHA-256 hashes, from which
anyone can recover an IP address by trying every possible address; a
sealed record cannot be changed, so those hashes stay as they are. Either
kind is pseudonymous personal data, not anonymous data. A sealed record
can also contain a country or region that the request itself declares.
Verdifax does not observe or check it, so it is the caller's statement,
not a measured location; records sealed before run 247 may also carry a
country taken from a request header that any caller could set.
Calls to the /attest endpoint store the digest you submit and the
subject reference text you choose.
AI governance review (Anthropic)
Our hosted service has the AI governance review turned on. When a request includes AI output text, we send that text, exactly as received, to Anthropic's Claude API for review. If the field is empty, nothing is sent to Anthropic. We keep only the hash of the text and the result of the review.
Anthropic's published Commercial Terms state that Anthropic may not train models on customer content from its services. Anthropic describes how long it keeps API inputs and outputs in its own privacy center, and Anthropic can change that policy. [Pending review by counsel: whether Anthropic's Commercial Terms and data processing addendum govern Verdifax's API account.]
Public demo records
We publish some of Verdifax's own demonstration runs so that anyone can
check them without a login. Today, a sealed record can become public
only when a Verdifax administrator publishes it with an admin API key,
and an admin key can publish only runs that were created with that same
admin key.
Customer API keys cannot make a record public. Choosing a route
identifier (route_id) that begins with buyer-demo- does not make a
record public.
Under an earlier rule, any run whose route_id began with
buyer-demo- was published automatically. The 44 records published
under that rule remain public at
https://api.verdifax.com/runs/{id}/bundle.json. Their run ids are
sequential numbers, so these 44 records can be found by counting
upward. Each contains all of the metadata recorded in its run, and 34
of them include the email address of Verdifax's founder.
Records published since then are served at
https://api.verdifax.com/public/runs/{token}/bundle.json, where the
token is 32 hexadecimal characters drawn from a cryptographic random
source. These records are not served at the numbered address, so they
cannot be found by counting run ids. Anyone who has the link can read
the full sealed record, including all of the metadata in it. Public
records may still be cached for up to one hour after an administrator
unpublishes them.
Operational logs
Our API writes operational logs to Fly.io's logging system. Log lines for runs include the run id, timing, manifest hash, program id, route id and API key id, and for failed runs the error message. Our application does not write IP addresses, email addresses or names to these logs. We have not configured a separate retention period for these logs.
When the API crashes or logs an error, diagnostic data is sent to Sentry, as described on our sub-processor page.
Cookies and browser storage
Verdifax's own code sets no cookies. Cloudflare, which delivers our
website, dashboard and documentation, adds two scripts to our pages:
Cloudflare Web Analytics, which sends measurements about each page
load to Cloudflare, and a Cloudflare bot-detection script, which
Cloudflare uses to tell browsers apart from automated traffic. When we
checked on October 16, 2026, the bot-detection script's request
received a cookie named cf_clearance, set by Cloudflare for the
verdifax.com domain with an expiry of one year. Some pages also load
Cloudflare's email address obfuscation script. We do not use
advertising trackers.
When you sign in to the dashboard, it stores your API key in your
browser's local storage (verdifax.api_key), together with a flag that
records whether the key has admin access (verdifax.is_admin), and a
session flag in session storage (verdifax.session). Any script
running on the dashboard pages, including the Cloudflare scripts above,
can read local storage. Signing out removes these values. The
documentation site stores your language choice in local storage
(verdifax.lang).
What we do not ask for
The API has no field for model weights, identity tokens, or your customers' records, and we do not ask for them. The API stores whatever metadata you include, however, so anything you put in a metadata field becomes part of the sealed record.
How we use the data
We use personal data to: evaluate access requests and create and revoke API keys; run the service, including the AI governance review; publish demo records as described above; respond to you; diagnose errors; process payments; protect the service against abuse; and comply with legal obligations. We do not use personal data for advertising or to build profiles. We do not make automated decisions about you that have legal effects. We do not sell personal data. We have not yet set out the lawful basis for each of these uses. [Pending review by counsel: the lawful basis for each use under the GDPR and the UK GDPR.]
Sharing
We share personal data with the service providers listed on our sub-processor page, each for the purpose stated there: Fly.io (hosting), Cloudflare (website delivery, analytics and bot detection), Anthropic (AI governance review), Sentry (error diagnostics), Resend (email, sent through Amazon SES), Google Workspace (our company email), AWS KMS (key management), Stripe (payments), and the public Sigstore Rekor transparency log. Entries in the Rekor log contain only hashes, a signature and Verdifax's public key, and they are public and permanent. We will disclose personal data to public authorities if the law requires us to.
Retention
Verdifax has no automatic deletion or expiry for any stored data. Account records, access requests, sealed records and attestation records are kept indefinitely. The only bulk deletion is a cleanup that an administrator can run by hand, which removes runs that were not anchored in the public Rekor log. Revoking an API key marks it as revoked but does not delete it. Each access request is also emailed through Resend to our Google Workspace mailbox, so copies exist outside our database as well.
Sealed records are designed to be permanent. For runs anchored in the Rekor log, the service has no function that removes or edits the caller-declared metadata in the sealed record, so that metadata cannot currently be removed. Entries in the public Sigstore Rekor log cannot be removed by anyone.
The API includes an admin-only erase endpoint (POST /admin/erase): it
rejects customer-grade API keys, and it acts only on runs created with
the calling admin key. It destroys an encryption key and issues a sealed
deletion receipt. Today no stored
field is encrypted with these keys, so calling the endpoint does not
remove or hide any sealed content, metadata, or other stored data.
Your rights
Depending on where you live, data protection law may give you the right to access, correct or delete your personal data, to receive a copy of it, and to object to or restrict how it is used. [Pending review by counsel: which of these rights apply to Verdifax's users.] To make a request, email privacy@verdifax.com. We respond within thirty (30) days.
The service has no self-service tools for these requests, so we handle each one by hand. We cannot currently remove metadata from sealed records, and no one can remove entries from the Rekor log. If you are in the European Economic Area or the United Kingdom, you can also complain to your data protection authority.
International transfers
Our API and database are hosted in the United States, on Fly.io in Ashburn, Virginia. AWS KMS and Amazon SES, which Resend uses to send our email, run in the us-east-1 region in the United States. Our website, dashboard and documentation are delivered through Cloudflare's global network, so requests to those sites may be handled at Cloudflare locations outside the United States.
If you are in the European Economic Area, the United Kingdom or Switzerland, your personal data is transferred to and stored in the United States. Verdifax has not entered into Standard Contractual Clauses for these transfers and has not self-certified under the EU-U.S. Data Privacy Framework. [Pending review by counsel: the transfer mechanism for personal data of users in the European Economic Area, the United Kingdom and Switzerland.]
Security
Connections to our website and API use TLS 1.2 or higher. Our database is stored on an encrypted volume. Our application does not add a separate layer of encryption to the data inside the database. API keys are stored as SHA-256 hashes, and we never store the key itself.
When we create an API key, our server also generates an Ed25519 signing key pair for it and stores both keys, including the private key, in our database. The actor signature in each sealed record is made by our server with that stored private key. It shows that Verdifax's server signed the record with the key assigned to your API key, not that you signed it yourself. The key we use to sign entries in the Rekor log is stored as a file on the same server volume. AWS KMS holds the master key for our record-erasure feature, which, as described under Retention, does not currently encrypt any stored data.
If a security incident affects your personal data, we will notify affected people and the relevant authorities where the law requires it.
Changes
When we change this policy, we post the new version on this page and update the "Last updated" date above. For material changes, we will also email account holders. We send these emails by hand, because the service has no automated notice system.
Contact
Questions or concerns about this policy can be sent to privacy@verdifax.com. Legal questions can be sent to legal@verdifax.com.
