Skip to content

GET /bulk/jobs/{job_id}/results API

  • Bulk

Retrieve results for a completed bulk job.

Returns the contents of the completed job in the requested representation. When `format=ndjson` and the `Accept` header prefers `application/x-ndjson`, the response streams newline-delimited JSON so clients can begin processing without waiting for the full payload.
Parameters
NameInTypeRequiredDescription
job_idpathstringYesUnique identifier for the asynchronous bulk job.
cursorquerystringNoCursor provided by the previous results page for pagination.
formatquerystringNoPreferred representation for bulk job results. Use `format=ndjson` together with an `Accept: application/x-ndjson` header to stream newline-delimited output.
  • job_idpathRequired
    Typestring

    Unique identifier for the asynchronous bulk job.

  • cursorqueryOptional
    Typestring

    Cursor provided by the previous results page for pagination.

  • formatqueryOptional
    Typestring

    Preferred representation for bulk job results. Use `format=ndjson` together with an `Accept: application/x-ndjson` header to stream newline-delimited output.

Sample responses
  • 200 Success — Results for the requested job, or a URL to download them when large.

    application/jsonBulkJobResults

    {
    "job": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "status": "succeeded",
    "submitted_at": "2024-03-18T12:40:00Z",
    "started_at": "2024-03-18T12:41:05Z",
    "completed_at": "2024-03-18T12:49:12Z",
    "input": {
    "transport": "https",
    "url": "https://files.example.com/batches/sprint-42.csv"
    },
    "callback": {
    "url": "https://app.example.com/webhooks/geocoding",
    "secret": "whsec_example_secret_04",
    "signature_header": "X-Geobridge-Signature"
    },
    "options": {
    "output_format": "geojson",
    "truncate_at": 5
    },
    "statistics": {
    "total_records": 1000,
    "processed_records": 1000,
    "successful_records": 995,
    "failed_records": 5
    }
    },
    "format": "geojson",
    "cursor": "eyJwYWdlIjowfQ==",
    "results": {
    "type": "FeatureCollection",
    "geocoding": {
    "version": "1.0.0",
    "query": {
    "job_id": "123e4567-e89b-12d3-a456-426614174000"
    }
    },
    "features": [
    {
    "type": "Feature",
    "geometry": {
    "type": "Point",
    "coordinates": [
    -73.991069,
    40.735863
    ]
    },
    "properties": {
    "id": "rec-001",
    "gid": "openaddresses:address:us/ny/new-york/30-west-26th-street",
    "layer": "address",
    "source": "openaddresses",
    "name": "30 West 26th Street",
    "label": "30 West 26th Street, Manhattan, New York, NY, USA",
    "confidence": 0.95,
    "housenumber": "30",
    "street": "West 26th Street",
    "locality": "New York",
    "region": "New York",
    "country_a": "USA"
    }
    }
    ]
    }
    }

    application/x-ndjson (string)

    {"record_id":"rec-001","status":"matched","feature":{"gid":"openaddresses:address:us/ny/new-york/30-west-26th-street","confidence":0.95}}
    {"record_id":"rec-002","status":"matched","feature":{"gid":"openaddresses:address:us/ny/new-york/32-west-26th-street","confidence":0.92}}
  • 401 Client error — Missing or invalid API key.

    application/problem+jsonProblem

    {
    "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+jsonProblem

    {
    "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 has not completed yet; results are unavailable.

    application/problem+jsonProblem

    {
    "type": "https://docs.geobridge.io/problems/conflict",
    "title": "Conflict",
    "status": 409,
    "detail": "Job 123e4567-e89b-12d3-a456-426614174000 has not completed yet."
    }
  • 429 Client error — Too many requests. Retry after the rate limit resets.

    application/problem+jsonProblem

    {
    "type": "https://docs.geobridge.io/problems/too-many-requests",
    "title": "Too Many Requests",
    "status": 429,
    "detail": "Job results may only be requested once every 5 seconds."
    }
  • 500 Server error — Unexpected server error.

    application/problem+jsonProblem

    {
    "type": "https://docs.geobridge.io/problems/internal-error",
    "title": "Internal Server Error",
    "status": 500,
    "detail": "Failed to read results archive from storage."
    }
Code samples

200 OK

Terminal window
# 200 OK — Downloads inline GeoJSON results for a completed job.
curl -s -G 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000/results' \
-H 'Accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' \
--data-urlencode 'format=geojson'

200 OK (NDJSON stream)

Terminal window
# 200 OK — Streams NDJSON results as they are produced.
curl -s -N 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000/results?format=ndjson' \
-H 'Accept: application/x-ndjson' \
-H 'X-API-Key: YOUR_API_KEY'

401 Unauthorized

Terminal window
# 401 Unauthorized — Missing API key when fetching job results.
# Deliberately omits X-API-Key header to demonstrate 401 Unauthorized.
curl -s -X GET 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000/results' \
-H 'Accept: application/json'

429 Too Many Requests

Terminal window
# 429 Too Many Requests — Fetching job results too frequently triggers rate limiting.
curl -s -G 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000/results' \
-H 'Accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' \
--data-urlencode 'format=geojson'

404 Not Found

Terminal window
# 404 Not Found — Requesting results for an unknown job returns 404.
curl -s -X GET 'https://api-na.geobridge.io/v1/bulk/jobs/00000000-0000-4000-8000-000000000000/results' \
-H 'Accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY'

409 Conflict

Terminal window
# 409 Conflict — Job still processing, so results are not yet available.
curl -s -X GET 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000/results' \
-H 'Accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY'

500 Internal Server Error

Terminal window
# 500 Internal Server Error — Handles server errors when retrieving job results.
curl -s -X GET 'https://api-na.geobridge.io/v1/bulk/jobs/123e4567-e89b-12d3-a456-426614174000/results' \
-H 'Accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY'
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.

Path parameters

Unique identifier for the asynchronous bulk job.

Query parameters

Cursor provided by the previous results page for pagination.

Preferred representation for bulk job results. Use `format=ndjson` together with an `Accept: application/x-ndjson` header to stream newline-delimited output.

Configure the request and select “Send request” to preview the response.