Create Onboarding Job API
Creates an onboarding job and returns the end-user onboarding link in the same response.
Endpoint
POST https://portal.idmission.com/api/create-onboarding-link
Content-Type: application/json
X-Api-Key-Id: urn:apikeysv1:prod:region:company:YOUR_KEY_UUID
X-Api-Key-Secret: YOUR_API_KEY_SECRETCall this endpoint from your server only. Never expose the API key secret in client-side code or mobile apps.
Authentication
Send the API key as two request headers:
| Header | Required | Description |
|---|---|---|
X-Api-Key-Id | Yes | API key identifier (URN format) |
X-Api-Key-Secret | Yes | API key secret |
Credentials are not accepted in the request body. Sending them there returns HTTP 401.
Breaking change. Earlier versions of this API took
apiKeyIdandapiKeySecretas JSON body fields. Move them to the headers above — the body form is no longer supported.
Obtain credentials
- Sign in to https://dashboard.idmission.com
- Go to Journey Settings → Credentials
- Click Create keys to generate an API key ID and secret
OnBo validates the key and uses its bound journey. The job is filed under the
key’s own account unless you send companySlug naming a company beneath it.
Keys created before September 2026 carry no account and are rejected. Create a new key from Journey Settings → Credentials.
API keys must be journey-bound — create keys from Journey Settings → Credentials in the dashboard for each journey you integrate.
Request body
Send flat top-level fields. Credentials go in the headers, never here:
{
"name": "Jane Doe",
"phone": "+15551234567",
"email": "jane@example.com",
"campaignToken": "campaign-abc-123",
"firstDayOfEmployment": "03/15/2026",
"channel": ["sms", "email"],
"companySlug": "thornbury-south"
}Fields
| Field | Required | Notes |
|---|---|---|
name | Yes* | Candidate full name |
phone | Yes* | Contact phone number |
email | No | Optional contact email |
campaignToken | No | Optional campaign or tracking identifier |
firstDayOfEmployment | Yes for I-9* | Required for I-9 onboarding journeys |
channel | No | Notification channels; only "sms" and/or "email" allowed |
companySlug | No | Company the job belongs to. Must be your key’s account or one beneath it; omit to use the key’s own account |
* Required fields are enforced server-side. Missing or invalid values return HTTP 400.
Input validation
Every request is validated before a job is created. Always send the X-Api-Key-Id and X-Api-Key-Secret headers, and name and phone in the body. For I-9 onboarding journeys, also include firstDayOfEmployment. If you set channel, use only "sms" and/or "email".
If validation fails, the API returns HTTP 400 with an error describing what to fix.
Success response (200)
{
"onboardingLink": "https://onbo.idmiss.io/abc123",
"jobId": "job_xxxxxxxx"
}| Field | Description |
|---|---|
onboardingLink | URL to send the end user — available immediately |
jobId | Created job identifier |
Redirect the user to onboardingLink, or deliver it via your own SMS/email flow.
Error responses
| Status | Meaning |
|---|---|
| 400 | Invalid request — missing required fields or invalid field values |
| 401 | Invalid or missing X-Api-Key-Id / X-Api-Key-Secret header |
| 403 | Key not authorized for this operation |
| 500 | Server error — retry with backoff; contact support if persistent |
Common validation errors (400)
| Issue | Action |
|---|---|
Missing name | Include candidate full name |
Missing phone | Include phone in E.164 or accepted format |
Missing firstDayOfEmployment for I-9 | Required for I-9 onboarding journeys |
Invalid channel | Use only "sms" and/or "email" |
Example (curl)
curl -X POST "https://portal.idmission.com/api/create-onboarding-link" \
-H "Content-Type: application/json" \
-H "X-Api-Key-Id: urn:apikeysv1:prod:region:company:YOUR_KEY_UUID" \
-H "X-Api-Key-Secret: YOUR_API_KEY_SECRET" \
-d '{
"name": "Jane Doe",
"phone": "+15551234567",
"email": "jane@example.com",
"firstDayOfEmployment": "03/15/2026",
"channel": ["sms", "email"]
}'Example success
{
"onboardingLink": "https://onbo.idmiss.io/session/xyz",
"jobId": "019fd6b7-3def-7ece-bd47-788508d3424d"
}Integration checklist
- Create production API keys in the dashboard (Journey Settings → Credentials → Create keys)
- Call the API from your backend only
- Send
X-Api-Key-IdandX-Api-Key-Secretas request headers - Include
nameandphonefor every request - Include
firstDayOfEmploymentwhen using an I-9 journey key - Restrict
channeltosmsand/oremailif provided - Deliver
onboardingLinkto the end user
Behavior notes
- No session minting — authentication is a direct API key ID + secret sent as headers (no session cache or re-mint on 401).
- Validation — always send the
X-Api-Key-IdandX-Api-Key-Secretheaders plusnameandphone; includefirstDayOfEmploymentfor I-9 journeys. Invalid requests return 400. - Journey from key — use the correct API key per journey.
See also
- Overview — quick start and prerequisites