Integrations

Ships today: REST API, Go/TS SDKs, CLI, WordPress, Ghost, Strapi, and org verify webhooks. Dedicated CI Actions and the browser extension store listing are still landing. See current docs · Webhooks.

Verify everywhere

Sign content where you publish it. Verify it where you consume it. Krusade integrates into every layer of the content lifecycle.

CMS

WordPress Plugin

Sign media on upload from the WordPress admin. Ships in integrations/wordpress/.

# Install from the repo
wp plugin install ./integrations/wordpress \
  --activate

# Or copy krusade-c2pa.php into wp-content/plugins/
# then set your krsd_* key in Settings → Krusade
CMS

Ghost

Sign-on-publish sidecar: Ghost media.uploaded webhook → Krusade /api/v1/sign. Ships in integrations/ghost/.

# Copy integrations/ghost, set env, npm start
KRUSADE_API_KEY=krsd_... \
WEBHOOK_SECRET=your-shared-secret \
SIGNED_OUT_DIR=./signed \
  npm start

# Point Ghost Custom Integration webhook (media.uploaded)
# at http://your-host:8791/hooks/ghost-media
CMS

Strapi

Sign uploads on afterCreate for the Upload plugin (local provider overwrite). Ships in integrations/strapi/krusade-c2pa/.

# Copy into src/plugins/krusade-c2pa, enable in config/plugins.js
'krusade-c2pa': {
  enabled: true,
  config: {
    apiKey: process.env.KRUSADE_API_KEY,
    apiBase: 'https://api.krusade.dev',
  },
},
API

REST API

Embed signing and verification in any application. One POST to sign; one POST to verify.

# Sign content
curl -X POST https://api.krusade.dev/api/v1/sign \
  -H "Authorization: Bearer krsd_..." \
  -F "[email protected]" \
  -o photo.signed.jpg

# Verify content (public)
curl -X POST https://api.krusade.dev/api/verify \
  -F "[email protected]"
SDK

Go & TypeScript SDKs

Native clients for sign, verify, and usage. Drop into services, CLIs, and Node pipelines.

import krusade "github.com/krusade/sdk-go"
// or: import { Client } from "@krusade/sdk"

client := krusade.New("krsd_...")
result, err := client.Sign(ctx, "photo.jpg",
  krusade.SignOptions{Author: "Jane Doe"})
report, err := client.Verify(ctx, result.OutputPath)
CLI

Command Line

Sign and verify from your terminal. Integrate into build pipelines and release workflows.

# Sign a release
krusade sign ./photo.jpg --api-key "$KRUSADE_API_KEY"

# Verify authenticity
krusade verify ./photo.jpg.signed
WEBHOOK

Org verify webhooks

Team owner/admin registers an HTTPS URL in the dashboard (Organization). We POST verify events with HMAC-SHA256. See /docs/webhooks.

# Delivery (HMAC in X-Krusade-Signature)
POST https://your-server.com/hooks/krusade
{
  "event": "verify.event",
  "organization_id": "…",
  "status": "valid",
  "issuer": "CN=…",
  "errors": []
}

# Manage endpoints: Dashboard → Organization → Webhooks
CI/CD

Pipeline Integration

Sign releases in GitHub Actions, GitLab CI, or Jenkins via the CLI or REST API. Dedicated Actions are still landing.

# Example: sign in CI with the CLI
- run: krusade sign ./dist/hero.jpg
  env:
    KRUSADE_API_KEY: ${{ secrets.KRUSADE_API_KEY }}
BROWSER

Browser Extension

One-click verification for any file. Check authenticity without leaving the browser. Early access — store listing still landing.

// Content script (preview)
const hash = await krusade.hash(file)
const receipt = await krusade.verify(hash)

if (receipt.valid) {
  showBadge('Verified by ' + receipt.org)
} else {
  showWarning('Content not verified')
}