Skip to content

entities

An entity is a durable identity capable of holding a relationship with your brand: a creator, an affiliate, an advisor, an agency, another company. Entities exist independently of any one program and independently of any one brand.

This is the canonical name for what the API called a entity. The old spelling is an alias forever — see the note below.

You never create an entity directly. Inviting someone by email (enrollments.create) upserts the identity, opens the durable relationship, and creates the enrollment in one call. Signed Handoff and Partner Connect converge on the same identity.

const page = await boomin.entities.list({ email: "creator@example.com" });
const entity = await boomin.entities.retrieve("ent_...");
MethodRouteScope
list(params, options)GET /entitiesentities:read
retrieve(id, options)GET /entities/{id}entities:read
{
"id": "ent_...",
"object": "entity",
"kind": "person",
"name": "Creator",
"email": "creator@example.com",
"metadata": {},
"livemode": true,
"createdAt": "2026-08-01T00:00:00.000Z",
"updatedAt": "2026-08-01T00:00:00.000Z"
}

These three are routinely confused, and the distinction is load-bearing:

ObjectScopeLifetime
EntityGlobal identityOutlives every brand relationship
RelationshipOne brand ↔ one entityOutlives every program
EnrollmentOne relationship in one programCarries the program referralCode

An entity in two of your programs has one relationship and two enrollments — which is exactly why billing counts distinct relationships, not enrollments. See Pricing.

What your brand privately knows about an entity attaches to the relationship, not the identity: assertions are your claims, operating types are the capacity an enrollment operates in. The identity itself stays thin on purpose.

Entry pointWhat happens
enrollments.create({ email })Entity upserted by email, relationship opened pending, enrollment created (pending, active)
Partner Connect OTP joinSame, driven from the browser by the entity
Signed HandoffSame, with your app vouching for the identity instead of an OTP — and binding the (issuer, externalUserId) pair that assertions can address
Discover applicationSame, initiated from the public feed

Every path converges on the same identity, so a creator who joined by OTP and was later invited by email is one entity, not two.