DELETE /bulk/jobs/{job_id} API
DELETE/bulk/jobs/{job_id}
Section titled “DELETE/bulk/jobs/{job_id}”Cancel a pending or in-progress bulk job.
Parameters
Parameters
Section titled “ Parameters ”| Name | In | Type | Required | Description |
|---|---|---|---|---|
job_id | path | string | Yes | Unique identifier for the asynchronous bulk job. |
job_idpathRequiredUnique identifier for the asynchronous bulk job.
Sample responses
Sample responses
Section titled “ Sample responses ”- 202 Success — Cancellation accepted. The job will transition to `cancelled`.
- 401 Client error — Missing or invalid API key.
application/problem+json → Problem
{"type": "https://docs.geobridge.io/problems/unauthorized","title": "Unauthorized","status": 401,"detail": "API key is missing or invalid."} - 404 Client error — Requested job was not found.
application/problem+json → Problem
{"type": "https://docs.geobridge.io/problems/not-found","title": "Not Found","status": 404,"detail": "No job exists with id 00000000-0000-4000-8000-000000000000."} - 409 Client error — Job can no longer be cancelled (already terminal).
application/problem+json → Problem
{"type": "https://docs.geobridge.io/problems/conflict","title": "Conflict","status": 409,"detail": "Job 123e4567-e89b-12d3-a456-426614174000 has already completed."} - 429 Client error — Too many requests. Retry after the rate limit resets.
application/problem+json → Problem
{"type": "https://docs.geobridge.io/problems/too-many-requests","title": "Too Many Requests","status": 429,"detail": "Job cancellation may only be attempted once every 5 seconds."} - 500 Server error — Unexpected server error.
application/problem+json → Problem
{"type": "https://docs.geobridge.io/problems/internal-error","title": "Internal Server Error","status": 500,"detail": "Unexpected exception while cancelling the job."}
Code samples
Code samples
Section titled “ Code samples ”202 Accepted
# 202 Accepted — Cancels a running job that is still in a cancellable state.curl -s -X DELETE 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000' \ -H 'Accept: application/json' \ -H 'X-API-Key: YOUR_API_KEY'// 202 Accepted — Cancels a running job that is still in a cancellable state.// Node.js 18+ with global fetch support.const requestUrl = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000';const response = await fetch(requestUrl, { method: 'DELETE', headers: { 'X-API-Key': 'YOUR_API_KEY' }, signal: AbortSignal.timeout(10000)});console.log(response.status);const payload = await response.text();console.log(payload);# 202 Accepted — Cancels a running job that is still in a cancellable state.import requests
url = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000'params = Noneheaders = { "X-API-Key": "YOUR_API_KEY"}payload = Noneresponse = requests.delete(url, params=params, headers=headers, timeout=10)print(response.status_code)
try: print(response.json())except ValueError: print(response.text)// 202 Accepted — Cancels a running job that is still in a cancellable state.package main
import ( "fmt" "io" "log" "net/http" "net/url" "time")
func main() { client := &http.Client{Timeout: 10 * time.Second} u, err := url.Parse("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000") if err != nil { log.Fatal(err) } req, err := http.NewRequest(http.MethodDelete, u.String(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") req.Header.Set("X-API-Key", "YOUR_API_KEY") resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) payload, _ := io.ReadAll(resp.Body) fmt.Println(string(payload))}// 202 Accepted — Cancels a running job that is still in a cancellable state.import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000")) .header("Accept", "application/json") .header("X-API-Key", "YOUR_API_KEY") .method("DELETE", HttpRequest.BodyPublishers.noBody()) .timeout(Duration.ofSeconds(10)) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); }}// 202 Accepted — Cancels a running job that is still in a cancellable state.using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { using var client = new HttpClient(); using var request = new HttpRequestMessage(new HttpMethod("DELETE"), "https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("X-API-Key", "YOUR_API_KEY"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode); Console.WriteLine(await response.Content.ReadAsStringAsync()); }}401 Unauthorized
# 401 Unauthorized — Missing API key when attempting to cancel a job.# Deliberately omits X-API-Key header to demonstrate 401 Unauthorized.curl -s -X DELETE 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000' \ -H 'Accept: application/json'// 401 Unauthorized — Missing API key when attempting to cancel a job.// Missing X-API-Key header is intentional to trigger 401.// Node.js 18+ with global fetch support.const requestUrl = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000';const response = await fetch(requestUrl, { method: 'DELETE', headers: {}, signal: AbortSignal.timeout(10000)});console.log(response.status);const payload = await response.text();console.log(payload);# 401 Unauthorized — Missing API key when attempting to cancel a job.import requests
url = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000'params = Noneheaders = {}payload = Noneresponse = requests.delete(url, params=params, headers=headers, timeout=10)print(response.status_code)
try: print(response.json())except ValueError: print(response.text)// 401 Unauthorized — Missing API key when attempting to cancel a job.package main
import ( "fmt" "io" "log" "net/http" "net/url" "time")
func main() { client := &http.Client{Timeout: 10 * time.Second} u, err := url.Parse("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000") if err != nil { log.Fatal(err) } req, err := http.NewRequest(http.MethodDelete, u.String(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) payload, _ := io.ReadAll(resp.Body) fmt.Println(string(payload))}// 401 Unauthorized — Missing API key when attempting to cancel a job.import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000")) .header("Accept", "application/json") .method("DELETE", HttpRequest.BodyPublishers.noBody()) .timeout(Duration.ofSeconds(10)) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); }}// 401 Unauthorized — Missing API key when attempting to cancel a job.using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { using var client = new HttpClient(); using var request = new HttpRequestMessage(new HttpMethod("DELETE"), "https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000"); request.Headers.Add("Accept", "application/json"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode); Console.WriteLine(await response.Content.ReadAsStringAsync()); }}429 Too Many Requests
# 429 Too Many Requests — Cancellation attempts are throttled after repeated requests.curl -s -X DELETE 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000' \ -H 'Accept: application/json' \ -H 'X-API-Key: YOUR_API_KEY'// 429 Too Many Requests — Cancellation attempts are throttled after repeated requests.// Node.js 18+ with global fetch support.const requestUrl = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000';const response = await fetch(requestUrl, { method: 'DELETE', headers: { 'Accept': 'application/json', 'X-API-Key': 'YOUR_API_KEY' }, signal: AbortSignal.timeout(10000)});console.log(response.status);const payload = await response.text();console.log(payload);# 429 Too Many Requests — Cancellation attempts are throttled after repeated requests.import requests
url = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000'params = Noneheaders = { "Accept": "application/json", "X-API-Key": "YOUR_API_KEY"}payload = Noneresponse = requests.delete(url, params=params, headers=headers, timeout=10)print(response.status_code)
try: print(response.json())except ValueError: print(response.text)// 429 Too Many Requests — Cancellation attempts are throttled after repeated requests.package main
import ( "fmt" "io" "log" "net/http" "net/url" "time")
func main() { client := &http.Client{Timeout: 10 * time.Second} u, err := url.Parse("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000") if err != nil { log.Fatal(err) } req, err := http.NewRequest(http.MethodDelete, u.String(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") req.Header.Set("X-API-Key", "YOUR_API_KEY") resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) payload, _ := io.ReadAll(resp.Body) fmt.Println(string(payload))}// 429 Too Many Requests — Cancellation attempts are throttled after repeated requests.import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000")) .header("Accept", "application/json") .header("X-API-Key", "YOUR_API_KEY") .timeout(Duration.ofSeconds(10)) .method("DELETE", HttpRequest.BodyPublishers.noBody()) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); }}// 429 Too Many Requests — Cancellation attempts are throttled after repeated requests.using System;using System.Net.Http;using System.Threading.Tasks;
class Program{ static async Task Main() { using var client = new HttpClient(); using var request = new HttpRequestMessage(HttpMethod.Delete, "https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("X-API-Key", "YOUR_API_KEY");
var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode); Console.WriteLine(await response.Content.ReadAsStringAsync()); }}404 Not Found
# 404 Not Found — Cancelling an unknown job id returns 404.curl -s -X DELETE 'https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000' \ -H 'Accept: application/json' \ -H 'X-API-Key: YOUR_API_KEY'// 404 Not Found — Cancelling an unknown job id returns 404.// Node.js 18+ with global fetch support.const requestUrl = 'https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000';const response = await fetch(requestUrl, { method: 'DELETE', headers: { 'X-API-Key': 'YOUR_API_KEY' }, signal: AbortSignal.timeout(10000)});console.log(response.status);const payload = await response.text();console.log(payload);# 404 Not Found — Cancelling an unknown job id returns 404.import requests
url = 'https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000'params = Noneheaders = { "X-API-Key": "YOUR_API_KEY"}payload = Noneresponse = requests.delete(url, params=params, headers=headers, timeout=10)print(response.status_code)
try: print(response.json())except ValueError: print(response.text)// 404 Not Found — Cancelling an unknown job id returns 404.package main
import ( "fmt" "io" "log" "net/http" "net/url" "time")
func main() { client := &http.Client{Timeout: 10 * time.Second} u, err := url.Parse("https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000") if err != nil { log.Fatal(err) } req, err := http.NewRequest(http.MethodDelete, u.String(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") req.Header.Set("X-API-Key", "YOUR_API_KEY") resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) payload, _ := io.ReadAll(resp.Body) fmt.Println(string(payload))}// 404 Not Found — Cancelling an unknown job id returns 404.import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000")) .header("Accept", "application/json") .header("X-API-Key", "YOUR_API_KEY") .method("DELETE", HttpRequest.BodyPublishers.noBody()) .timeout(Duration.ofSeconds(10)) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); }}// 404 Not Found — Cancelling an unknown job id returns 404.using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { using var client = new HttpClient(); using var request = new HttpRequestMessage(new HttpMethod("DELETE"), "https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("X-API-Key", "YOUR_API_KEY"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode); Console.WriteLine(await response.Content.ReadAsStringAsync()); }}409 Conflict
# 409 Conflict — Job already completed, so cancellation is rejected.curl -s -X DELETE 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000' \ -H 'Accept: application/json' \ -H 'X-API-Key: YOUR_API_KEY'// 409 Conflict — Job already completed, so cancellation is rejected.// Node.js 18+ with global fetch support.const requestUrl = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000';const response = await fetch(requestUrl, { method: 'DELETE', headers: { 'X-API-Key': 'YOUR_API_KEY' }, signal: AbortSignal.timeout(10000)});console.log(response.status);const payload = await response.text();console.log(payload);# 409 Conflict — Job already completed, so cancellation is rejected.import requests
url = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000'params = Noneheaders = { "X-API-Key": "YOUR_API_KEY"}payload = Noneresponse = requests.delete(url, params=params, headers=headers, timeout=10)print(response.status_code)
try: print(response.json())except ValueError: print(response.text)// 409 Conflict — Job already completed, so cancellation is rejected.package main
import ( "fmt" "io" "log" "net/http" "net/url" "time")
func main() { client := &http.Client{Timeout: 10 * time.Second} u, err := url.Parse("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000") if err != nil { log.Fatal(err) } req, err := http.NewRequest(http.MethodDelete, u.String(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") req.Header.Set("X-API-Key", "YOUR_API_KEY") resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) payload, _ := io.ReadAll(resp.Body) fmt.Println(string(payload))}// 409 Conflict — Job already completed, so cancellation is rejected.import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000")) .header("Accept", "application/json") .header("X-API-Key", "YOUR_API_KEY") .method("DELETE", HttpRequest.BodyPublishers.noBody()) .timeout(Duration.ofSeconds(10)) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); }}// 409 Conflict — Job already completed, so cancellation is rejected.using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { using var client = new HttpClient(); using var request = new HttpRequestMessage(new HttpMethod("DELETE"), "https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("X-API-Key", "YOUR_API_KEY"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode); Console.WriteLine(await response.Content.ReadAsStringAsync()); }}500 Internal Server Error
# 500 Internal Server Error — Handles server-side failure when calling cancel.curl -s -X DELETE 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000' \ -H 'Accept: application/json' \ -H 'X-API-Key: YOUR_API_KEY'// 500 Internal Server Error — Handles server-side failure when calling cancel.// Node.js 18+ with global fetch support.const requestUrl = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000';const response = await fetch(requestUrl, { method: 'DELETE', headers: { 'X-API-Key': 'YOUR_API_KEY' }, signal: AbortSignal.timeout(10000)});console.log(response.status);const payload = await response.text();console.log(payload);# 500 Internal Server Error — Handles server-side failure when calling cancel.import requests
url = 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000'params = Noneheaders = { "X-API-Key": "YOUR_API_KEY"}payload = Noneresponse = requests.delete(url, params=params, headers=headers, timeout=10)print(response.status_code)
try: print(response.json())except ValueError: print(response.text)// 500 Internal Server Error — Handles server-side failure when calling cancel.package main
import ( "fmt" "io" "log" "net/http" "net/url" "time")
func main() { client := &http.Client{Timeout: 10 * time.Second} u, err := url.Parse("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000") if err != nil { log.Fatal(err) } req, err := http.NewRequest(http.MethodDelete, u.String(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") req.Header.Set("X-API-Key", "YOUR_API_KEY") resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) payload, _ := io.ReadAll(resp.Body) fmt.Println(string(payload))}// 500 Internal Server Error — Handles server-side failure when calling cancel.import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000")) .header("Accept", "application/json") .header("X-API-Key", "YOUR_API_KEY") .method("DELETE", HttpRequest.BodyPublishers.noBody()) .timeout(Duration.ofSeconds(10)) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); }}// 500 Internal Server Error — Handles server-side failure when calling cancel.using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { using var client = new HttpClient(); using var request = new HttpRequestMessage(new HttpMethod("DELETE"), "https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("X-API-Key", "YOUR_API_KEY"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode); Console.WriteLine(await response.Content.ReadAsStringAsync()); }}Try it live
Try it live
Section titled “ Try it live ”Save your API key once and reuse it across endpoints. Configure the request below and send it directly from the docs.
Stored locally in your browser. Removing it clears access for this device.
Configure the request and select “Send request” to preview the response.