id
id is a UUID that Bindbee assigns when it first syncs a record. It is the identifier the Unified API is built around.
Properties
- Stable across syncs. The same record keeps the same
idfrom one sync to the next. - Consistent in shape. A UUID on every connector, so your schema does not accommodate a different format per HRIS.
- Scoped to your environment. Development and Production hold separate data, so the same employee has different IDs in each - see Environments.
- Get-by-id endpoints.
GET /api/hris/v1/employees/{id}takes the Bindbeeid. - The
idsfilter. Pass one or more, comma separated with no spaces, to fetch a specific set in a single call. - Relation fields.
manager,company,groups,work_locations,pay_groupandpayroll_run_calendarall return Bindbee IDs. An employee’smanagerresolves against the Employees endpoint byid. expand. Expanding a relation resolves it through Bindbee IDs - see Expand.
id is the only identifier that lets you traverse the graph.
remote_id
remote_id is the identifier the source system uses. Bindbee stores it as a string and passes it through untouched.
Properties
- Format varies by system. A numeric string in one HRIS, a UUID in another, an alphanumeric code in a third. Never parse it, pad it, cast it to an integer, or assume a length.
- Nullable. Some systems do not expose a stable API identifier for every object type. When that happens,
remote_idisnull. Any logic that depends on it needs a fallback. - Unique only within a connector. Two customers on two different HRIS instances can both have an employee with
remote_idof1. It is not safe as a global key, and the same person under two connectors is legitimately two records - see Trace a duplicate record.
- Reconciliation. Matching a Bindbee record back to a record in the customer’s own system, or against a file feed the customer sends you.
- Support and debugging. When a customer reports that one employee’s data looks wrong,
remote_idis what lets you and Bindbee find the same record in the source system. - Filtered lookups. The Employees endpoint accepts
remote_idas a filter when you know the third-party ID but not the Bindbee one:
employee_number
The Employee model carries a third identifier, and confusing it with remote_id is the usual mistake:
employee_number is what an HR admin sees in their HRIS interface, and what a customer will quote at you in a support ticket. It is frequently a different value from remote_id, and it is neither guaranteed unique nor stable, and an admin can edit it. Use it for display and for matching against what a customer tells you, never as a key. It has its own filter:
How to store them
A workable shape for the employees table on your side:Frequently Asked Questions
Why is remote_id null on some records?
Why is remote_id null on some records?
More common on sub-objects than on employees. Fall back to
id for anything functional, and hide the field rather than rendering it empty. To see the source’s own scheme, read the payload with include_raw_data=true - see Raw Data.Can I write back using remote_id?
Can I write back using remote_id?
No. A write that references an existing record addresses it by Bindbee
id. If you hold a third-party identifier, resolve it with the remote_id filter first, then act on the id you get back.Do IDs change when a connector is relinked?
Do IDs change when a connector is relinked?
No. Relinking keeps the connector and its history, so stored
id values stay valid - which is why it is the right recovery from RELINK_NEEDED.Deleting and issuing a fresh link is different: it mints new identities and breaks every ID you stored. remote_id is what matches old rows to new ones - see Update credentials.Related
Reading data
Filters,
expand and modified_after on list endpoints.Get Employees
The full Employee schema and every supported filter.
Trace a duplicate record
Diagnosing a specific pair that should have been one record.
Custom fields
Surface additional identifiers from the raw payload as fields.