The Custom Fields API exposes the same capabilities as the dashboard so you can define fields and mappings programmatically. For the concepts (what Custom Fields are, organization vs connector scope) see the Custom Fields overview. For the dashboard equivalent, see Dashboard Configuration.Documentation Index
Fetch the complete documentation index at: https://docs.bindbee.dev/llms.txt
Use this file to discover all available pages before exploring further.
Fields created from the API are tagged with
source: "API". Fields created
from the dashboard are tagged with source: "DASHBOARD". Both kinds coexist
and behave identically once created.Authentication
All Custom Fields endpoints are scoped to your organization and require a Bearer token:Concepts
- Custom field — a named extension on a unified model (e.g.
guardian_mobileonemployee). It belongs to a(category, model)pair such as(HRIS, employee). - Mapping — the rule that tells Bindbee where to read the value from in the raw upstream payload. A mapping is either:
- Organization-scoped (
integration_slugset) — applies to every connector of that integration in your org. - Connector-scoped (
connector_tokenset) — applies to a single connector instance and overrides the org-level mapping.
- Organization-scoped (
- JMESPath — the expression language used to point at a value inside the raw upstream JSON. See jmespath.org for the full reference.
Typical workflow
A complete end-to-end flow when defining a new custom field via the API looks like this:Discover
Use the lookup endpoints to fetch valid
category, model, and
integration_slug values that are available to use.Inspect raw upstream payload
Fetch a sample of the raw third-party response so you can see exactly what
is available to JMESPath against.
Validate the JMESPath (optional)
Dry-run your expression against real connector data — or an inline payload —
without persisting anything. Recommended to avoid
INVALID_JSON_PATH in
production responses.Create a mapping
Attach the field to either an integration (org-scoped) or a single connector
(connector-scoped).
employee model with a guardian_mobile field, populated from a Workday connector.
Step 1: Discover models and integrations
Use the lookup endpoints to fetch the slugs you’ll need. These are filtered to what your organization actually has access to.Example responses
Connector tokens (used for connector-scoped mappings) are not returned by
any lookup endpoint. They are issued when a connector is created and surfaced
through the connector flow.
Step 2: Inspect the raw upstream payload
Before you write a JMESPath, look at the shape of the upstream JSON. Theraw-data endpoint returns either the connector’s latest synced row or a canned sample for the integration if no connector is provided (or if it has not synced yet).
Example response
data.employee.guardian_mobile is the JMESPath you’ll want to use.
Step 3: Validate the JMESPath (optional but recommended)
The preview endpoint evaluates a JMESPath against real connector data without persisting anything. Use this to catch typos and confirm the resolved value type before you save the mapping.Request body
Response
raw_data_source will be one of:
"connector_sync"— evaluated against the connector’s latest synced row."integration_sample"— connector hasn’t synced yet, fell back to the canned sample."inline"— the request supplied an inlineraw_datapayload to evaluate against.
resolved_value_type will be one of: string, number, boolean, object, array, null.
Step 4: Create the custom field
Once you’re confident in your JMESPath, register the field itself. The field is just a typed slot on the(category, model) — it carries no mapping yet.
Request body
Response
name must be snake_case, between 2 and 128 characters, and unique within
the (category, model). Fields created here will appear with source: "API"
when listed.Step 5: Create a mapping
A mapping pairs the custom field with a JMESPath, scoped either to an integration (applies to every connector of that integration) or to a single connector (overrides the org-level mapping for that connector only).- Organization-scoped
- Connector-scoped
Applies to every Workday connector in your organization.
Request body
Response
Step 6: Verify the effective configuration
The configuration endpoint returns every custom field for a given(connector, category, model) together with the effective mapping in use. Connector-scoped mappings override organization-scoped ones, and unmapped fields are included with json_path: null so you can see what’s still left to configure.
Response
source indicates which mapping is winning:
"connector"— a connector-scoped mapping is in effect."organization"— no connector override; the org-scoped mapping is being inherited.null— no mapping is configured for this field on this connector.
Updating and deleting
| Action | Endpoint | Notes |
|---|---|---|
| List custom fields | GET /api/v1/custom-fields | Supports category, model, and source filters. |
| Get one with mappings | GET /api/v1/custom-fields/{id} | Returns the field plus all its mappings. |
| Delete a field | DELETE /api/v1/custom-fields/{id} | Cascades — all mappings for the field are removed. |
| Update a mapping | PATCH /api/v1/custom-fields/mapping/{id} | Only json_path is mutable. Re-create to change scope. |
| Delete a mapping | DELETE /api/v1/custom-fields/mapping/{id} | Removes a single mapping; the field itself is unaffected. |
Next steps
- Learn how to retrieve Custom Fields in API responses.
- Review the Best Practices for naming and scoping.