Typed ids
What the prefixes mean, and how ids travel.
Every id the API, MCP and webhooks show has a prefix that says what it is, then 26 letters and digits: cus_01j30x4zjafcy9tbjzd9xrs78e. Send them back as you got them. An id of the wrong kind is refused with a 400 (input), so a product id can't be passed where a customer's belongs. Prefixes don't change, so you can store ids as they are.
| Kind | Prefix | Fields that hold one |
|---|---|---|
| organization | org_ | organizationId |
| business | biz_ | businessId |
| location | loc_ | locationId, primaryLocationId |
| customer | cus_ | customerId, keepId, mergeId, mergedIntoId, mergedFrom, asCustomerId, attendeeCustomerId, fromAttendeeCustomerId |
| product | prd_ | productId, freeProductId |
| agreement | agr_ | agreementId |
| charge | chg_ | paymentId, chargeId |
| booking | bk_ | bookingId, enrollmentId, visitId, reservationId |
| person | per_ | personId |
| invite | inv_ | inviteId |
| token | tok_ | tokenId |
| app | app_ | |
| dependent | dep_ | dependentId, attendeeDependentId |
| contact | ct_ | contactId |
| note | note_ | noteId |
| offering | off_ | offeringId |
| session | ses_ | sessionId, fromSessionId, toSessionId |
| admission | adm_ | admissionId |
| pattern | pat_ | patternId |
| standing | stb_ | standingId |
| attendance | att_ | attendanceId |
| resource | res_ | resourceId, calendarId |
| resource group | rgp_ | groupId |
| reservation | rsv_ | |
| pool | pool_ | poolId |
| line | ln_ | |
| variant | var_ | variantId |
| price | pri_ | priceId |
| price version | prv_ | |
| adjustment | adj_ | adjustmentId |
| adjustment version | adv_ | |
| audience | aud_ | audienceId |
| audience link | aul_ | |
| code | cod_ | codeId |
| grant | grt_ | grantId |
| gift card | gc_ | giftCardId |
| order | ord_ | orderId |
| policy | pol_ | policyId |
| quote request | qr_ | |
| payment account | pac_ | |
| ledger entry | led_ | |
| loyalty program | lyp_ | programId |
| pay rule | prl_ | ruleId |
| pay statement | pst_ | statementId |
| pay line | pyl_ | |
| form | frm_ | formId |
| submission | sub_ | submissionId |
| requirement result | rr_ | resultId |
| file | fil_ | fileId, withFileId, coverFileId, attachmentId, mediaId |
| upload link | upl_ | |
| album | alb_ | albumId, collectionId |
| field | fld_ | fieldId |
| conversation | cnv_ | conversationId |
| conversation message | cvm_ | messageId |
| message | msg_ | |
| notification | ntf_ | notificationId |
| push device | dev_ | |
| channel contact | chc_ | |
| campaign | cmp_ | campaignId |
| broadcast | brc_ | broadcastId |
| review | rev_ | reviewId |
| social post | soc_ | contentId |
| email sender | snd_ | |
| sms registration | smr_ | |
| site | site_ | siteId |
| site comment | cmt_ | commentId |
| post | post_ | postId |
| domain | dom_ | |
| gallery | gal_ | galleryId |
| gallery set | gst_ | setId |
| gallery viewer | gvw_ | |
| gallery download | gdl_ | |
| proposal | prp_ | proposalId |
| approval | apv_ | approvalId |
| workflow | wfl_ | workflowId |
| suggestion | sug_ | suggestionId |
| memory | mem_ | memoryId |
| run | run_ | |
| job | job_ | jobId, retryJobId |
| pending operation | pnd_ | operationId |
| event | evt_ | eventId |
| audit entry | log_ | |
| integration | int_ | integrationId |
| integration item | iti_ | |
| webhook endpoint | whe_ | endpointId |
| webhook delivery | whd_ | deliveryId |
| import run | imp_ | |
| brand version | brv_ | |
| business plan | bpl_ | |
| plan version | plv_ | |
| waitlist signup | wls_ | |
| formation order | fmo_ | formationOrderId |
| filing | fln_ | deadlineId |
| checklist | chk_ | checklistId |
| checklist item | chi_ | |
| requirement | req_ | requirementId |
| compliance report | rpt_ | reportId |
| issue | iss_ | issueId |
| support session | sup_ | supportSessionId |
mail_ | ||
| capability gap | gap_ |
An object's own id is typed by where it sits: the items of customers are customers, a booking is a booking.