Skip to main content
This walks you through one complete loop: authenticate, find something, enrich a row you already own. It takes about five minutes and costs a handful of credits.

Prerequisites

  • A Unif workspace. Create one at app.unif.dev.
  • A live API key from Settings → API keys. Keys look like unif_sk_live_....
  • curl, or any HTTP client.
Treat the key like a password. It carries full access to the workspace, and Unif shows it only once. If it leaks, roll it from the dashboard.

1. Confirm the key works

Every request is a bearer token away.
Response
The channels array is what your workspace is entitled to. Anything outside it returns a coverage_error rather than silently empty results.

2. See what you can query

Markets and granularities differ per channel, and they change. Read them rather than hard-coding them.
Each market reports its native currency, its time zone, the earliest date with data, and the period granularities it supports. Keep this in your config sync, not in a constant. Search starts from filters, not identifiers. This finds affordable US beauty products that broke out this week and pay a decent commission.
A trimmed response:
Three things worth noticing, because they hold for every endpoint:
  • period is what was actually measured. If adjusted is true, your dates were snapped to a boundary the channel supports. See Periods and currency.
  • next_cursor drives pagination. Never build page offsets yourself.
  • meta.completeness tells you how much of the record came back populated.

4. Enrich a row you already have

Searching is for discovery. Most production work is the other direction: you have a list, and you want Unif data on it.
Each result echoes your ref, so joining back onto your own rows is a lookup rather than a guess. Results arrive in the order you sent them, and one failure does not fail the batch:
Requesting fields is not just tidier — it lowers the credit cost of the call. And row-2 above was free: the cascade ran to the end without verifying a match, and you are only charged for hits. See Credits.

What to do next

Store the IDs

Persist shp_… and prd_… IDs on your own rows so you never have to resolve twice.

Stop polling

Put the set behind a tracker and let webhooks tell you when something moves.

Go bulk

More than 100 rows, or an export? Hand it to a job.

Handle failure well

The error taxonomy, and which failures are worth retrying.