Job Positions
List job positions
Lists job positions with optional filters. The catalog combines global ESCO rows with the organization’s custom rows. Filter by iscoGroup or externalId for scoped lookups.
GET
/
v1
/
public
/
job-positions
List job positions
curl --request GET \
--url https://api.agile-tools.io/v1/public/job-positions \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.agile-tools.io/v1/public/job-positions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.agile-tools.io/v1/public/job-positions', 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://api.agile-tools.io/v1/public/job-positions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://api.agile-tools.io/v1/public/job-positions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.agile-tools.io/v1/public/job-positions")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agile-tools.io/v1/public/job-positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3f4b5c6d-0000-0000-0000-000000000001",
"name": "Senior Software Engineer",
"description": "Leads delivery of complex engineering work",
"code": "SSE",
"iscoGroup": "2512",
"externalId": "JOB_POSITION_SSE",
"active": true,
"global": false
}
],
"meta": {
"requestId": "f056699e-497d-41d9-a877-d7c862de6587",
"timestamp": "2026-04-03T12:08:00Z",
"cursor": {
"hasMore": false,
"resultCount": 1
}
}
}Authorizations
Owner-typed API key (ORGANIZATION, PERSON, VALUE_UNIT). Manage org-scoped lifecycle with /v1/public-api-keys; cross-org governance is restricted to /v1/sys/public-api-keys.
Query Parameters
Required range:
1 <= x <= 100⌘I
List job positions
curl --request GET \
--url https://api.agile-tools.io/v1/public/job-positions \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.agile-tools.io/v1/public/job-positions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.agile-tools.io/v1/public/job-positions', 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://api.agile-tools.io/v1/public/job-positions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://api.agile-tools.io/v1/public/job-positions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.agile-tools.io/v1/public/job-positions")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agile-tools.io/v1/public/job-positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3f4b5c6d-0000-0000-0000-000000000001",
"name": "Senior Software Engineer",
"description": "Leads delivery of complex engineering work",
"code": "SSE",
"iscoGroup": "2512",
"externalId": "JOB_POSITION_SSE",
"active": true,
"global": false
}
],
"meta": {
"requestId": "f056699e-497d-41d9-a877-d7c862de6587",
"timestamp": "2026-04-03T12:08:00Z",
"cursor": {
"hasMore": false,
"resultCount": 1
}
}
}
