/v2/ground).
Error Response Format
Every error from the v2 APIs returns a JSON body with two fields:code field is a stable identifier you can branch on, such as validation_error or not_implemented. The message field is a human-readable description; treat its exact wording as variable. The error messages quoted on this page are message values.
Common Status Codes
These status codes are handled at the account and gateway level and can apply to any request.Ground Status Codes
Status 422: Unprocessable Entity
This status code indicates input validation failures. Review the errormessage and adjust your request.
Error: Field Required
This error occurs when the request is missingextraction_metadata or structure. Both fields are required.
Error message:
- Include both fields in the request body: the
extraction_metadataobject from an Extract response and thestructureobject from the matching Parse response. - If you send multipart form data, confirm each field’s value is a JSON-serialized object. An empty or unparseable value also fails validation.
Status 501: Not Implemented
This error occurs when your organization has Zero Data Retention (ZDR) enabled. The Ground API is not available for ZDR-enabled organizations, because the request carries extracted document content inextraction_metadata.
What to do:
- Compute grounding client-side instead: every block in the Parse response’s
structurecarries its owngrounding.range, so you can overlap each field’srangesagainst the blocks yourself. See Grounding with Ranges and Grounding: Where Things Are. - If your organization does not need ZDR, you can ask to turn it off by contacting support@landing.ai.
The Locations Point at the Wrong Content
Grounding returned200 and every field has blocks, but the boxes land on the wrong part of the page, or one value in a batch is highlighted somewhere unrelated.
This is what a mismatched extraction_metadata and structure normally look like. The ranges are still valid numbers, so they overlap whatever blocks sit at those offsets in the structure you sent. Two parses of the same document produce similar offsets, so most locations come back correct and only some are wrong. Nothing in the response marks the difference.
What to do:
- Verify the pairing rather than judging it by eye, by comparing the Extract response’s
metadata.doc_idwith the Parse response’smetadata.job_id. See Pair the Extraction with Its Own Parse. - If you re-parse a document, re-run the extraction too. Block ranges shift between parses, even of the same file, so an old extraction cannot be grounded against a new
structure. - If the pair checks out, confirm you did not edit the
markdownbetween the Parse call and the Extract call. Inserting or removing characters shifts every offset after the edit.
Every Field Returns an Empty Array
Grounding returned200, but every field’s grounding is []. Valid ranges that overlap no block almost always mean the two inputs are from different parses, and far enough apart that no offsets overlap at all: the extraction_metadata offsets index a different Markdown string than the one the structure describes.
What to do:
- Work through The Locations Point at the Wrong Content. An empty result has the same cause as a wrong one, and the same fix.
- Check that the
structureis the whole tree from the Parse response, not a single page or a trimmed subtree. A structure covering only part of the document has no blocks at most offsets.
A Field Returns Null Instead of Blocks
A field whose grounding isnull is not an error. The field’s ranges was null in the extraction_metadata, so nothing in the document was quoted for it. Check the field’s value in the Extract response to tell the two causes apart:
- The value is present. The model synthesized it (for example, a summary or an inferred flag) rather than quoting it, so there is no source passage to point to.
- The value is
null. The model did not find the field in the document at all.
- If a synthesized field should have been quoted, refine its schema
descriptionso the model extracts a literal value. See Extraction Schema (JSON). - Handle
nullin your rendering code: show the value without a source highlight, or show the field as not found.