Use the CLI
Install globally:
npm i -g @exayard/cli
Log in
exayard login --api-key sk_live_...
Saves to ~/.exayard/config.json with mode 600. EXAYARD_API_KEY and EXAYARD_ORG_ID env vars always win over the config file.
List projects
exayard projects:list --org js79m7b3kfqd3vqzwx0kpcnryx7h2k4e
exayard projects:list --org js79m7b3kfqd3vqzwx0kpcnryx7h2k4e --json | jq '.items[].name'
The --org value is your Convex organization ID — get it from GET /v1/me (memberships[].orgId). It is not your organization's name.
Search help
exayard help-search "how do I run a takeoff"
Verify a webhook
echo "$RAW_BODY" | exayard webhooks:verify \
--signature "$EXAYARD_SIGNATURE" \
--secret whsec_...
Exits 1 on signature failure, with the stable failure code printed to stderr (invalid_signature, replay_window_exceeded, malformed_header).
Exit codes
0— success1— operation failed (expected, actionable)2— usage error (bad flags)3— network / unexpected error