For developers

Your lists, from a terminal.

The giftafari CLI calls the same operations as the app, over the REST API at https://api.giftafari.com/v1. It is in early access and not yet published to npm.

Sign in to a group

giftafari auth login --server https://app.giftafari.com

The CLI prints a link and a code (on macOS it also opens the link). Approve the device for one gift group and the terminal finishes signing in. Each group you approve keeps its own credential: giftafari auth list shows them, and giftafari groups use <group-id> picks the one later commands use.

Credentials live in the macOS Keychain, or in ~/.config/giftafari/credentials.json (readable only by you) on other systems.

Sign in to your account

giftafari auth account --server https://app.giftafari.com

Account commands use a separate sign-in: groups list (every group you belong to), profile, notifications, export, and account closure.

Run commands

giftafari lists list
giftafari gifts list --data '{"listId":"…"}' --json
giftafari account export --json

Every command is giftafari <resource> <action>. Pass input as JSON with --data, and add --json for the full response envelope. Run giftafari --help for the complete list.

Each run of a create command makes something new. If a create times out, list the resource before running it again, or use the REST API with your own idempotency key.

Confirm sensitive changes

Lifecycle changes to a gift, list, person, or claim (such as trash or restore), removing a member, transferring ownership, leaving a group, revoking connections, and closing your account ask you to type yes first. In scripts, pass --yes instead. Closing your account also needs its confirmation field in --data.

When the CLI asks you to sign in again

The authorization expired, was revoked, or was made for an older API address. Run giftafari auth login again for a group, or giftafari auth account for account commands.

Related

The REST API guide covers tokens, writes, approvals, and scopes. Every endpoint is in the OpenAPI document.