C2PA Implementation Guide
From zero to signed content in five minutes. REST API, Python SDK, and TypeScript SDK. Free verification for any C2PA-signed content, no account required.
API Quickstart
Sign text content with a single API call. Get your API key at encypher.com/try (free tier, no credit card).
Sign Text
# Sign a text document
curl -X POST https://api.encypher.com/v1/sign \
-H "Authorization: Bearer ey_your_key_here" \
-H "Content-Type: application/json" \
-d '{"text": "Your article content here.", "metadata": {"author": "Jane Smith", "rights": "bronze"}}'
Sign an Image
# Sign an image file
curl -X POST https://api.encypher.com/v1/sign/media \
-H "Authorization: Bearer ey_your_key_here" \
-F "file=@photo.jpg"
Verify (no auth required)
# Verify any C2PA-signed content
curl -X POST https://api.encypher.com/v1/verify \
-H "Content-Type: application/json" \
-d '{"text": "Content to verify here."}'
Python SDK
# Install
pip install encypher
# Sign text with sentence-level provenance
from encypher import EncypherClient
client = EncypherClient(api_key="ey_your_key_here")
result = client.sign_text(
text="Your article content here.",
author="Jane Smith",
rights="bronze"
)
signed_text = result.text # Contains invisible provenance markers
# Verify
verification = client.verify_text(signed_text)
print(verification.signer, verification.timestamp)
The Python SDK wraps the REST API with typed interfaces for all signing and verification operations. Batch utilities allow processing thousands of documents:
# Batch sign articles from CMS
articles = cms.get_all_articles() # Your CMS client
results = client.sign_batch(
items=[{"text": a.body, "id": a.id} for a in articles],
concurrency=20
)
TypeScript SDK
// Install
npm install @encypher/sdk
// Sign text content
import { EncypherClient } from '@encypher/sdk';
const client = new EncypherClient({ key: 'ey_your_key_here' });
const result = await client.signText({
text: 'Your article content here.',
author: 'Jane Smith',
rights: 'bronze',
});
// Verify (no API key needed)
const verification = await client.verifyText(result.text);
console.log(verification.signer, verification.timestamp);
The TypeScript SDK provides full type definitions for all API responses. Compatible with Node.js and browser environments. The verification function works without an API key using the public verification endpoint.
CMS Integration Patterns
The most common integration pattern is signing at publish time via a CMS webhook. When an article is published, the CMS fires a webhook to your signing service, which calls the Encypher API and updates the stored article with the signed version.
WordPress
Hook into the publish_post action. Call the Encypher signing API with the post content. Update the post with the signed content before the response is sent.
Contentful / Headless CMS
Subscribe to the ContentPublished webhook. In the handler, retrieve the content, sign it, and update the entry via the Management API. The signed version is served to readers.
Next.js / Static Generation
Sign content in getStaticProps or at build time. The signed content is baked into the static output. No runtime signing required for static sites.
Signing Options Reference
| Parameter | Type | Description |
|---|---|---|
| text / file | string / file | Content to sign. Text for articles; multipart file for media. |
| author | string | Author name or identifier. Included in manifest assertion. |
| rights | bronze | silver | gold | Machine-readable rights tier for AI licensing. |
| encoding | vs | zwc | VS markers (default) or ZWC markers (Word-safe). Text only. |
| sentence_level | boolean | Enable Merkle tree per-sentence authentication. Default true. |
| fingerprint | string | Recipient ID for distribution fingerprinting. Enterprise tier only. |
Free Tier and Limits
The free tier provides 1,000 signing operations per month. Verification is unlimited and free at all tiers including without any account. The free tier includes full API access, both SDK libraries, and sentence-level Merkle tree authentication.
Paid tiers unlock higher volume limits, multi-media signing, fingerprinting, batch endpoints, and enterprise features including BYOK and on-premises deployment. See pricing for tier details.
Related Resources
Start Building
Free API key, no credit card, up to 1,000 documents per month. Verification is always free.