Skip to main content
Retrieve the current state of a processing job by its ID. Use this endpoint to poll job progress after completing file uploads, or at any point to inspect status, billing, file metadata, and error details. Once a job reaches a terminal status, its state is frozen.

Authentication

Include your API key as Authorization: Bearer YOUR_API_KEY in the request headers.

Endpoint

GET https://plangrep.com/api/open/v1/jobs/{jobId}

Path Parameters

jobId
string
required
The unique identifier of the job to retrieve. Returned as job.id from Create Job.

Example Request

curl --request GET \
  --url https://plangrep.com/api/open/v1/jobs/job_01hy3m8qtn2e5r7k9p0w4x1def \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Accept: application/json"

Response Fields

job
Job
required
The current state of the requested job.

Job Status Reference

Non-Terminal Statuses

Jobs in these states are still in progress and may change status with subsequent polling.
StatusDescription
provisioningJob infrastructure is being set up.
awaiting_uploadsJob is ready to receive file uploads.
uploadingFiles are actively being uploaded.
preflightingUploaded files are being validated before processing begins.
blocked_insufficient_creditsJob is paused — add credits and call Resume Job.
processingPlangrep is actively processing uploaded documents.

Terminal Statuses

Jobs in these states will not change further. Results (if any) can be retrieved.
StatusDescription
completedAll pages processed successfully. Result is available.
completed_with_errorsProcessing finished with partial page-level errors. Partial result is available.
failedProcessing failed entirely. Check job.error for details.
cancelledJob was cancelled via the Cancel Job endpoint.
expiredJob was not completed before its expiry time.

Example Response

{
  "job": {
    "id": "job_01hy3m8qtn2e5r7k9p0w4x1def",
    "externalId": "order-7890",
    "status": "processing",
    "projectId": "proj_01hx9z4kqr8e7m3p5n6w2v0abc",
    "limits": {
      "maxDeclaredBytes": 10000000000,
      "maxFiles": 100
    },
    "pageCount": 204,
    "successfulPageCount": 87,
    "billing": {
      "creditsDebited": 87
    },
    "files": [
      {
        "id": "file_xyz789",
        "fileName": "architectural_drawings.pdf",
        "status": "processing"
      }
    ],
    "resultUrl": null,
    "error": null,
    "createdAt": "2024-11-02T09:00:00.000Z",
    "updatedAt": "2024-11-02T09:07:35.000Z",
    "completedAt": null,
    "expiresAt": "2024-11-09T09:00:00.000Z"
  }
}
When polling for job completion, use an interval of 10–30 seconds. For faster feedback with no polling overhead, supply a webhookUrl when calling Create Job to receive push notifications on every status change.