Skip to main content
Retrieve the normalized v1 result JSON for a job that has reached a completed terminal state. The result is immutable — its content never changes after the job finishes. It includes structured documents extracted from the source files, supporting evidence linking findings back to specific pages and regions, usage metrics, and any warnings or errors that arose during processing.

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}/result

Path Parameters

jobId
string
required
The unique identifier of the job whose result you want to retrieve. The job must have a status of completed or completed_with_errors.

Example Request

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

Response Fields

schemaVersion
"v1"
required
Always "v1". Used by consumers to select the correct parsing logic as the schema evolves over time.
job
ResultJob
required
A concise snapshot of the job that produced this result.
usage
ResultUsage
required
Aggregate processing metrics for the job.
documents
ResultDocument[]
required
Array of normalized document objects extracted from the uploaded source files. Each document represents a structured entity (e.g., a door schedule, a specification section, a room data sheet) identified by Plangrep during processing.
evidence
ResultEvidence[]
required
Source-level evidence records linking extracted data back to specific locations in the uploaded files.
warnings
ResultWarning[]
required
Non-fatal warnings raised during processing (e.g., unreadable pages, unsupported file formats). Empty array when there are no warnings.
errors
ResultError[]
required
Page-level or file-level errors that prevented full processing. Present in completed_with_errors results. Empty array for fully completed jobs.
generatedAt
string
required
ISO 8601 timestamp of when this result object was generated.

Example Response

{
  "schemaVersion": "v1",
  "job": {
    "id": "job_01hy3m8qtn2e5r7k9p0w4x1def",
    "projectId": "proj_01hx9z4kqr8e7m3p5n6w2v0abc",
    "status": "completed",
    "externalId": "order-7890",
    "createdAt": "2024-11-02T09:00:00.000Z",
    "completedAt": "2024-11-02T09:45:10.000Z",
    "expiresAt": "2024-11-09T09:00:00.000Z",
    "resultUrl": "https://storage.plangrep.com/results/job_01hy3m8qtn2e5r7k9p0w4x1def?token=...",
    "error": null
  },
  "usage": {
    "pageCount": 204,
    "successfulPageCount": 204,
    "drawingPageCount": 180,
    "documentPageCount": 24,
    "successfulDrawingPageCount": 180,
    "successfulDocumentPageCount": 24,
    "drawingCreditsPerPage": 10,
    "documentCreditsPerPage": 1,
    "creditsDebited": 1824
  },
  "documents": [
    {
      "id": "doc_001",
      "type": "door_schedule",
      "data": {
        "doors": [
          {
            "mark": "101A",
            "width": 36,
            "height": 84,
            "material": "hollow_metal",
            "fireRating": "90min"
          }
        ]
      },
      "evidenceIds": ["evd_001", "evd_002"]
    }
  ],
  "evidence": [
    {
      "id": "evd_001",
      "fileName": "architectural_drawings.pdf",
      "pageNumber": 14,
      "sheetNumber": "A-201",
      "boundingBox": { "x": 120, "y": 340, "width": 800, "height": 240 }
    }
  ],
  "warnings": [],
  "errors": [],
  "generatedAt": "2024-11-02T09:45:15.000Z"
}
Results are only available for jobs with a status of completed or completed_with_errors. Calling this endpoint on a job in any other status — including failed, cancelled, or expired — will return an error. Check job.status with Get Job before calling this endpoint.