Skip to main content

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

ParameterTypeDescription
text / filestring / fileContent to sign. Text for articles; multipart file for media.
authorstringAuthor name or identifier. Included in manifest assertion.
rightsbronze | silver | goldMachine-readable rights tier for AI licensing.
encodingvs | zwcVS markers (default) or ZWC markers (Word-safe). Text only.
sentence_levelbooleanEnable Merkle tree per-sentence authentication. Default true.
fingerprintstringRecipient 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.

Related