Concepts
Public IDs
The safe public references (nd_, ld_, cus_, prd_, stu_, inv_) used to address records.
Every record the API returns carries an id that you use to refer to it in later calls. These are public references: stable, opaque strings that are safe to store and to put in URLs.
| Prefix | Resource | Example |
|---|---|---|
nd_ | Hierarchy node | nd_0123456789abcdef01234567 |
ld_ | CRM lead | ld_0123456789abcdef01234567 |
cus_ | ERP customer | cus_0123456789abcdef01234567 |
prd_ | ERP product | prd_0123456789abcdef01234567 |
stu_ | Education student | stu_0123456789abcdef01234567 |
inv_ | Invoice | inv_0123456789abcdef01234567 |
Webhooks use the same style: evt_ identifies an event, whd_ a delivery attempt of that event, whe_ a webhook endpoint, and pay_ a payment transaction.
These examples are made up. Real references contain 24 random hexadecimal characters after the prefix.
How to use them
- Use the
idexactly as returned:GET /crm/leads/ld_…,PATCH /erp/customers/cus_…,POST /billing/invoices/inv_…/payment-link. - Fields that point at another record, such as
customer_idon an invoice ornodeon a lead, contain that record's public reference. - Treat references as opaque. Do not parse, sort or generate them.
What is not a public identifier
Database row numbers, internal UUIDs, tenant, company and hierarchy identifiers are internal. They are never returned by the API and are not accepted as input; sending a raw internal identifier gets the same 404 as any unknown record.
A reference is not permission
Knowing a reference grants nothing. Every lookup is resolved inside what your key is allowed to see. A reference that is malformed, unknown, belongs to another business, or sits outside your key's part of the hierarchy all produce the identical 404 resource_not_found.