/api/v1/object/field/show/{objectSlug}/{fieldSlug}Get one field by slug.
Get one field by slug.
Returns the field with its full settings in options. For a lookup,
rollup or smart_catalog field, options also carries the resolved
source details. group_slug names the form section the field sits in on
this object, or is null.
Scope: read.<object slug>, for example read.contacts.
Errors:
400— no object has that slug, the object is inactive, or no field has that slug.
Response 200:
{
"status": 200,
"message": "Field retrieved successfully",
"data": {
"id": 912,
"name": "stage",
"slug": "stage-k2j9h4g7",
"label": "Stage",
"icon": null,
"type": "select",
"required": false,
"default_value": null,
"options": {
"values": [
{
"id": "6a1f3c9e-2b7d-4e8a-9f0c-1d2e3f4a5b6c",
"value": "lead",
"label": "Lead",
"color": "#3B82F6"
}
]
},
"is_active": true,
"sort_order": 4,
"group_slug": null,
"group_ineligible": false,
"is_system": false,
"api_only": false,
"is_shared": false,
"shared_with": [],
"is_visible": true,
"created_at": "2026-08-02T08:30:00.000Z",
"updated_at": "2026-09-01T11:15:00.000Z"
}
}
Send request
Use the documented inputs to call this endpoint directly.
Parameters
Values are applied to the request and the example on the right.
Responses
Successful response
{
"id": 1.5,
"name": "string",
"slug": "string",
"label": "string",
"icon": "string",
"type": "string",
"required": true,
"default_value": "string",
"options": "string",
"is_active": true,
"sort_order": 1.5,
"group_slug": "string",
"group_ineligible": true,
"is_system": true,
"api_only": true,
"is_shared": true,
"shared_with": "string",
"is_visible": true,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}Archived (deleted-but-still-referenced) options are stripped — see FieldResponseDto.
Order within the field's section — and, for a section-less field, within
the flat list. For a placed (shared) field this is the placement's
position on THIS Unit, not the home definition's order. Same currency as
PUT /object/field/order and as positions[] on the section assign call.
The field's section on THIS Unit (FRD-34); null ⇒ the implicit
"Ungrouped" bucket, which renders last. null on paths that skip
stampSections (nothing grouped, or a write-echo response), so the key
is always present on the wire.
FRD-34 — this field can never be moved into a section: the record shell renders it (title, assignee, meta block, status/tag chrome) or it is system-defined. Derived on read rather than stored, so it is right for objects seeded before sections existed and on the write-echo responses.
Value-write lock — drives the "API only" toggle's state in field settings.
CFM-2: is_shared/shared_with are computed by
FieldQueryService.mergeWithPlacedFields but were stripped here.
false/[] on paths that skip the merge (e.g. findBySlug).
Per-Unit visibility of a placed (shared) field on THIS Unit — set by
mergeWithPlacedFields from the placement row. Own fields (and paths
that skip the merge) default to true; their on/off switch is
is_active.
Bad request
{
"status": 1,
"message": "string",
"code": "string",
"data": {}
}The HTTP status code of the response.
What went wrong. Several validation messages are joined with ", ".
A stable, machine-readable reason. Only some errors set it.
Extra detail about the error. Only some errors set it.
Unauthorized
{
"status": 1,
"message": "string",
"code": "string",
"data": {}
}The HTTP status code of the response.
What went wrong. Several validation messages are joined with ", ".
A stable, machine-readable reason. Only some errors set it.
Extra detail about the error. Only some errors set it.
Internal server error
{
"status": 1,
"message": "string",
"code": "string",
"data": {}
}The HTTP status code of the response.
What went wrong. Several validation messages are joined with ", ".
A stable, machine-readable reason. Only some errors set it.
Extra detail about the error. Only some errors set it.
Powered by heyo-docs