Skip to main content
The PickFu CLI (@pickfu/cli) lets you create surveys, check results, and manage polls directly from your terminal. It supports structured JSON output for automation and CI/CD workflows.

Installation

Supported platforms

The curl/PowerShell installers download a standalone binary — no Node.js required. The npx method requires Node.js 20+ but needs no installation.

Authentication

Log in through the browser to connect the CLI to your PickFu account:
This opens a browser window for OAuth authorization. Once approved, your credentials are stored locally and refreshed automatically. For headless environments (servers, CI), use the --headless flag to print the authorization URL instead of opening a browser:

API key

For non-interactive environments like CI pipelines or automation scripts, use an API key instead of OAuth:
Avoid echo "sk_..." | pickfu auth set-key — the key appears in shell history. Use the interactive prompt or pipe from clipboard instead.
Token precedence: --token flag > PICKFU_API_KEY env var > stored OAuth token > stored API key.

Managing credentials

Timeouts and retries

Every CLI request has a deadline and gives up cleanly if the API takes too long to respond — so a stalled upstream will never hang your terminal or your CI job indefinitely.

Request timeout

Each request aborts after 120 seconds by default. Override it with the PICKFU_TIMEOUT_MS environment variable (in milliseconds):
When a request times out, the CLI exits with a Request timed out after Ns error and a reminder to raise PICKFU_TIMEOUT_MS if needed.

Automatic retries

The CLI automatically retries transient failures (network errors and 5xx responses) up to 3 times, but only for idempotent methodsGET, HEAD, PUT, and DELETE. POST requests are never auto-retried on network or 5xx errors, because a failed request may still have been processed server-side and retrying it could create duplicate surveys, duplicate publish charges, or duplicate tags. If a command like pickfu survey create, pickfu survey publish, or pickfu tag create fails with a network error or 5xx, the CLI surfaces the error immediately. Check whether the operation actually succeeded (for example with pickfu survey list or pickfu tag list) before retrying by hand. 429 Too Many Requests responses are retried for every method — a 429 means the server rejected the request before processing it, so repeating is safe. The CLI honors the Retry-After header.

Commands

All commands support --json for machine-readable output.

Surveys

Create a survey

The CLI walks you through poll creation interactively. You can also provide options via flags:
Image polls use --option-image-url instead of --option:
Or create from a JSON file:

Get survey details

List surveys

Update a draft survey

Or update from a JSON file:

Publish a survey

Publish a draft survey to start collecting responses:
Calling publish on an already-published survey returns a 400 Already published with a pointer to the /v1/surveys/{id}/respondents endpoint. Use pickfu survey add-respondents to extend the sample size of a running survey instead.

Stop a survey

Stop a live survey from collecting responses before it reaches its target sample size:

Clone a survey

Duplicate an existing survey as a new draft. Useful for re-running a poll with the same audience targeting and options, or for iterating on a previous test:

Extract image URLs

List the image URLs of every option in a survey — useful for downloading source images for further processing:

View responses

Get individual responses with explanations and demographics:

Watch a survey

Block until a survey completes — useful in scripts and CI:

Delete a survey

Delete a draft survey, or archive one that has already been published:
For a draft survey this permanently deletes it. For a published survey it archives instead — the survey still appears in pickfu survey list --status archived.

Targeting and reporting

List available targeting traits

Returns all demographic targeting traits available for the specified country. Pass each permalink value as a --targeting flag in survey create (e.g. --targeting amznpr). Targeting a non-US country also localizes the poll: PickFu translates the question, context, and options into that market’s language and returns results in both languages. See International surveys and translation.

List available reporting demographics

Returns all demographic breakdowns available for survey results.

Tags

Media

Generate an image

Generate an image from a text prompt and get a CDN URL:
Pass one or more reference images so the model can preserve product appearance across regenerated variants — useful for iterating on packaging, A+ content, or main-image variants:

Upload media

Upload an image or video to the PickFu CDN from a URL or local file:
YouTube, Vimeo, and Wistia URLs are returned as-is since PickFu embeds them natively.

Inspect media

Fetch metadata (content type, size, ETag) for an image or video URL without downloading the full payload:

Projects

Playbooks

Browse step-by-step research guides:

Schema introspection

View the full input/output schemas for any command — useful for building integrations:

Generic API access

Make authenticated API requests directly:

OpenClaw

See the OpenClaw page to run the PickFu CLI inside an agentic skill, including the ready-made Claw Hub market research workflow.

Supported question types

Every response includes a written explanation by default. When a respondent picks an option, ranks, rates, or clicks, they’re also required to explain why in their own words — that’s already part of every question type except screen_recording (which returns a transcription instead). Do not create a multi-question survey (--question twice) just to add a separate “explain why” question — it wastes a question slot (priced per question) and produces redundant data. Phrase your real question with --question, and PickFu collects the explanation automatically. The text comes back on each response as the explanation field. See surveys overview for more.

Sample sizes

Available respondent counts: 15, 30, 50, 75, 100, 200, 300, 500

Need help?

Or contact support@pickfu.com for assistance.