Close a job
curl --request POST \
--url https://www.sorce.jobs/api/external/v1/jobs/{id}/close \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.sorce.jobs/api/external/v1/jobs/{id}/close"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.sorce.jobs/api/external/v1/jobs/{id}/close', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.sorce.jobs/api/external/v1/jobs/{id}/close",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.sorce.jobs/api/external/v1/jobs/{id}/close"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.sorce.jobs/api/external/v1/jobs/{id}/close")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.sorce.jobs/api/external/v1/jobs/{id}/close")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 123,
"title": "<string>",
"status": "DRAFT",
"description": "<string>",
"remoteOption": "REMOTE",
"remoteCountry": "<string>",
"jobType": "FULL_TIME",
"jobLevel": "ENTRY",
"salaryMin": 123,
"salaryMax": 123,
"salaryPeriod": "ANNUAL",
"bidPerQualifiedApplicantCents": 123,
"opportunityId": "<string>",
"atsJobUrl": "<string>",
"companyId": "<string>",
"locations": [
{
"locationId": 17024,
"displayName": "San Francisco, California, United States",
"city": "San Francisco",
"stateProvince": "California",
"country": "United States"
}
],
"qualifications": [
{
"text": "5+ years of product design experience",
"kind": "REQUIRED",
"order": 0,
"id": "<string>"
}
],
"questions": [
{
"prompt": "Why do you want to work here?",
"answerFormat": "TEXT",
"order": 123,
"options": [
"<string>"
],
"id": "<string>"
}
],
"budgets": [
{
"window": "DAILY",
"budgetCents": 50000,
"notes": "<string>"
}
],
"applicationCounts": {
"pending": 123,
"accepted": 123,
"rejected": 123
},
"isFrozen": true,
"newApplicantCount": 123,
"publishedAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"closedAt": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "INVALID_SERVICE_KEY",
"message": "Invalid service key."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Job not found."
}
}{
"error": {
"code": "INVALID_TRANSITION",
"message": "Only active jobs can be paused."
}
}Jobs
Close a job
ACTIVE/PAUSED → CLOSED. Terminal. Closed jobs can’t reopen or be edited.
POST
/
jobs
/
{id}
/
close
Close a job
curl --request POST \
--url https://www.sorce.jobs/api/external/v1/jobs/{id}/close \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.sorce.jobs/api/external/v1/jobs/{id}/close"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.sorce.jobs/api/external/v1/jobs/{id}/close', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.sorce.jobs/api/external/v1/jobs/{id}/close",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.sorce.jobs/api/external/v1/jobs/{id}/close"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.sorce.jobs/api/external/v1/jobs/{id}/close")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.sorce.jobs/api/external/v1/jobs/{id}/close")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 123,
"title": "<string>",
"status": "DRAFT",
"description": "<string>",
"remoteOption": "REMOTE",
"remoteCountry": "<string>",
"jobType": "FULL_TIME",
"jobLevel": "ENTRY",
"salaryMin": 123,
"salaryMax": 123,
"salaryPeriod": "ANNUAL",
"bidPerQualifiedApplicantCents": 123,
"opportunityId": "<string>",
"atsJobUrl": "<string>",
"companyId": "<string>",
"locations": [
{
"locationId": 17024,
"displayName": "San Francisco, California, United States",
"city": "San Francisco",
"stateProvince": "California",
"country": "United States"
}
],
"qualifications": [
{
"text": "5+ years of product design experience",
"kind": "REQUIRED",
"order": 0,
"id": "<string>"
}
],
"questions": [
{
"prompt": "Why do you want to work here?",
"answerFormat": "TEXT",
"order": 123,
"options": [
"<string>"
],
"id": "<string>"
}
],
"budgets": [
{
"window": "DAILY",
"budgetCents": 50000,
"notes": "<string>"
}
],
"applicationCounts": {
"pending": 123,
"accepted": 123,
"rejected": 123
},
"isFrozen": true,
"newApplicantCount": 123,
"publishedAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"closedAt": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "INVALID_SERVICE_KEY",
"message": "Invalid service key."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Job not found."
}
}{
"error": {
"code": "INVALID_TRANSITION",
"message": "Only active jobs can be paused."
}
}Authorizations
Partner key (sk_ext_…) bound to your company.
Path Parameters
The job's stable cross-service id (svcAtsId).
Response
The job, now CLOSED.
The full job, as the dashboard sees it.
Stable cross-service job id (svcAtsId).
Available options:
DRAFT, ACTIVE, PAUSED, CLOSED, EXPIRED Available options:
REMOTE, HYBRID, IN_PERSON, null Available options:
FULL_TIME, PART_TIME, CONTRACT, INTERNSHIP, null Available options:
ENTRY, MID, SENIOR, null Available options:
ANNUAL, HOURLY, null Partner id for this opening on the source ATS.
Canonical job URL on the source ATS.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
True once the job has applications. Qualifications/questions locked.