1. What the API stores, and what it does not
The developer API and the MCP server are built to keep as little of your traffic as possible. The text of a query, a request body, or a parameter is never written to a database or a log. It exists in memory for the length of the request. What we do keep:
| Data | Contains | Retention |
|---|---|---|
| Request content | Nothing. Not persisted. | Request duration only |
| API key | A SHA-256 hash, an encrypted copy so the console can show the key again, and a short display prefix | Until you revoke the key |
| Usage counters | Call counts per key, per day, per endpoint. No query content. | 48 hours |
| Billing ledger | Account ID, credit amount, endpoint label, timestamp. No query content. | Kept as a billing record (up to seven years, per the Privacy Policy) |
| Law Change Alerts | Webhook URL, an encrypted webhook secret, notification email, the source you watch | Until you delete the watch |
| Webhook delivery log | Status code, success or failure, a short error, attempt number. Not the payload. | 90 days |
| Request metrics | Route, status code, response time. No bodies or headers. | Sampled: 1% of successful calls, all errors |
We do not use a language-model provider anywhere in the service, so your queries are never sent to one. If you connect an AI client to our MCP server, that client and its model provider see what you ask and what we return, under their own terms, and we do not control what they keep.
2. API keys and access
- Keys are bearer tokens with the
vq_key_prefix. Create, rotate and revoke them in the console. Revoking a key takes effect at once. - We authenticate against a SHA-256 hash of the key. Keep keys out of client-side code and public repositories.
- Calls are HTTPS only. Plain HTTP is rejected.
- Every key is rate-limited per minute and per day and can spend only the credits on your account, so a leaked key cannot spend beyond your balance.
- The number of active keys depends on your plan.
- Webhook deliveries from Law Change Alerts are signed with your secret, which is encrypted at rest and never returned by any endpoint, so you can verify a delivery came from us.
- IP-based access restrictions are available on enterprise plans.
3. Where data lives
Data is processed and stored in data centers operated by our infrastructure sub-processors, in the regions recorded in our sub-processor register, which is available on request. We give at least 7 days’ notice before moving primary Customer Data to another country.
4. Encryption
AES-256 encryption at rest for the database and document storage. TLS 1.2 or higher in transit, and TLS 1.3 where the client supports it. Secrets are not checked into source control.
5. No training on your data
Your API queries, and the documents, prompts and outputs you put in the Vaquill application, are never used to train any model, ours or a provider’s. We do not use language models to process your content. Search queries are sent to Voyage AI to compute embeddings and rerank results; our Voyage account is opted out of training use, and Voyage deletes content immediately after processing it.
6. Sub-processors
The services that handle data for the API are Amazon Web Services (hosting for our servers and search index, and S3 storage of source documents), Supabase (database and authentication: account details, API key hashes, usage and billing records, no query text), Voyage AI (embeddings and reranking of query text) and Cloudflare (traffic routing, DDoS protection and R2 storage of source documents). All are in the United States, apart from Cloudflare’s edge, which is the location nearest the caller. We also use vendors for payments, transactional email and error tracking; none of them receives query content. Each is bound by a written data-processing agreement. The current register, with regions and the data each one handles, is available to customers and their counsel at privacy@vaquill.ai. We give customers at least 7 days’ notice before adding a sub-processor.
7. Incident notification
If a confirmed security incident affects your data, we notify you without undue delay and in any event within 72 hours of becoming aware of it, in line with applicable US state breach-notification laws.
Availability and incidents are published at status.vaquill.ai, and our availability targets are on the Service Levels page.
8. Development and operations
We run routine dependency scanning. Staff access to production systems is restricted to what the work needs, and staff use multi-factor authentication. Vaquill AI staff do not read the content of application matters except when you ask for support or when we need to diagnose an incident.
9. The Vaquill application
The legal-AI application has additional controls because it holds documents and matters:
- Each customer’s data is logically isolated, with row-level security on database queries and object-store reads.
- Role-based access for admins and members, and TOTP-based two-factor authentication that admins can require for a workspace.
- Audit logs of sign-ins, permission changes, uploads, sharing and deletions, available to admins.
- Uploaded files are screened for hidden instructions aimed at manipulating the model.
- Matters and documents are kept while the account is active and are exportable for 30 days after cancellation, then deleted. See Delete My Data.
10. Reporting a vulnerability
Email security@vaquill.ai with a description, steps to reproduce and any proof of concept. We acknowledge reports within 72 hours and follow a 90-day coordinated-disclosure timeline. Scope, response times and our safe-harbor commitment are on the Vulnerability Disclosure Programme page.
11. Questions and special requirements
If you need a security questionnaire answered, a custom DPA, IP allow-listing, or a dedicated deployment, email security@vaquill.ai or use the contact page.