Skip to content

Changes since you last looked

GET
/v1/changes
curl --request GET \
--url 'https://app.backspin.io/v1/changes?metro=denver&workplace=onsite&employment_type=full_time&pay_from=ats&fields=full&limit=500' \
--header 'Authorization: Bearer <token>'
category
Array<string> | null
<= 10 items
Allowed values: account_executive sales electrical

Backspin category. Repeat to match any of several

country
string
/^[A-Z]{2}$/

ISO 3166-1 alpha-2 country of any of the job’s locations

region
string
/^[A-Za-z0-9]{1,3}$/

State or province code of any of the job’s locations; with country, of the same location

metro
string
Allowed values: denver

Backspin metro tag

workplace
string
Allowed values: onsite remote hybrid

Only jobs with this workplace, stated or read from the job’s text

employment_type
string
Allowed values: full_time part_time contract temporary internship

Only jobs with this employment type, stated or read from the job’s text

has_pay
boolean

Only jobs with pay, stated by the ATS or read from the description (pay.from says which)

pay_from
string
Allowed values: ats description

Only jobs whose pay came from here

posted_since
string
<= 40 characters

Posted on or after this date (2026-10-01, UTC) or RFC 3339 time; jobs with no stated date count from when Backspin first saw them

q
string
<= 200 characters

Every word must appear in the title or company name; up to 10 words

exclude
Array<string> | null
<= 4 items
Allowed values: commission_only door_to_door retail_sales hourly_pay

Leave out jobs with this flag, or with hourly_pay, jobs paid per hour (jobs without pay stay). Repeat to leave out several

pay_period
Array<string> | null
<= 5 items
Allowed values: year month week day hour

Only jobs paid per one of these periods; jobs without pay never match. Repeat to allow several

pay_currency
string
/^[A-Z]{3}$/

Only jobs paid in this ISO 4217 currency

pay_at_least
number format: double
>= 1 <= 100000000

Only jobs whose top of range (max, else min) is at least this, in the job’s own period and currency. Needs exactly one pay_period and a pay_currency

fields
string
default: full
Allowed values: full summary

Summary: description_html is null, for a much smaller answer

since
string
<= 19 characters /^[0-9]+$/

Next_since from your previous call. Omit it once, to start from now.

limit
integer format: int64
default: 500 >= 1 <= 500

Changes per page

OK

Media typeapplication/json
object
changes
required
Array<object>
object
change
required

Created: new since since; closed: closed now; updated: anything else a board can see changed, including a job listed again

string
Allowed values: created updated closed
id
required

The job’s id

string
job
required
Any of:
object
apply_url
required

The employer’s job page

string
categories
required

Backspin categories: account_executive, sales, electrical

Array<string>
closed_at
required

Null while the job is open

string | null format: date-time
company
required
object
domain
required

Filled once Backspin knows it

string | null
name
required
string
department
required
string | null
description_html
required

The employer’s HTML as published; sanitize before rendering. Null with fields=summary

string | null
employment_type
required
object
from
required

Ats (the employer’s structured field), title or description

string | null
value
required

Full_time, part_time, contract, temporary or internship

string | null
first_seen_at
required

When Backspin first saw the job

string format: date-time
flags
required
object
commission_only
required

The job says pay is commission only

boolean
door_to_door
required

The job says the work is selling door to door

boolean
retail_sales
required

The title sells on a store floor, car lot or showroom

boolean
id
required

Backspin’s id, stable forever

string
locations
required
Array<object>
object
city
required
string | null
country
required

ISO 3166-1 alpha-2 where known

string | null
region
required

State or province; US states as two-letter codes

string | null
text
required

As the employer wrote it, or the parts joined

string | null
metros
required

Backspin metro tags

Array<string>
pay
required
object
currency
required

ISO 4217

string | null
from
required

Ats: the employer’s structured pay; description: read from the job description

string | null
max
required
number | null format: double
min
required
number | null format: double
period
required

Year, month, week, day or hour

string | null
period_from
required

Ats, description or amount; amount: judged from the size of the amounts

string | null
text
required

The exact description text pay was read from, when from is description

string | null
posted_at
required

When the employer says it was posted; null when unstated

string | null format: date-time
seniority
required

Intern, entry, mid, senior, lead, manager, director, vp or executive, read from the title; null when the title names no level

string | null
source
required
object
job_id
required

The employer’s own id for the job on that platform

string
platform
required

The employer’s applicant tracking system

string
status
required
string
Allowed values: open closed
title
required
string
updated_at
required

When the listing last changed

string format: date-time
workplace
required
object
from
required

Ats (the employer’s structured field), location, title or description

string | null
value
required

Onsite, remote or hybrid

string | null
matches
required

The job is open and passes this request’s filters now. true: upsert the job; false: hide it if you have it

boolean
more
required

True: call again with next_since now

boolean
next_since
required

Pass as since next time

string

Example

{
"changes": [
{
"change": "created",
"id": "bsj_8f3k2m9q",
"job": {
"apply_url": "https://pyebarkerfire.wd1.myworkdayjobs.com/en-US/PB_V2/job/Denver-CO/Fire-Alarm-Technician_JR113627",
"categories": [
"electrical"
],
"company": {
"domain": "pyebarkerfs.com",
"name": "Pye-Barker Fire & Safety"
},
"department": "Service",
"description_html": "<p>Install and service fire alarm systems.</p>",
"employment_type": {
"from": "ats",
"value": "full_time"
},
"first_seen_at": "2026-10-28T18:00:00Z",
"flags": {
"commission_only": false,
"door_to_door": false,
"retail_sales": false
},
"id": "bsj_8f3k2m9q",
"locations": [
{
"city": "Denver",
"country": "US",
"region": "CO",
"text": "Denver, CO"
}
],
"metros": [
"denver"
],
"pay": {
"currency": "USD",
"from": "ats",
"max": 42,
"min": 32,
"period": "hour",
"period_from": "ats"
},
"posted_at": "2026-10-28T14:02:00Z",
"seniority": "senior",
"source": {
"job_id": "JR113627",
"platform": "workday"
},
"status": "open",
"title": "Fire Alarm Technician",
"updated_at": "2026-10-30T06:00:00Z",
"workplace": {
"from": "ats",
"value": "onsite"
}
},
"matches": true
}
],
"more": false,
"next_since": "418230"
}

Unauthorized

Media typeapplication/problem+json
object
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}

Conflict

Media typeapplication/problem+json
object
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}

Unprocessable Entity

Media typeapplication/problem+json
object
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}

Too Many Requests

Media typeapplication/problem+json
object
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}

Internal Server Error

Media typeapplication/problem+json
object
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}

Service Unavailable

Media typeapplication/problem+json
object
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}