# Sellat > Sellat creates independently verifiable proof that an exact digital file existed in that exact state at a given time. It registers the file’s SHA-256 fingerprint (not the file), anchors it in Merkle batches on Polygon and attests it on Bitcoin through OpenTimestamps. On request it adds a qualified electronic timestamp (RFC 3161) issued by a qualified trust service provider on the EU trusted list (currently FNMT-RCM); Sellat itself is not a trust service provider. It serves people who protect one file from the browser and software that registers many hashes through a REST API. Anyone can verify a proof without trusting Sellat, with the open-source verifier. ## Key facts - A proof shows that those exact bytes existed no later than the anchoring time and have not changed since. It does not prove authorship, ownership or that the content is true. - The anchoring time and the qualified timestamp time are two different dates from two different sources, and are always shown separately. A timestamp requested later carries the later date. - Under Regulation (EU) 910/2014 (eIDAS), art. 41.2, a qualified electronic timestamp enjoys a presumption of the accuracy of its date and time and of the integrity of the data it is bound to. The public anchor is not a qualified timestamp: under art. 41.1 it cannot be denied legal effect solely for being electronic, and its weight is assessed case by case. - Through the API only the hash is sent. On the web, without an account the file is uploaded to build the certificate; with a free account the fingerprint is computed on the device (Sellat Local). Keeping the original (custody) is optional. - Creating a proof with its public anchor, PDF certificate and evidence package is free. - Qualified timestamps: the first qualified timestamp is free, once per account, then €6 per timestamp, or in packs (5 for €25, 10 for €40, 25 for €75, 100 for €150). Prices include VAT. - AI agents can seal the SHA-256 of an execution log, a decision record or a delivered output: the proof shows that the record existed at that time and has not been altered since (a tamper-evident audit trail). It does not show that the action happened, that the record is complete or that its content is correct. - AI agents can pay per call with no account and no key (x402, USDC on Base): see “AI agents: pay per call” below. - Languages: Spanish (default, unprefixed URLs), English (/en), German (/de) and French (/fr). - Every public page is also available as Markdown: request it with the header `Accept: text/markdown`. ## Product - [Home](https://sellat.app/en): what Sellat does, in one page (Spanish at /) - [Protect a file](https://sellat.app/en/protect): create a proof from the browser - [Verify a Sellat proof](https://sellat.app/en/verify): check a file against its proof, in the browser - [Proof of existence](https://sellat.app/en/proof-of-existence) - [Qualified timestamp (eIDAS)](https://sellat.app/en/qualified-timestamp): when it is worth adding, and what it adds - [RFC 3161 timestamps](https://sellat.app/en/timestamp): what a .tsr contains and how to verify one with OpenSSL - [Timestamp validator](https://sellat.app/en/verify-timestamp): validate a .tsr or .tst against its file, in the browser ## Pricing - [Pricing](https://sellat.app/en/precios): free proofs, qualified timestamps, packs and plans - [WooCommerce plugin](https://sellat.app/en/woocommerce): proof of every paid order and of the terms the customer accepted (coming to WordPress.org) ## API documentation - [Developers](https://sellat.app/en/developers): overview of API v2 and how to get a key - [API v2 reference](https://sellat.app/en/developers/docs): every endpoint with its request and response - [OpenAPI 3.1 specification](https://sellat.app/developers/openapi.json) - [Full API reference as plain text](https://sellat.app/llms-full.txt): the reference above in one file, for models - [Authentication for agents](https://sellat.app/auth.md): API keys: where to get one, how to send it, errors and limits - [Verifiable records for AI agents](https://sellat.app/agentes-ia): in Spanish for now: what an agent can seal, the call step by step, the response, independent verification and what the proof does not show - [API catalog (RFC 9727)](https://sellat.app/.well-known/api-catalog): machine-readable pointer to the OpenAPI description and the docs - [sellat-cli](https://github.com/skanthemore/sellat-cli): command-line client (npm: sellat-cli) - [sellat-verify](https://github.com/skanthemore/sellat-verify): open-source offline verifier (npm: sellat-verify) ## Assistants and MCP - [sellat-mcp](https://github.com/skanthemore/sellat-mcp): open-source MCP server for Claude Code, Gemini CLI, Cursor and Claude Desktop (npm: sellat-mcp; hashes locally, needs the account API key) - [Agent Skill](https://github.com/skanthemore/sellat-cli/tree/main/skills/sellat): SKILL.md (agentskills.io) for Claude Code, Codex, Cursor, Gemini CLI and other clients: when to seal and what a proof shows, with an account or paying per call (x402); install with `npx skills add skanthemore/sellat-cli --skill sellat` - [Sellat in ChatGPT](https://chatgpt.com/plugins/plugin_asdk_app_6ac4129101808191a878a9b88ed1260a): the plugin in the ChatGPT directory: the person connects their Sellat account, the file is hashed in the browser Chat assistants act for a person's account and never pay per call; agents with a wallet pay per call with x402, below. ## AI agents: pay per call (x402) An agent with a wallet needs no account and no API key: it pays each call in USDC on Base (eip155:8453) with the x402 protocol (v2, scheme `exact`, EIP-3009). Paying is the sign-up: the paying wallet is the account. Call without payment to get `402` and a `PAYMENT-REQUIRED` header with the exact amount; repeat with `PAYMENT-SIGNATURE`. The payment is verified before the work and settled after it; a failed call is not charged. - `POST https://sellat.app/api/v2/proofs` — 0.01 USD. Timestamp and notarize any file, data or AI agent log by its SHA-256 hash: blockchain proof of existence and integrity for tamper-evident audit trails, anchored on Polygon in minutes, then Bitcoin (OpenTimestamps); not a notary act. Returns proof_id, certificate, proof.json and evidence ZIP, verifiable without Sellat. Use when you must prove exact data or an agent record existed and is intact. - `POST https://sellat.app/api/v2/proofs/{id}/qualified` — 0.90 USD. eIDAS qualified electronic timestamp (RFC 3161 .tsr) on a Sellat proof, issued in seconds by an EU qualified trust service provider on the EU trusted list. Legal timestamp with the presumption of accuracy of date and integrity of Art. 41.2 eIDAS, recognised across the EU. Use when the date must hold before a court, authority, regulator or auditor. Call it on the proof_id from POST /proofs. - `POST https://sellat.app/api/v2/wallet/key` — 0.01 USD. Read-only API key for the paying wallet’s Sellat account: list its proofs, read status and anchors, download certificates, evidence ZIPs and .tsr tokens. Use when the key returned by your first proof was lost. - The first proof returns a read-only `api_key` once: reading proofs, certificates, evidence ZIPs and proof.json is free with it. Nothing else is free in this channel. The same bytes again from the same wallet are not charged. - Prices include VAT. A proof shows that those exact bytes existed no later than the anchoring time; it does not prove authorship. - Paying accepts the terms (https://sellat.app/en/condiciones): every 402 offer links them and states their version, in the header's `error` sentence and in the body's `terms` object, and the version is recorded with the payment. - [Price list (JSON)](https://sellat.app/api/v2/x402): networks, receiving address, prices and how to pay - [Pay per call, in the API reference](https://sellat.app/en/developers/docs#x402) - [Verifiable records for AI agents](https://sellat.app/agentes-ia): a worked example with the official x402 client (Spanish for now) ## Use cases - [How to prove the flat was already like this when you moved in](https://sellat.app/en/use-cases/deposit): Deposit withheld for damage that was already there? Move-in photos and inventory sealed with a date: verifiable proof of the flat’s condition, for cents. - [How to prove the pre-existing condition before the work starts](https://sellat.app/en/use-cases/renovation): “That crack wasn’t there.” Seal photos of the pre-existing condition and the quote before work starts: damage verification with a date, for cents. - [How to document the damage before the loss adjuster arrives](https://sellat.app/en/use-cases/insurance): A leak, a storm, a knock: document the damage for your insurer on the same day. Photos, video and receipts sealed with a date before the loss adjuster arrives. - [How to prove your work already existed before you showed it](https://sellat.app/en/use-cases/priority): You sent a script, a design, an idea. Months later something too similar appears. Seal the exact version before sharing it: poor man’s copyright, verifiable. - [How to prove which version you delivered, and when](https://sellat.app/en/use-cases/delivery): “That’s not the version we approved.” Seal the exact package before each delivery: proof of which files you delivered and when, even if the client won’t pay. - [How to prove what the contract said, and since when](https://sellat.app/en/use-cases/documents): “That’s not the annex we signed.” Seal the final version of every contract, annex, quote or filing before you send it, and prove exactly what it said and since when. - [How to prove what your customer bought, and on which terms](https://sellat.app/en/use-cases/online-store): A customer asks for a refund or opens a chargeback. Prove what they bought, when, and which terms they accepted, with dated proof of every order. - [How to prove your server’s records have not been tampered with](https://sellat.app/en/use-cases/server-logs): An audit asks for the records of certain dates. Seal each section of your logs through the API as it happens and prove they are still as they were, without them leaving your server. ## Security and legal - [Security policy](https://sellat.app/en/security): how to report a vulnerability (security@sellat.app) - [Legal validity](https://sellat.app/en/legal): what a Sellat proof proves under eIDAS, and what it does not - [Terms and conditions](https://sellat.app/en/condiciones) - [Privacy policy](https://sellat.app/en/privacidad) - [Legal notice](https://sellat.app/en/aviso-legal) ## Optional - [Certify a document](https://sellat.app/en/certify-document) - [Certify a photo](https://sellat.app/en/certify-photo) - [C2PA reader](https://sellat.app/en/c2pa): read the Content Credentials of an image - [Blog](https://sellat.app/en/blog) - [About Sellat](https://sellat.app/en/sobre) - [Sitio en español](https://sellat.app/): the Spanish site, Sellat’s primary language