Collaborators API
Invite end customers as collaborators on an entity and manage active access
Entities created via your API key are owned by the user behind that API key. To give your end customer access to the entity in their own EntityEngine account — for ongoing maintenance, surveys, or document review — invite them as a collaborator. Once they accept, they can sign in and see the entity in their own dashboard while you keep API control.
Signup-on-claim caveat
The invited user must complete signup or login on EntityEngine to claim collaborator access. Today, this is a one-time interruption in your in-app flow. A magic-link single-click claim flow is planned but not yet shipped.
Lifecycle
POST /entities/:id/invitations— sends the invite email and returns anaccept_url. Status ispending.- The customer clicks the link, signs up or logs in, and is added to
entity_collaborators. Invitation status flips toaccepted. - Need to remove access? Call
DELETE /entities/:id/collaborators/:userId. You cannot remove yourself; transfer ownership first. - Need to cancel a pending invite? Call
DELETE /entities/:id/invitations/:invId. Status flips torevoked.
Invitations
Collaborators
Related webhook events
| Event | Fires when |
|---|---|
| invitation.sent | A new invitation is created and the email is dispatched. |
| invitation.accepted | The invitee signs up / logs in and claims access. |
| invitation.expired | An invitation lapses past its expiry without being accepted. |
| invitation.revoked | A pending invitation is cancelled by the entity owner. |
| collaborator.added | A user is added to the entity (after accepting invitation). |
| collaborator.removed | A collaborator is removed from the entity. |
Example: invite a customer to their own entity
Invite + monitor flow
# 1. Invite the customer to the entity you created on their behalf
curl -X POST https://app.entityengine.io/api/v1/entities/ent_01HZX.../invitations \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "email": "founder@example.com", "role": "collaborator" }'
# 2. (Optional) Forward the accept_url yourself if you want to skip the invite email
# — just disable email at the dashboard if needed.
# 3. Listen for invitation.accepted to know when the customer is in.
# Then, list collaborators to confirm:
curl https://app.entityengine.io/api/v1/entities/ent_01HZX.../collaborators \
-H "Authorization: Bearer sk_live_..."
# 4. If the customer churns, revoke access:
curl -X DELETE https://app.entityengine.io/api/v1/entities/ent_01HZX.../collaborators/usr_01HZY... \
-H "Authorization: Bearer sk_live_..."