{"openapi":"3.0.0","info":{"version":"1.0.0","title":"JobsPipe API","description":"Every job posting, one API. Search live job postings from 30+ sources."},"servers":[{"url":"https://api.jobspipe.dev","description":"Production"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Your JobsPipe API key (starts with jp_live_)."}},"schemas":{},"parameters":{}},"paths":{"/api/users/usage":{"get":{"operationId":"getUsage","tags":["Account"],"summary":"Monthly API request usage (last 6 months)","responses":{"200":{"description":"Usage by month","content":{"application/json":{"schema":{"type":"object","properties":{"thisMonth":{"type":"number"},"months":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string"},"count":{"type":"number"}},"required":["month","count"]}}},"required":["thisMonth","months"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/api/users/me":{"get":{"operationId":"getCurrentUser","tags":["Account"],"summary":"Get current user & usage","responses":{"200":{"description":"Get current user","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean"},"image":{"type":"string","nullable":true},"apiUsed":{"type":"number"},"subscriptions":{"type":"array","items":{"type":"object","properties":{"plan":{"type":"string"},"status":{"anyOf":[{"type":"string","enum":["active"]},{"type":"string","enum":["trialing"]}]},"periodEnd":{"type":"string"}},"required":["plan","status","periodEnd"]}}},"required":["id","name","email","emailVerified","image","apiUsed","subscriptions"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/jobs/search":{"post":{"operationId":"searchJobs","tags":["Jobs"],"summary":"Search job postings","description":"Search live job postings from 30+ sources, normalized into a single schema.","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"description":"Max results to return. Capped by your plan's page size."},"offset":{"type":"integer","minimum":0,"description":"Results to skip (offset pagination)."},"page":{"type":"integer","minimum":0,"description":"Page index (alternative to offset)."},"include_total_results":{"type":"boolean","description":"Populate metadata.total_results (otherwise null)."},"job_title_or":{"type":"array","items":{"type":"string"},"description":"Match jobs whose title contains any of these."},"job_title_not":{"type":"array","items":{"type":"string"},"description":"Exclude jobs whose title contains any of these."},"description_or":{"type":"array","items":{"type":"string"},"description":"Match jobs whose description contains any of these (e.g. a skill or tech)."},"description_not":{"type":"array","items":{"type":"string"},"description":"Exclude jobs whose description contains any of these."},"employment_type_or":{"type":"array","items":{"type":"string"},"description":"Match any employment type: full-time, part-time, contract, temporary, internship."},"source_or":{"type":"array","items":{"type":"string"},"description":"Match any collector source/platform: linkedin, ycombinator."},"job_country_code_or":{"type":"array","items":{"type":"string"},"description":"Match any of these ISO country codes, e.g. [\"US\",\"GB\"]."},"job_country_code_not":{"type":"array","items":{"type":"string"},"description":"Exclude these ISO country codes."},"posted_at_max_age_days":{"type":"integer","description":"Only postings newer than this many days."},"posted_at_gte":{"type":"string","description":"Only postings on or after this date (YYYY-MM-DD)."},"posted_at_lte":{"type":"string","description":"Only postings on or before this date (YYYY-MM-DD)."},"company_name_or":{"type":"array","items":{"type":"string"},"description":"Match any of these company names (exact)."},"company_name_partial_match_or":{"type":"array","items":{"type":"string"},"description":"Match any of these company names (partial)."},"job_seniority_or":{"type":"array","items":{"type":"string"},"description":"Match any of these seniority levels."},"remote":{"type":"boolean","description":"true for remote-only, false to exclude remote."},"job_id_or":{"type":"array","items":{"type":"string"},"description":"Return jobs matching any of these IDs."},"job_ids":{"type":"array","items":{"type":"string"},"description":"Look up a specific set of job IDs."}},"description":"Job search filters. All fields optional; combine with AND."}}}},"responses":{"200":{"description":"Job search results","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"object","properties":{"total_results":{"type":"number","nullable":true,"description":"Total matches, or null unless include_total_results was set."},"truncated_results":{"type":"number","description":"Jobs returned in this data array."},"total_companies":{"type":"number","nullable":true},"truncated_companies":{"type":"number"},"next_cursor":{"type":"string","nullable":true,"description":"Cursor for the next page, or null if no more results."}},"required":["total_results","truncated_results","total_companies","truncated_companies"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Stable JobsPipe ID - same job, same ID across sources."},"job_title":{"type":"string"},"normalized_title":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"final_url":{"type":"string","nullable":true,"description":"Resolved apply URL after redirects."},"source_url":{"type":"string","nullable":true},"company":{"type":"string","nullable":true},"company_domain":{"type":"string","nullable":true},"company_object":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"date_posted":{"type":"string","nullable":true,"description":"Date the job was posted (YYYY-MM-DD)."},"discovered_at":{"type":"string","nullable":true},"closed_at":{"type":"string","nullable":true},"reposted":{"type":"boolean"},"date_reposted":{"type":"string","nullable":true},"has_blurred_data":{"type":"boolean"},"location":{"type":"string","nullable":true},"short_location":{"type":"string","nullable":true},"long_location":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"country_code":{"type":"string","nullable":true},"countries":{"type":"array","items":{"type":"string"}},"country_codes":{"type":"array","items":{"type":"string"}},"cities":{"type":"array","items":{"type":"string"}},"continents":{"type":"array","items":{"type":"string"}},"state_code":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"remote":{"type":"boolean","nullable":true},"hybrid":{"type":"boolean","nullable":true},"salary_string":{"type":"string","nullable":true},"salary_currency":{"type":"string","nullable":true},"min_annual_salary":{"type":"number","nullable":true},"max_annual_salary":{"type":"number","nullable":true},"min_annual_salary_usd":{"type":"number","nullable":true},"max_annual_salary_usd":{"type":"number","nullable":true},"avg_annual_salary_usd":{"type":"number","nullable":true},"seniority":{"type":"string","nullable":true},"employment_statuses":{"type":"array","items":{"type":"string"}},"easy_apply":{"type":"boolean","nullable":true},"technology_slugs":{"type":"array","items":{"type":"string"}},"keyword_slugs":{"type":"array","items":{"type":"string"}},"hiring_team":{"type":"array","items":{"nullable":true}},"description":{"type":"string","nullable":true},"matching_phrases":{"type":"array","items":{"type":"string"}},"matching_words":{"type":"array","items":{"type":"string"}}},"required":["id","job_title","normalized_title","url","final_url","source_url","company","company_domain","company_object","date_posted","discovered_at","closed_at","reposted","date_reposted","has_blurred_data","location","short_location","long_location","country","country_code","countries","country_codes","cities","continents","state_code","postal_code","latitude","longitude","remote","hybrid","salary_string","salary_currency","min_annual_salary","max_annual_salary","min_annual_salary_usd","max_annual_salary_usd","avg_annual_salary_usd","seniority","employment_statuses","easy_apply","technology_slugs","keyword_slugs","hiring_team","description","matching_phrases","matching_words"],"description":"A normalized job posting."}}},"required":["metadata","data"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"402":{"description":"Monthly quota exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"504":{"description":"Job search timed out","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}}}}