Skip to main content

Update Schema

Replace a schema definition, creating a new version internally. Existing extractions retain their original schema version.

Replace a schema's definition, name, or description. Each update creates a new version internally, so you can track how a schema evolves over time. Existing extractions are not affected by schema updates — they retain the schema version that was active when they were created.

Updating a schema definition changes the fields used for future extractions. Already-completed extractions continue to reference their original schema version.
PUT/v1/schemas/:id

Response

Response fields

idstringSchema UUID.
short_idstringHuman-readable short ID.
namestringUpdated schema name.
descriptionstring | nullUpdated description.
definitionobjectUpdated JSON Schema definition.
field_countintegerUpdated field count.
versionintegerSchema version number.
created_atstringISO 8601 creation timestamp.
updated_atstringISO 8601 last update timestamp.
linksobjectRelated resource URLs.

Response

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "short_id": "SCH-A1B2C3D4",
  "name": "Invoice v2",
  "description": "Updated invoice schema with line items",
  "definition": {
    "type": "object",
    "properties": {
      "invoice_number": { "type": "string", "title": "invoice_number" },
      "vendor": { "type": "string", "title": "vendor" },
      "total": { "type": "number", "title": "total" },
      "date": { "type": "date", "title": "date" },
      "line_items": { "type": "array", "title": "line_items" }
    },
    "required": ["invoice_number"]
  },
  "field_count": 5,
  "version": 1,
  "created_at": "2024-08-20T14:00:00.000Z",
  "updated_at": "2024-09-15T10:30:00.000Z",
  "links": {
    "self": "/v1/schemas/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "extractions": "/v1/extractions?schema_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "dashboard": "https://app.talonic.com/schemas/user/a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
}

Most integrations call this endpoint when extraction requirements evolve — for example, adding a new field to an invoice schema or renaming an existing one. A typical workflow is to fetch the current schema with GET /v1/schemas/:id, modify the definition, then send the updated payload here.

The response includes the updated definition, field_count, and version number. The updated_at timestamp reflects when the change was applied. All body parameters are optional — send only name, definition, or description to update that field without touching the others.

Pair this with GET /v1/extractions?schema_id=:id to review historical extractions that used previous versions. Note that schema versioning is append-only internally, so you can always compare before-and-after definitions through the dashboard.

Schema updates do not retroactively change existing extractions. If you need to re-extract documents with the new schema, call POST /v1/extract with document_id and the updated schema_id.

Errors

Error responses

400validation_errorInvalid schema identifier format.
401unauthorizedMissing or invalid API key.
404schema_not_foundNo schema with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.