Provenix Developer Guide

Add cryptographic provenance to your AI-generated content in under 5 minutes.

Quick Start

1. Install the SDK

npm install @provenix/sdk

2. Sign Your Content

import { ProvenixClient } from '@provenix/sdk'

const client = new ProvenixClient({
  apiKey: 'prov_live_...',
  baseUrl: 'https://provenixapi-production.up.railway.app'
})

// Sign text
const result = await client.sign('Your AI-generated content here', {
  model: 'gpt-5.2',
  userId: 'user_123'
})

console.log(result.manifestId)
console.log(result.verificationUrl)

3. Embed the Widget

<!-- Add widget script -->
<script src="https://unpkg.com/@provenix/widget@latest/dist/provenix-widget.js"></script>

<!-- Display verification badge -->
<provenix-widget
  manifest='{"hash":"...","timestamp":"...","signature":"..."}'>
</provenix-widget>
Was this helpful?

Authentication

All API requests (except public manifest lookup) require an API key in the Authorization header:

Authorization: Bearer prov_live_your_key_here

API keys start with prov_live_ for production or prov_test_ for testing.

Was this helpful?

POST /api/v1/sign

Generate a cryptographic signature for text.

Headers

Authorization: Bearer prov_live_...
Content-Type: application/json

Request Body

{
  "text": "Your content here",
  "metadata": {
    "model": "gpt-5.2",
    "userId": "user_123"
  }
}

Response

{
  "manifestId": "a1b2c3d4-...",
  "hash": "sha256:9d3c...",
  "signature": "ed25519:ab390f...",
  "verificationUrl": "https://provenix.dev/verify/a1b2c3d4-..."
}
Was this helpful?

POST /api/v1/verify

Verify a signed manifest.

Request Body

{
  "text": "Your content here",
  "signature": "ed25519:ab390f...",
  "manifest": { ... }
}

Response

{
  "valid": true,
  "hashMatch": true,
  "signatureValid": true,
  "timestamp": "2025-01-23T12:40:12.581Z"
}
Was this helpful?

GET /api/v1/manifests/:id

Fetch a signed manifest for public verification (no auth required).

Example

GET https://provenixapi-production.up.railway.app/api/v1/manifests/a1b2c3d4-...
Was this helpful?

Error Codes

All errors follow consistent JSON structure with HTTP status codes and descriptive messages.

Error Response Format

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "The API key provided is invalid or expired",
    "statusCode": 401
  }
}

Common Error Codes

CodeStatusDescription
INVALID_API_KEY401API key is missing, invalid, or expired
MISSING_CONTENT400Request body missing required 'text' field
CONTENT_TOO_LARGE413Content exceeds maximum size limit (10MB)
RATE_LIMIT_EXCEEDED429Monthly request quota exceeded for your plan
INVALID_SIGNATURE400Signature format is invalid or malformed
MANIFEST_NOT_FOUND404Manifest ID does not exist or has been deleted
VERIFICATION_FAILED422Content hash or signature verification failed
INTERNAL_ERROR500Unexpected server error - please contact support

Rate Limit Response Headers

All responses include rate limit headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1706745600
Was this helpful?

TypeScript SDK

The Provenix TypeScript SDK provides a type-safe interface for all API operations.

import { ProvenixClient } from '@provenix/sdk'

const provenix = new ProvenixClient({
  apiKey: process.env.PROVENIX_API_KEY,
  baseUrl: 'https://provenixapi-production.up.railway.app'
})

// Sign content
const result = await provenix.sign(text, {
  model: 'gpt-5.2',
  userId: 'user_123'
})

// Verify content
const verification = await provenix.verify({
  text: originalText,
  signature: result.signature,
  manifest: result.manifest
})
Was this helpful?

Embed Widget

The Provenix widget is a drop-in web component that displays verification status.

Include the Script

<script src="https://unpkg.com/@provenix/widget@latest/dist/provenix-widget.js"></script>

Add the Widget

<provenix-widget manifest='...'></provenix-widget>

Widget Theme Comparison

Drag the slider to compare how the verification badge appears in light and dark themes:

Dark Theme

Provenix verification widget - dark theme

Light Theme

Provenix verification widget - light theme

💡 Tip: Drag the slider left and right to see the widget in both themes

Was this helpful?

Rate Limits

Free Tier: 1,000 requests/month

Starter: 8,000 requests/month

Growth: 20,000 requests/month

Pro: 50,000 requests/month

Enterprise: Custom limits

Rate limit errors return 429 Too Many Requests

Was this helpful?

Need Help?

Questions about integration? Want to discuss your use case?