Skip to main content
POST
/
api
/
research
/
measurement-jobs
Create a measurement job
curl --request POST \
  --url https://api.recoupable.com/api/research/measurement-jobs \
  --header 'Content-Type: application/json' \
  --data '
{
  "scope": {
    "catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "album_ids": [
      "<string>"
    ],
    "isrcs": [
      "<string>"
    ]
  },
  "platforms": [
    "spotify"
  ]
}
'
{
  "status": "success",
  "source": "historical",
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "state": "queued",
  "enqueued": 842,
  "skipped": 3,
  "album_count": 123,
  "estimated_cost_usd": 123
}

Body

application/json
scope
object
required

Provide exactly one of catalog_id, album_ids, or isrcs.

source
enum<string>
required

current = capture present counts (Apify snapshot). historical = enqueue Songstats deep backfill.

Available options:
current,
historical
platforms
string[]
Example:
["spotify"]

Response

Job accepted.

For current jobs, id is pollable. For historical jobs, enqueued/skipped summarize the backfill enqueue (the queue drains via the daily worker).

status
string
Example:

"success"

source
string
Example:

"historical"

id
string<uuid> | null

Job id for current jobs; null for historical.

state
enum<string> | null
Available options:
queued
Example:

"queued"

enqueued
integer | null

historical: recordings enqueued for backfill.

Example:

842

skipped
integer | null

historical: recordings already backfilled (skipped).

Example:

3

album_count
integer | null

current: albums the job will capture.

estimated_cost_usd
number | null

current: scraper cost estimate before spend.