Skip to content

Command Line Interface

Thin wrapper around the C2PA signing and verification API. Calls POST /api/v1/sign, POST /api/v1/verify, and GET /api/v1/usage with your developer key.
Public verification without a key uses the browser at /verify or curl -F [email protected] https://api.krusade.dev/api/verify. See the REST API reference for the full contract.
Install
terminal
go install github.com/krusade/krusade/cmd/krusade@latest
$ krusade sign [flags] <file> [file ...]

Sign one or more files with a C2PA Content Credential under your org identity. Writes <name>.signed next to each input.

  • --author string
  • --title string
  • --claim-generator string
$ krusade sign --author "Jane Doe" photo.jpg
photo.jpg → photo.jpg.signed

$ krusade sign clip.mp4 still.png
clip.mp4 → clip.mp4.signed
still.png → still.png.signed
$ krusade verify [flags] <file> [file ...]

Verify C2PA credentials on local files via POST /api/v1/verify. Exits non-zero when status is not valid.

  • --json
$ krusade verify photo.jpg.signed
photo.jpg.signed: valid
  issuer: Krusade

$ krusade verify --json photo.jpg.signed
{
  "status": "valid",
  "issuer": "Krusade"
}
$ krusade batch [flags] <file> [file ...]

Sign up to 25 files in one batch via POST /api/v1/sign/batch. Writes a ZIP with signed assets and a status manifest.

  • -o, --output string (default signed-batch.zip)
$ krusade batch a.jpg b.png -o signed-batch.zip
batch → signed-batch.zip (2 files)
$ krusade usage

Print signs this month, free-tier usage, Team included pool, and credit balance from GET /api/v1/usage.

$ krusade usage
signs this month:          7
free signs used:           5 / 1000
credit balance:            198
Authentication

The CLI resolves your developer key in this order:

  1. --api-key krsd_... flag
  2. KRUSADE_API_KEY environment variable
  3. ~/.config/krusade/key file

Optional API base override (must end in /api): --api-base, KRUSADE_API_BASE, or legacy host-only KRUSADE_API_URL.

terminal
export KRUSADE_API_KEY=krsd_your_key_here
krusade sign photo.jpg

# or pass flags after the subcommand
krusade sign --api-key krsd_your_key_here --api-base https://api.krusade.dev/api photo.jpg