Users vs. Contacts
Before diving in, it helps to distinguish the two people-related resources in Shilo:- Users — Your sales agents. They log in to Shilo, receive coaching agendas, and appear in performance metrics.
- Contacts — The leads and clients your agents call. They do not log in to Shilo; they exist as subjects of call analysis.
Listing Users
Retrieve a paginated list of all users in your organization:Retrieving a Single User
Use any of the three supported identifier formats:Updating a User
Send aPUT request with the fields you want to change:
Updating a User’s Email
Email updates have a dedicated endpoint to prevent accidental overwrites. Bothexisting_email and updated_email are required: existing_email identifies the current account and updated_email is the new address to assign:
Suspending a User
When an agent leaves your team, suspend their Shilo membership with aDELETE request:
204 No Content.
User Signal
Retrieve the latest Shilo Signal for an agent. A Signal is the latest AI-derived behavioral and communication profile for the user, useful for coaching, preparation, and adapting your approach in one-on-ones:Invitations
Use the Invitations API to onboard new agents who haven’t yet accepted a Shilo invite. This is especially useful when provisioning users programmatically during your integration setup.Create an Invitation
email and external_user_id are required. Exactly one of invited_by_user_id or invited_by_email is also required. name and first_name are optional. role is optional and may only be ADMIN or MEMBER, defaulting to MEMBER:
List Pending Invitations
Resend an Invitation
202 Accepted.
Cancel an Invitation
204 No Content.
Keeping Users in Sync
Because Shilo supportsexternal_user_id as an identifier, you can build a robust sync without storing Shilo UUIDs in your system:
- When a new agent joins your team,
POST /api/v1/invitationswith theirexternal_user_id. - Once they accept and appear in
GET /api/v1/users, reference them withexternal_user_id:{your-id}in all subsequent calls. - When an agent leaves,
DELETE /api/v1/users/external_user_id:{your-id}to suspend their membership.
Write operations (POST, PUT, DELETE) on users and invitations require a read-write API key. A read-only key returns
403 Forbidden on these endpoints.