Ghost Signature: cryptographic provenance for AI outputs
AI-generated text is everywhere — but how do you prove a specific output came from your system? Ghost Signature uses Ed25519 + a public JWKS so anyone can verify authorship without trusting your server.
Ghost Signature: cryptographic provenance for AI outputs
AI-generated text is everywhere. Customer support replies, product descriptions, agent actions, internal reports — and increasingly, the content your users see was written or shaped by an LLM somewhere upstream.
That raises an awkward question: **how do you prove a specific output actually came from your system?**
Screenshots can be edited. API logs are private. "Trust me bro" doesn't scale. What you really want is a tiny piece of math that anyone — your customer, a regulator, another agent — can verify on their own.
That is what Ghost Signature does.
The shape of the problem
Most "AI watermarking" today falls into two camps:
1. **Statistical watermarks** — bias the token distribution slightly so you can detect "this came from model X". Fragile, model-specific, breaks under paraphrasing.
2. **Server-side logs** — "ask us and we'll confirm". Requires trusting one party. Useless across organizations.
Neither answers the practical question: *"Did Fyrnity's API actually produce this exact payload at this exact time?"*
What Ghost Signature does
Five endpoints, one idea: **sign the bytes you ship, publish your public key, let the world verify.**
- `POST /sign` — Ed25519 signature over your payload, returns `{signature, kid, ts}`
- `POST /verify` — public, rate-limited, no auth required
- `GET /jwks` — JSON Web Key Set with `kid` rotation
- `POST /revoke` — soft-revoke a key without breaking historical signatures
- `POST /purge` — hard-delete signatures on demand (right-to-be-forgotten friendly)
The verifier never has to call you. They just need the JWKS URL and the signature.
Why Ed25519
- Tiny keys (32 bytes) and signatures (64 bytes) — cheap to embed in headers, footers, or metadata
- Deterministic, fast, no nonce footguns
- Supported natively in browsers via WebCrypto, in Node, Deno, Python, Go, Rust
- Battle-tested: SSH, TLS 1.3, signed software updates
If you've ever signed an `.deb` package or a JWT, you already know the shape.
The `kid` matters more than you think
Every signature carries a key identifier (`kid`). When you rotate keys — and you will — old signatures keep verifying against the old `kid` in your JWKS, while new signatures use the new one.
This is the difference between *signing* and *signing in a way that survives a key compromise three years from now*.
Soft revocation marks a `kid` as "no longer trusted for new signatures" without retroactively invalidating the legitimate history. That matters for audit trails, contract evidence, and content provenance.
Where this fits
- **AI agents** signing their own actions so a downstream system can refuse unsigned commands
- **Content APIs** stamping outputs so customers can prove "yes, this draft came from your tool"
- **Multi-tenant SaaS** giving each tenant a `kid` and a verifiable receipt for every generation
- **Compliance** — when a regulator asks "prove this output", you point them at `/verify` and `/jwks`
It composes well with the rest of the stack: pair it with **ChromaWrite** to humanize text *and* prove it came from your account, or with **Agent Safety Pack** to sign killswitch state changes.
Pricing
Same shape as the rest of the Fyrnity API family:
- **Free** — 20 requests/month. Sign, Verify, JWKS. Try before you buy.
- **PRO** — $29/month, 50,000 requests, 100 req/sec. Adds Soft Revoke + Purge.
- **ULTRA** — $99/month, 250,000 requests, 300 req/sec. Priority support.
All plans are hard-capped — you will never get a surprise bill.
Try it
Live on RapidAPI now: search **Ghost Signature** under the Fyrnity provider, or grab the key directly from the [API Tools page](https://fyrnity.com/tools).
Verifiable provenance shouldn't require a PhD or a vendor lock-in. It should be one HTTP call.
👉 **[Try Ghost Signature on RapidAPI →](https://rapidapi.com/fredrikssonanton01/api/ghostsignature)**
Loading interactive experience…