Request checklist
Send authentication on every request
Include
Authorization: Bearer uak_your_api_key. Treat 401 Unauthorized as a key or account configuration issue.Use pagination consistently
Always pass
page and pageSize for list endpoints. Do not assume all records fit in the first response.Check credits before paid actions
Use
GET /external/credits/balance before event unlocks, email unlocks, or exhibitor event searches.Precheck when the next action depends on access state
Use
POST /external/actions/precheck before workflows where you need to know whether an action is allowed, whether it should charge credits, or which unlock path applies.Make asynchronous jobs resumable
Store
task_id from contact unlock responses so polling can continue after page refreshes, worker restarts, or network failures.Handle item-level async outcomes
Treat a terminal task as complete for the job, then inspect each item result before counting delivered emails or failed contacts.
Error handling matrix
| Status | Meaning | Recommended behavior |
|---|---|---|
400 Bad Request | Request shape or validation failed. | Fix client-side input and show a validation message. |
401 Unauthorized | API key is missing, invalid, revoked, or not visible to the caller. | Ask the user to reconnect or rotate the key. |
402 Payment Required | The operation needs credits or access that is not currently available. | Pause the workflow, show credit context, and let the user decide. |
404 Not Found | The requested event, exhibitor, person, or task was not found. | Re-check stored identifiers and avoid retry loops. |
409 Conflict | The request conflicts with current profile, task, or workflow state. | Refresh current state before retrying. |
429 Too Many Requests | Rate limit exceeded. | Retry only after Retry-After; use exponential backoff. |
Credit-safe UI pattern
For credit-consuming actions, use a two-step confirmation pattern:- Show what the user is about to unlock or search.
- Show the expected credit cost when known.
- Check current balance.
- Ask the user to confirm.
- Execute the API call.
- Refresh balance and result state.
- Reconcile final billing against the post-action balance and task or endpoint response.
Credit-consuming actions
| Action | Endpoint | Current behavior |
|---|---|---|
| Event unlock | POST /external/events/:id/unlock | Charges 2000 credits when the event was not already unlocked. Repeating the same unlock is idempotent and returns creditsUsed: 0. |
| Contact email unlock | POST /external/contacts/unlock | Starts an async task and charges 15 credits per chargeable contact. A completed task can contain mixed item-level outcomes. |
| Exhibitor company search | POST /external/exhibitors/search-by-company-name | Charges 50 credits per successful company search attempt. |
| Exhibitor event search | POST /external/exhibitors/search-events | Charges 50 credits per successful search attempt. |
Rate-limit friendly polling
For contact unlock tasks, avoid tight polling loops.Logging and support
Log enough context to investigate issues without storing sensitive data:- endpoint path and method
- response status
traceIdfrom error responses when availableX-Request-IDif your client sends one- task ID for asynchronous jobs
- event or personnel identifiers involved in the workflow
Related concepts
Authentication
How to authenticate API requests.
Error conventions
Shared error response shape and tracing fields.
Pagination conventions
Standard pagination fields and page-size limits.
Rate limits
Headers, retry behavior, and integration guidance.