Authentication & Access
How do I get an API key?
How do I get an API key?
- Visit our API Key Request Form
- Fill in your details and use case
- Our team will review and provision your key within 24 hours
- You’ll receive your API key via secure email
Authorization header:What authentication method does Gomobile use?
What authentication method does Gomobile use?
| Feature | API Key |
|---|---|
| Lifespan | Long-lived |
| Obtained via | Request from Gomobile team |
| Refresh needed | No |
| Best for | All API integrations |
My API key stopped working. What happened?
My API key stopped working. What happened?
- Expired - Your key may have an expiration date
- Revoked - The key may have been revoked for security reasons
- Wrong format - Ensure you’re using
x-api-key: <your-key> - Typo - Double-check you’re using the correct key
Can I have multiple API keys?
Can I have multiple API keys?
- Per environment: Separate keys for development, staging, and production
- Per integration: One key per third-party service
- Per team member: Individual keys for accountability
Contacts & Audiences
What's the difference between a contact and an audience?
What's the difference between a contact and an audience?
| Concept | Description |
|---|---|
| Contact | An individual person with a phone number and optional details (name, email, address, custom attributes) |
| Audience | A named group of contacts that can be targeted by a program |
Can a contact be in multiple audiences?
Can a contact be in multiple audiences?
What phone number formats are accepted?
What phone number formats are accepted?
- ✅
+212612345678(Morocco) - ✅
+14155551234(USA) - ❌
06-12-34-56-78(spaces/dashes) - ❌
0612345678(missing country code)
How do I import contacts in bulk?
How do I import contacts in bulk?
Can I add custom fields to contacts?
Can I add custom fields to contacts?
text, number, boolean, date, phone_number, email, url.Then include it when creating/updating contacts:Flows & Nodes
What's the difference between a flow and a program?
What's the difference between a flow and a program?
| Concept | Purpose |
|---|---|
| Flow | Defines what happens during a call - the logic, audio, inputs, branching |
| Program | Defines when, who, and how - audience, schedule, retry strategy, pause windows |
Can I reuse flows across multiple programs?
Can I reuse flows across multiple programs?
flowId in different programs targeting different
audiences or schedules.What node types are available?
What node types are available?
| Node | Purpose | Key Outputs |
|---|---|---|
| Dial | Places outbound call | onAnswer, onVoicemail, onNoAnswer, onBusy, onRejected, onError |
| Answer | Answers inbound call | onSuccess, onError |
| Play | Plays audio | onComplete, onError |
| DTMF | Collects keypad input | branches (by digit), onSuccess, onTimeout, onInvalid, onMaxRetries |
| Record | Records voice | onComplete, onTimeout, onError |
| Condition | Branches on logic | onTrue, onFalse, onError |
| Set Variable | Stores a value | onSuccess, onError |
| Hangup | Ends the call | None (terminal) |
How do I test a flow before launching?
How do I test a flow before launching?
graph object) in the request body.Response:POST /flows/execute with a test contact.Calls & Execution
Why didn't my call go through?
Why didn't my call go through?
GET /call-report/:jobId) for the outcome field:| Outcome | Meaning |
|---|---|
no_answer | Recipient didn’t pick up (timeout reached) |
busy | Line was busy |
rejected | Recipient declined the call |
failed | System error (check outcomeReason) |
cancelled | Call was cancelled before completion |
- Phone number format is correct
- DID pool has valid numbers
- Program status is
active
What does 'AMD' mean?
What does 'AMD' mean?
enableAMD: true) on a Dial node, the system detects whether a human or voicemail answered:- Human detected → Routes to
onAnswer - Machine detected → Routes to
onVoicemail
How do I stop a running campaign?
How do I stop a running campaign?
-
Pause (can resume later):
-
Cancel (permanent):
Can I call the same contact multiple times?
Can I call the same contact multiple times?
fixed_delay: Retry after X minutesscheduled: Retry at specific times
Retry Strategies
How many times will Gomobile retry a failed call?
How many times will Gomobile retry a failed call?
none: No retries (1 attempt total)fixed_delay: Up tomaxRetriesadditional attemptsscheduled: Number of dates inretryDatesarray
What triggers a retry?
What triggers a retry?
- ✅
completed- No retry (success) - 🔄
no_answer- Retry - 🔄
busy- Retry - 🔄
rejected- Retry - 🔄
voicemail- Retry (configurable) - ❌
failed- Retry (system error)
Do retries respect pause windows?
Do retries respect pause windows?
Audio & Media
What audio formats are supported?
What audio formats are supported?
POST /audio-management/upload using multipart/form-data. The system processes and converts files automatically.Supported content types include:audio/wavaudio/mp3audio/mpeg
How do I upload audio files?
How do I upload audio files?
id to use in your Play nodes.What's a dictionary used for?
What's a dictionary used for?
- Key
"1"→ audio of “one” spoken - Key
"100"→ audio of “one hundred” spoken - Key
"thousand"→ audio of “thousand” spoken
Troubleshooting
I'm getting 401 Unauthorized
I'm getting 401 Unauthorized
I'm getting 429 Too Many Requests
I'm getting 429 Too Many Requests
- Reduce request frequency - Add delays between calls
- Implement exponential backoff - Wait longer after each retry
- Batch operations - Use bulk endpoints like
/contact/upsert - Check response headers for rate limit details
My program won't start
My program won't start
startAtis in the future - Or already passed if you want immediate start- Audience is not empty -
AudienceEmptyErrorif no contacts - No existing running execution -
ExecutionAlreadyRunningError - Program status is
active- Notdraftorarchived
POST /programs/:id/launchStill have questions?
If you couldn’t find the answer you’re looking for:- Check our Troubleshooting Guide
- Browse the Core Concepts documentation
- Contact our support team