Data API
Get Fields
Fetch one field descriptor with GET /data/fields/{dataset}/{key}.
GET https://api.parcelengineering.com/api/v1/data/fields/{dataset}/{key}Fetches a single field descriptor in full: kind, description, every enum value with its meaning, and relational sub-fields. An unknown key on a valid dataset returns 404 not_found; an unrecognized dataset segment is rejected by request validation with a 400 (the validation shape described in Errors). 0 credits, never throttled.
Requires the Pro plan, like every Data API read. A request from a Free or Starter workspace receives 403 forbidden.
The get_fields MCP tool is the batch variant of this lookup: it takes {dataset, keys: [...]} and maps onto Search Fields with exact keys, mirroring how get_accounts fetches by ids. Requested keys that match nothing are reported in the search response’s metadata.not_found, never silently omitted.
Query parameters
| Parameter | Description |
|---|---|
workspace_id | Attribution. Required when authenticating with a user JWT; optional for API keys. |
Example
curl https://api.parcelengineering.com/api/v1/data/fields/projects/stage \ -H "Authorization: Bearer pcl_your_api_key"const response = await fetch( 'https://api.parcelengineering.com/api/v1/data/fields/projects/stage', { headers: { 'Authorization': 'Bearer pcl_your_api_key' }, });
const { data, metadata } = await response.json();Response
{ "data": { "dataset": "projects", "key": "stage", "kind": "enum", "description": "Canonical development stage of the project.", "values": [ { "value": "filed", "label": "Filed", "description": "A formal land-use application has been submitted." }, { "value": "approved", "label": "Approved", "description": "The discretionary land-use approval has been granted." } ] }, "metadata": { "credits": 0 }}The values array is trimmed to two entries above; the live stage descriptor returns all seven stage values (pre_filing through completed), each with its label and meaning.
Not found
If the dataset segment itself is not one of the seven dataset ids, request validation rejects the call with a 400 before any lookup happens. If the dataset is valid but no field with that key exists on it, the API returns 404:
{ "error": { "code": "not_found", "message": "No field 'bogus_field' on dataset 'projects'." }}