{"components":{"schemas":{"Change":{"additionalProperties":false,"properties":{"change":{"description":"created: new since since; closed: closed now; updated: anything else a board can see changed, including a job listed again","enum":["created","updated","closed"],"examples":["updated"],"type":"string"},"id":{"description":"The job's id","examples":["bsj_8f3k2m9q"],"type":"string"},"job":{"anyOf":[{"$ref":"#/components/schemas/Job"},{"type":"null"}],"description":"The job, only when matches is true; otherwise null"},"matches":{"description":"The job is open and passes this request's filters now. true: upsert the job; false: hide it if you have it","examples":[true],"type":"boolean"}},"required":["change","id","matches","job"],"type":"object"},"ChangesPage":{"additionalProperties":false,"properties":{"changes":{"items":{"$ref":"#/components/schemas/Change"},"type":"array"},"more":{"description":"true: call again with next_since now","examples":[false],"type":"boolean"},"next_since":{"description":"Pass as since next time","examples":["418230"],"type":"string"}},"required":["changes","next_since","more"],"type":"object"},"Company":{"additionalProperties":false,"properties":{"domain":{"description":"Filled once Backspin knows it","examples":["pyebarkerfs.com"],"type":["string","null"]},"name":{"examples":["Pye-Barker Fire \u0026 Safety"],"type":"string"}},"required":["name","domain"],"type":"object"},"EmploymentType":{"additionalProperties":false,"properties":{"from":{"description":"ats (the employer's structured field), title or description","examples":["ats"],"type":["string","null"]},"value":{"description":"full_time, part_time, contract, temporary or internship","examples":["full_time"],"type":["string","null"]}},"required":["value","from"],"type":"object"},"ErrorDetail":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string"},"message":{"description":"Error message text","type":"string"},"value":{"description":"The value at the given location"}},"type":"object"},"ErrorModel":{"additionalProperties":false,"properties":{"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","examples":["Property foo is required but is missing."],"type":"string"},"errors":{"description":"Optional list of individual error details","items":{"$ref":"#/components/schemas/ErrorDetail"},"type":["array","null"]},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","examples":["https://example.com/error-log/abc123"],"format":"uri","type":"string"},"status":{"description":"HTTP status code","examples":[400],"format":"int64","type":"integer"},"title":{"description":"A short, human-readable summary of the problem type. This value should not change between occurrences of the error.","examples":["Bad Request"],"type":"string"},"type":{"default":"about:blank","description":"A URI reference to human-readable documentation for the error.","examples":["https://example.com/errors/example"],"format":"uri","type":"string"}},"type":"object"},"Flags":{"additionalProperties":false,"properties":{"commission_only":{"description":"The job says pay is commission only","examples":[false],"type":"boolean"},"door_to_door":{"description":"The job says the work is selling door to door","examples":[false],"type":"boolean"},"retail_sales":{"description":"The title sells on a store floor, car lot or showroom","examples":[false],"type":"boolean"}},"required":["commission_only","door_to_door","retail_sales"],"type":"object"},"Job":{"additionalProperties":false,"properties":{"apply_url":{"description":"The employer's job page","examples":["https://pyebarkerfire.wd1.myworkdayjobs.com/en-US/PB_V2/job/Denver-CO/Fire-Alarm-Technician_JR113627"],"type":"string"},"categories":{"description":"Backspin categories: account_executive, sales, electrical","examples":[["electrical"]],"items":{"type":"string"},"type":"array"},"closed_at":{"description":"Null while the job is open","format":"date-time","type":["string","null"]},"company":{"$ref":"#/components/schemas/Company"},"department":{"examples":["Service"],"type":["string","null"]},"description_html":{"description":"The employer's HTML as published; sanitize before rendering. Null unless description_format includes html","examples":["\u003cp\u003eInstall and service fire alarm systems.\u003c/p\u003e"],"type":["string","null"]},"description_markdown":{"description":"The description as Markdown (CommonMark). Null unless description_format includes markdown","examples":["Install and service fire alarm systems."],"type":["string","null"]},"description_text":{"description":"The description as plain text: paragraphs apart by a blank line, list items starting with \"- \". Null unless description_format includes text","examples":["Install and service fire alarm systems."],"type":["string","null"]},"employment_type":{"$ref":"#/components/schemas/EmploymentType"},"first_seen_at":{"description":"When Backspin first saw the job","examples":["2026-10-28T18:00:00Z"],"format":"date-time","type":"string"},"flags":{"$ref":"#/components/schemas/Flags"},"id":{"description":"Backspin's id, stable forever","examples":["bsj_8f3k2m9q"],"type":"string"},"locations":{"items":{"$ref":"#/components/schemas/Location"},"type":"array"},"metros":{"description":"Backspin metro tags","examples":[["denver"]],"items":{"type":"string"},"type":"array"},"pay":{"$ref":"#/components/schemas/Pay"},"posted_at":{"description":"When the employer says it was posted; null when unstated","examples":["2026-10-28T14:02:00Z"],"format":"date-time","type":["string","null"]},"seniority":{"description":"intern, entry, mid, senior, lead, manager, director, vp or executive, read from the title; null when the title names no level","examples":["senior"],"type":["string","null"]},"source":{"$ref":"#/components/schemas/Source"},"status":{"enum":["open","closed"],"type":"string"},"title":{"examples":["Fire Alarm Technician"],"type":"string"},"updated_at":{"description":"When the listing last changed","examples":["2026-10-30T06:00:00Z"],"format":"date-time","type":"string"},"workplace":{"$ref":"#/components/schemas/Workplace"}},"required":["id","status","title","company","description_html","description_text","description_markdown","apply_url","locations","workplace","employment_type","pay","flags","department","seniority","categories","metros","posted_at","first_seen_at","updated_at","closed_at","source"],"type":"object"},"JobsPage":{"additionalProperties":false,"properties":{"jobs":{"items":{"$ref":"#/components/schemas/Job"},"type":"array"},"next_cursor":{"description":"Pass as cursor for the next page; null on the last page","examples":["ajEuMTI4NzM"],"type":["string","null"]}},"required":["jobs","next_cursor"],"type":"object"},"Location":{"additionalProperties":false,"properties":{"city":{"examples":["Denver"],"type":["string","null"]},"country":{"description":"ISO 3166-1 alpha-2 where known","examples":["US"],"type":["string","null"]},"region":{"description":"State or province; US states as two-letter codes","examples":["CO"],"type":["string","null"]},"text":{"description":"As the employer wrote it, or the parts joined","examples":["Denver, CO"],"type":["string","null"]}},"required":["text","city","region","country"],"type":"object"},"Pay":{"additionalProperties":false,"properties":{"currency":{"description":"ISO 4217","examples":["USD"],"type":["string","null"]},"from":{"description":"ats: the employer's structured pay; description: read from the job description","examples":["ats"],"type":["string","null"]},"max":{"examples":[42],"format":"double","type":["number","null"]},"min":{"examples":[32],"format":"double","type":["number","null"]},"period":{"description":"year, month, week, day or hour","examples":["hour"],"type":["string","null"]},"period_from":{"description":"ats, description or amount; amount: judged from the size of the amounts","examples":["ats"],"type":["string","null"]},"text":{"description":"The exact description text pay was read from, when from is description","type":["string","null"]}},"required":["min","max","currency","period","from","period_from","text"],"type":"object"},"Source":{"additionalProperties":false,"properties":{"job_id":{"description":"The employer's own id for the job on that platform","examples":["JR113627"],"type":"string"},"platform":{"description":"The employer's applicant tracking system","examples":["workday"],"type":"string"}},"required":["platform","job_id"],"type":"object"},"Workplace":{"additionalProperties":false,"properties":{"from":{"description":"ats (the employer's structured field), location, title or description","examples":["ats"],"type":["string","null"]},"value":{"description":"onsite, remote or hybrid","examples":["onsite"],"type":["string","null"]}},"required":["value","from"],"type":"object"}},"securitySchemes":{"bearer":{"description":"An API key: Authorization: Bearer bsk_live_…","scheme":"bearer","type":"http"}}},"info":{"description":"Jobs collected from employers' own applicant tracking systems. Guides: https://backspin.io/docs","title":"Backspin Jobs API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/v1/changes":{"get":{"operationId":"listChanges","parameters":[{"description":"Backspin category. Repeat to match any of several","explode":true,"in":"query","name":"category","schema":{"items":{"enum":["account_executive","sales","electrical"],"type":"string"},"maxItems":10,"type":["array","null"]}},{"description":"ISO 3166-1 alpha-2 country of any of the job's locations","explode":false,"in":"query","name":"country","schema":{"pattern":"^[A-Z]{2}$","type":"string"}},{"description":"State or province code of any of the job's locations; with country, of the same location","explode":false,"in":"query","name":"region","schema":{"pattern":"^[A-Za-z0-9]{1,3}$","type":"string"}},{"description":"Backspin metro tag","explode":false,"in":"query","name":"metro","schema":{"enum":["denver"],"type":"string"}},{"description":"Only jobs with this workplace, stated or read from the job's text","explode":false,"in":"query","name":"workplace","schema":{"enum":["onsite","remote","hybrid"],"type":"string"}},{"description":"Only jobs with this employment type, stated or read from the job's text","explode":false,"in":"query","name":"employment_type","schema":{"enum":["full_time","part_time","contract","temporary","internship"],"type":"string"}},{"description":"Only jobs with pay, stated by the ATS or read from the description (pay.from says which)","explode":false,"in":"query","name":"has_pay","schema":{"type":"boolean"}},{"description":"Only jobs whose pay came from here","explode":false,"in":"query","name":"pay_from","schema":{"enum":["ats","description"],"type":"string"}},{"description":"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","explode":false,"in":"query","name":"posted_since","schema":{"maxLength":40,"type":"string"}},{"description":"Every word must appear in the title or company name; up to 10 words","explode":false,"in":"query","name":"q","schema":{"maxLength":200,"type":"string"}},{"description":"Leave out jobs with this flag, or with hourly_pay, jobs paid per hour (jobs without pay stay). Repeat to leave out several","explode":true,"in":"query","name":"exclude","schema":{"items":{"enum":["commission_only","door_to_door","retail_sales","hourly_pay"],"type":"string"},"maxItems":4,"type":["array","null"]}},{"description":"Only jobs paid per one of these periods; jobs without pay never match. Repeat to allow several","explode":true,"in":"query","name":"pay_period","schema":{"items":{"enum":["year","month","week","day","hour"],"type":"string"},"maxItems":5,"type":["array","null"]}},{"description":"Only jobs paid in this ISO 4217 currency","explode":false,"in":"query","name":"pay_currency","schema":{"pattern":"^[A-Z]{3}$","type":"string"}},{"description":"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","explode":false,"in":"query","name":"pay_at_least","schema":{"format":"double","maximum":100000000,"minimum":1,"type":"number"}},{"description":"summary: every description field is null, for a much smaller answer","explode":false,"in":"query","name":"fields","schema":{"default":"full","enum":["full","summary"],"type":"string"}},{"description":"Which description fields to fill: html (the default), text or markdown. Repeat to get several","explode":true,"in":"query","name":"description_format","schema":{"items":{"enum":["html","text","markdown"],"type":"string"},"maxItems":3,"type":["array","null"]}},{"description":"next_since from your previous call. Omit it once, to start from now.","explode":false,"in":"query","name":"since","schema":{"maxLength":19,"pattern":"^[0-9]+$","type":"string"}},{"description":"Changes per page","explode":false,"in":"query","name":"limit","schema":{"default":500,"format":"int64","maximum":500,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesPage"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Unauthorized"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Conflict"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Service Unavailable"}},"summary":"Changes since you last looked","tags":["Endpoints"]}},"/v1/jobs":{"get":{"operationId":"listJobs","parameters":[{"description":"Backspin category. Repeat to match any of several","explode":true,"in":"query","name":"category","schema":{"items":{"enum":["account_executive","sales","electrical"],"type":"string"},"maxItems":10,"type":["array","null"]}},{"description":"ISO 3166-1 alpha-2 country of any of the job's locations","explode":false,"in":"query","name":"country","schema":{"pattern":"^[A-Z]{2}$","type":"string"}},{"description":"State or province code of any of the job's locations; with country, of the same location","explode":false,"in":"query","name":"region","schema":{"pattern":"^[A-Za-z0-9]{1,3}$","type":"string"}},{"description":"Backspin metro tag","explode":false,"in":"query","name":"metro","schema":{"enum":["denver"],"type":"string"}},{"description":"Only jobs with this workplace, stated or read from the job's text","explode":false,"in":"query","name":"workplace","schema":{"enum":["onsite","remote","hybrid"],"type":"string"}},{"description":"Only jobs with this employment type, stated or read from the job's text","explode":false,"in":"query","name":"employment_type","schema":{"enum":["full_time","part_time","contract","temporary","internship"],"type":"string"}},{"description":"Only jobs with pay, stated by the ATS or read from the description (pay.from says which)","explode":false,"in":"query","name":"has_pay","schema":{"type":"boolean"}},{"description":"Only jobs whose pay came from here","explode":false,"in":"query","name":"pay_from","schema":{"enum":["ats","description"],"type":"string"}},{"description":"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","explode":false,"in":"query","name":"posted_since","schema":{"maxLength":40,"type":"string"}},{"description":"Every word must appear in the title or company name; up to 10 words","explode":false,"in":"query","name":"q","schema":{"maxLength":200,"type":"string"}},{"description":"Leave out jobs with this flag, or with hourly_pay, jobs paid per hour (jobs without pay stay). Repeat to leave out several","explode":true,"in":"query","name":"exclude","schema":{"items":{"enum":["commission_only","door_to_door","retail_sales","hourly_pay"],"type":"string"},"maxItems":4,"type":["array","null"]}},{"description":"Only jobs paid per one of these periods; jobs without pay never match. Repeat to allow several","explode":true,"in":"query","name":"pay_period","schema":{"items":{"enum":["year","month","week","day","hour"],"type":"string"},"maxItems":5,"type":["array","null"]}},{"description":"Only jobs paid in this ISO 4217 currency","explode":false,"in":"query","name":"pay_currency","schema":{"pattern":"^[A-Z]{3}$","type":"string"}},{"description":"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","explode":false,"in":"query","name":"pay_at_least","schema":{"format":"double","maximum":100000000,"minimum":1,"type":"number"}},{"description":"summary: every description field is null, for a much smaller answer","explode":false,"in":"query","name":"fields","schema":{"default":"full","enum":["full","summary"],"type":"string"}},{"description":"Which description fields to fill: html (the default), text or markdown. Repeat to get several","explode":true,"in":"query","name":"description_format","schema":{"items":{"enum":["html","text","markdown"],"type":"string"},"maxItems":3,"type":["array","null"]}},{"description":"Jobs per page","explode":false,"in":"query","name":"limit","schema":{"default":100,"format":"int64","maximum":500,"minimum":1,"type":"integer"}},{"description":"next_cursor from the previous page","explode":false,"in":"query","name":"cursor","schema":{"maxLength":64,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobsPage"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Unauthorized"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Service Unavailable"}},"summary":"Search open jobs","tags":["Endpoints"]}},"/v1/jobs/{id}":{"get":{"operationId":"getJob","parameters":[{"description":"summary: every description field is null, for a much smaller answer","explode":false,"in":"query","name":"fields","schema":{"default":"full","enum":["full","summary"],"type":"string"}},{"description":"Which description fields to fill: html (the default), text or markdown. Repeat to get several","explode":true,"in":"query","name":"description_format","schema":{"items":{"enum":["html","text","markdown"],"type":"string"},"maxItems":3,"type":["array","null"]}},{"description":"A job id","in":"path","name":"id","required":true,"schema":{"examples":["bsj_8f3k2m9q"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Unauthorized"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Service Unavailable"}},"summary":"One job, open or closed","tags":["Endpoints"]}}},"security":[{"bearer":[]}],"servers":[{"url":"https://app.backspin.io"}]}