Skip to main content
Schedule a normalization repair job for project regions. This endpoint is useful when a project has extracted regions but some ready documents are missing normalizedData on region entities or evidence records. Most integrations do not need to call this during the normal upload flow. Use it when Get Project Overview reports that counts.regions is greater than counts.normalizedRegions.

Authentication

Include an API key with the jobs:write scope as Authorization: Bearer YOUR_API_KEY.

Endpoint

POST https://plangrep.com/api/open/v1/projects/{projectId}/regions/normalize

Path Parameters

projectId
string
required
The unique identifier of the project whose regions should be normalized.

Request Body

mode
string
default:"missing_normalized_regions"
Normalization mode. The only supported value is missing_normalized_regions.
documentIds
string[]
Optional list of document IDs to repair. When omitted, Plangrep considers every ready document in the project.

Response Fields

project
Project
required
The project record.
normalization
object
required
Scheduling result for the normalization repair.
overview
ProjectOverview
required
Updated project overview.

Example Request

curl -X POST https://plangrep.com/api/open/v1/projects/proj_abc123/regions/normalize \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "mode": "missing_normalized_regions" }'

Example Response

{
  "project": {
    "id": "proj_abc123",
    "name": "Downtown Tower",
    "projectKind": "open_api",
    "disciplines": [],
    "status": "ready",
    "runtime": {
      "status": "ready",
      "upgradeStatus": null
    },
    "createdAt": "2026-07-11T18:00:00.000Z",
    "updatedAt": "2026-07-11T18:02:00.000Z"
  },
  "normalization": {
    "scheduledDocumentCount": 2,
    "skippedDocumentCount": 0,
    "mode": "missing_normalized_regions",
    "jobId": "container_job_abc123"
  },
  "overview": {
    "status": "ready",
    "statusLabel": "Ready",
    "counts": {
      "files": 2,
      "sheets": 48,
      "regions": 310,
      "vectors": 1200,
      "vectorChunks": 1200,
      "normalizedRegions": 120,
      "specifications": 1,
      "docs": 4
    },
    "disciplines": [],
    "latestJob": null,
    "nextAction": "normalize",
    "capabilities": {
      "canCreateJob": true,
      "canUpload": true,
      "canSearch": true,
      "canVectorize": false,
      "canNormalize": true
    }
  }
}
The endpoint returns 202 Accepted when a repair job is scheduled. If no ready documents match the request, it returns 200 OK with scheduledDocumentCount: 0 and jobId: null.