For the complete documentation index, see llms.txt. This page is also available as Markdown.

REST API v0

This document describes the Mobly REST API (version v0).

All endpoints are:

  • JSON-based

  • Authenticated via API Key

  • Versioned under /v0


Base URL

All requests should be made relative to the following base URL:

https://core-api.getmobly.com/api/v0

Authentication

All requests must include a valid API key. You can request an API key by contacting customer support.

API Key Header

Send your API key using the x-api-key header:

x-api-key: YOUR_API_KEY_HERE

Example Request

Authentication Errors

Condition
Status
Description

Missing API key

401

Unauthorized – API key not provided.

Invalid API key

403

Forbidden – API key header invalid.

Error responses follow this structure:


Response Format

All successful endpoints return results in a consistent wrapper format.

Single-Resource Endpoints

  • status: HTTP status code.

  • results: Single object for the specific resource (e.g. event, lead).

Array-Resource Endpoints (Paginated)

  • status: HTTP status code.

  • pagination.limit: number of items returned in this page.

  • pagination.offset: zero-based page index.

  • results.<resource>: an array for the specific resource (e.g. events, leads).

  • results.total: total number of records matching the query for the organization.

If a resource cannot be found, a 404 is returned:


Pagination Parameters

List endpoints support the following query parameters:

Name
Type
Default
Max
Description

limit

number

20

50

Page size. Values greater than 50 are clamped.

offset

number

0

Zero-based page index (0 = first page).

Example:

Returns up to 25 leads, for the third page of results.


Rate Limiting

Mobly API requests are rate-limited to ensure fair usage and to protect system performance. Rate limits apply per API key using a token bucket model with two key properties:

  • Burst Capacity (maxTokens) – the maximum number of requests that can be made at once

  • Refill Rate (refillRate) – how many requests are added back to the bucket over time

Each incoming request consumes 1 token. If no tokens are available, the API returns HTTP 429 – Too Many Requests.

Clients can track their usage in real time using the rate-limit headers returned on every response.

How the Token Bucket Works

Every API key has:

  • maxTokens – maximum number of allowed burst requests

  • refillRate – tokens added per second

  • tokensRemaining – current number of tokens in the bucket

  • retryAt – timestamp when the next token will be available if the bucket is empty

Example:

Given the default usage rates:

maxTokens = 20 refillRate = 1 token/second

Then:

  • You can make up to 20 requests instantly (burst)

  • You can sustain 1 request per second indefinitely

  • If you exceed the limit, you must wait until a token becomes available

Rate Limit Headers

The following headers are included on all successful responses and all 429 responses:

Header
Description

X-RateLimit-Limit

The maximum burst capacity (maxTokens) for the API key.

X-RateLimit-Remaining

How many tokens remain after this request*.

X-RateLimit-Reset

Unix timestamp (seconds) when the bucket will fully refill.

Retry-After

(Only on 429) Number of seconds to wait before retrying.


Endpoint Summary

All available endpoints in v0:

  • GET /events

  • GET /events/:eventId

  • POST /events

  • PUT /events/:eventId

  • DELETE /events/:eventId

  • GET /events/:eventId/leads

  • PUT /events/:eventId/leads

  • DELETE /events/:eventId/leads/:leadId

  • GET /events/:eventId/users

  • GET /leads

  • GET /leads/:leadId

  • POST /leads

  • PATCH /leads/:leadId

  • DELETE /leads/:leadId

  • GET /leadActivityEvents

  • GET /leadActivityEvents/:leadActivityEventId

  • GET /activations

  • GET /activations/:activationId

  • GET /tagGroups

  • GET /tagGroups/:tagGroupId

  • GET /industryEvents

  • GET /industryEvents/bookmarks

  • GET /industryEvents/:industryEventId

  • POST /industryEvents

  • PUT /industryEvents/:industryEventId

  • POST /industryEvents/:industryEventId/bookmark

  • DELETE /industryEvents/:industryEventId/bookmark


Events

GET /events

List events for the authenticated organization.

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

Response

EventV0Response

Note: EventType is a string enum (e.g. CONFERENCE, TRADE_SHOW, EVENT, SIDECAR, DINNER_MEAL, HAPPY_HOUR, OTHER).

Note: startDate & endDate are formatted as an ISO 8601 date, e.g. "2025-11-21"


GET /events/:eventId

Fetch a single event by ID.

Path Parameters

Name
Type
Description

eventId

number

Event ID

Example

Response


POST /events

Create an event for the authenticated organization.

Body Payload

Response


PUT /events/:eventId

Update an event for the authenticated organization.

Important: This endpoint updates the full event record.

Path Parameters

Name
Type
Description

eventId

number

Event ID

Body Payload

Response


DELETE /events/:eventId

Delete an event for the authenticated organization.

Path Parameters

Name
Type
Description

eventId

number

Event ID

Response


GET /events/:eventId/leads

Retrieve the leads associated with a specific event, including their registration and check-in status.

Path Parameters

Name
Type
Description

eventId

number

Event ID

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

Response

EventLeadV0Response


PUT /events/:eventId/leads

Associate existing leads with an event and optionally update their registered and checkedIn status.

  • If a lead is not yet associated with the event, a new association is created.

  • If the lead is already associated, the existing registered and checkedIn values are updated.

If registered or checkedIn are omitted, they default to false.

Note: This endpoint does not remove existing associations. To remove a lead from an event, use:

DELETE /events/:eventId/leads/:leadId

Path Parameters

Name
Type
Description

eventId

number

Event ID

Body Payload

Response


DELETE /events/:eventId/leads/:leadId

Delete a lead's association with an event for the authenticated organization.

Path Parameters

Name
Type
Description

eventId

number

Event ID

leadId

string

Lead ID

Response


GET /events/:eventId/users

Retrieve the users assigned to a specific event for the authenticated organization.

Path Parameters

Name
Type
Description

eventId

number

Event ID

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

Response

UserV0Response


Leads

GET /leads

List leads for the authenticated organization.

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

Response

LeadV0Response

Note: IntegrationType is a string enum (e.g. MARKETO, HUB_SPOT, ZOHO, SALES_FORCE, PIPE_DRIVE, ELOQUA, PARDOT, WEBHOOK).

Note: PhoneNumberTypeEnum is a string enum (e.g. MOBILE, LANDLINE, DIRECT, OFFICE, HQ, UNKNOWN).

Note: leadProvided includes numbers users from your organization have entered whereas moblyProvided includes numbers provided by Mobly's data enrichment.


GET /leads/:leadId

Fetch a single lead by ID.

Path Parameters

Name
Type
Description

leadId

string

Lead ID

Example

Response


POST /leads

Create a lead for the authenticated organization.

Body Payload

Response

PATCH /leads/:leadId

Partially update a lead and its associated persona record.

Only the fields included in the request body are modified. All omitted fields remain unchanged.

This endpoint is designed for incomplete or incremental updates to lead data. Sending all persona fields in the body effectively performs a full update of the lead record.

PATCH Semantics

  • If a field is omitted, it is left unchanged.

  • If a field is explicitly set to null, the corresponding value is cleared (set to NULL).

For phoneNumbers:

  • If phoneNumbers is omitted, existing phone numbers remain unchanged.

  • If phoneNumbers is null or an empty array [], all existing phone numbers are removed.

  • If phoneNumbers is a non-empty array, it fully replaces all existing phone numbers.

phoneNumbers is not merged. Always send the complete list of phone numbers you want to retain or omit the field.

For remoteId:

  • If remoteId is omitted, existing remote ID's remain unchanged.

  • If remoteId is included and id is set to null, the remote ID for the provided integrationType is cleared.

  • If remoteId is included and id has a value, the remote ID for the provided integrationType is created or updated.

Path Parameters

Name
Type
Description

leadId

string

Lead ID

Body Payload

Response


DELETE /leads/:leadId

Delete a lead for the authenticated organization.

Path Parameters

Name
Type
Description

leadId

string

Lead ID

Response


Lead Activity Events

GET /leadActivityEvents

List lead activity events for the authenticated organization.

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

  • leadId – Optional filter to only return results associated with a specific lead

  • eventType – Optional filter to only return results of a specific type

Response

LeadActivityEventV0Response

Note: LeadActivityEventType is a string enum (e.g. NOTE, FACEBOOK, LINKEDIN, TWITTER, CALENDAR, PHONE, EMAIL, SMS, CAMPAIGN_ASSOCIATION, CSV_UPLOAD, MOBLY_API, EMAIL_CONTENT, SMS_CONTENT, OTHER_CONTENT).


GET /leadActivityEvents/:leadActivityEventId

Fetch a single lead activity event by ID.

Path Parameters

Name
Type
Description

leadActivityEventId

string

Lead activity event ID

Example

Response


Activations

GET /activations

List activations for the organization.

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

Response

ActivationV0Response

Note: ActivationType is a string enum (e.g. CONFERENCE, TRADE_SHOW, EVENT, SIDECAR, DINNER_MEAL, HAPPY_HOUR, BREAKFAST, LUNCH, COFFEE_CHAT, RECEPTION, SPEAKING_SESSION, PANEL_DISCUSSION, WORKSHOP, DEMO, SPORTS_GAME, PARTY, BOOTH, GIVEAWAY, NETWORKING_MIXER, ONSITE_OFFICE_VISIT, OTHER).


GET /activations/:activationId

Fetch a single activation by ID.

Path Parameters

Name
Type
Description

activationId

string

Activation ID.

Example

Response


Tag Groups

GET /tagGroups

List tag groups defined for the organization, including their tag options.

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

Response

TagGroupV0Response

Note: TagGroupStatus is a string enum (e.g. ARCHIVED, DRAFT, PUBLISHED).


GET /tagGroups/:tagGroupId

Fetch a single tag group by ID.

Path Parameters

Name
Type
Description

tagGroupId

string

Tag group ID.

Example

Response


Industry Events

Industry events represent trade shows, conferences, and other industry events tracked globally (not scoped to a single organization). Organizations can bookmark industry events to track interest.

GET /industryEvents

List industry events. Supports filtering by URL or searching by keyword.

Query Parameters

  • limit – page size (default 20, maximum 50)

  • offset – zero-based page index (default 0)

  • eventUrl – optional; returns only the industry event matching this exact URL

  • q – optional; full-text search across name, venueCity, venueState, venueCountry, description, keywords, industries, and personas

Note: If eventUrl is provided, q is ignored. If neither is provided, all industry events are returned (paginated).

Response

IndustryEventV0Response


GET /industryEvents/bookmarks

List industry events bookmarked by the authenticated organization.

Response


GET /industryEvents/:industryEventId

Fetch a single industry event by ID. Includes isBookmarked indicating whether the authenticated organization has bookmarked this event.

Path Parameters

Name
Type
Description

industryEventId

string

Industry event ID

Response


POST /industryEvents

Create an industry event. Includes automatic deduplication:

  1. If an industry event with the same eventUrl already exists, the existing record is returned (created: false).

  2. If no URL match but the name and startDate match an existing record, the new event is still created but potentialDuplicates are returned for the caller to review.

Body Payload

Response


PUT /industryEvents/:industryEventId

Partially update an industry event. Only the fields included in the request body are modified.

Path Parameters

Name
Type
Description

industryEventId

string

Industry event ID

Body Payload

Response


POST /industryEvents/:industryEventId/bookmark

Bookmark an industry event for the authenticated organization.

Path Parameters

Name
Type
Description

industryEventId

string

Industry event ID

Response


DELETE /industryEvents/:industryEventId/bookmark

Remove an industry event from the authenticated organization's bookmarks.

Path Parameters

Name
Type
Description

industryEventId

string

Industry event ID

Response


Error Examples

400 Bad Request

401 Unauthorized

403 Forbidden

404 Not Found

429 Too Many Requests

The response includes:

  • Retry-After — how many seconds the client should wait

  • X-RateLimit-Reset — when the bucket will refill

Guidelines:

  • Do not retry immediately

  • Respect the Retry-After header`

  • Use exponential backoff for repeated failures

500 Internal Server Error

Last updated

Was this helpful?