accessLevel: COMPANY. Use them for outbound calling workflows: scheduling, interviews, interest checks, assessment reminders, and similar global campaigns—with IVR or AI call scripts, defined call times, and optional SMS.
Use these endpoints to create and update campaigns, inspect their public configuration, and add or remove leads (candidates on the campaign) using the same Bearer API key model as the rest of the Partner API.
Base path: /v1/partner/campaignsCompany sites (needed to create a campaign):
/v1/partner/company-sitesAuthentication:
Authorization: Bearer YOUR_API_KEY (same as API keys)
Set
purposeType and related fields to match the kind of campaign you are building (same concepts as creating a global / company campaign in the TapTalent app). Optional GET /campaigns query parameters let you filter by status or purposeType.Concepts
Typical integration flow
GET /v1/partner/company-sites→ pick acompanySiteIdassigned to the API key user.POST /v1/partner/campaigns→ create a campaign with the appropriatepurposeTypeand payload for that campaign.POST /v1/partner/campaigns/:campaignId/leads→ add one or many candidates.GET /v1/partner/campaigns/:campaignId/leads→ poll status labels until your automation is done.
List campaigns
GET /campaigns
Returns company-scoped campaigns (accessLevel: COMPANY) for the company tied to the API key. Results are ordered with newest campaign id first, then paginated.
Query parameters
Example: filter by purpose and paginate
purposeType, optional blocks such as assessment may appear in list items; callSettings and core fields are included when present in the mapped summary.
Get one campaign
GET /campaigns/:campaignId
Returns a campaign detail object with high-level schedule, IVR/AI call settings, opening/closing messages, and purpose-specific blocks when applicable (for example an assessment object for assessment-related campaigns).
- 404 if the id is invalid, deleted, not in the API key’s company, or not a company (
COMPANY) campaign — this avoids leaking whether an id exists in another workspace.
Create campaign
POST /campaigns
Creates a new company campaign. The request body is validated with strict keys (stripUnknown: true); extra properties are rejected.
Rules
purposeTypeidentifies which campaign you are creating (for example scheduling, virtual interviews, interest checks, or assessment reminders). Payload requirements depend on the purpose—mirror the same fields you would use when creating that campaign type in the app (global / company campaign).- Partner API allowlist: by default, only
ASSESSMENT_REMINDERis accepted forPOST /campaigns(and related updates). Your workspace may support additionalpurposeTypevalues when configured server-side. The tables below describe payload expectations for each campaign kind (same as the in-app global campaign creator), even if a given type is not yet enabled for your API key. companySiteIdmust be a site linked to the API key user (useGET /company-sitesfirst). The server applies the same checks as the in-app global campaign creator.phoneNumbermust be a verified outbound number on the company (present in your company caller ID settings with status VERIFIED). If the number is missing or not verified, the API returns a 400 with a clear message.- Schedule: for campaign types that use bulk calling, supply enough data for a valid first-call schedule. Common patterns:
- UTC-based:
callStartTimeUtc(and optionallyretryScheduleUtc) or - Local display + retries:
callTimeand/orfollowUpRetries(timezone-aware scheduling, same behavior as in the app).
- UTC-based:
- Follow-up retries (auto-fill): If you omit
followUpRetries(local schedule) orretryScheduleUtc(UTC schedule), the server fills four retry slots using the same rules as the TapTalent app: offsets +60, +90, +90, and +90 minutes after the previous slot, with calls constrained to 9:00 AM–9:00 PM (if a slot would fall after 9:00 PM, it moves to 9:00 AM on a later day, matching the product UI). - Assessment reminder job title: For
ASSESSMENT_REMINDER, ifjobDetails.jobTitleis omitted or empty, the server usesjobDetails.assessmentName, then the campaigntitle, in that order. At least one of these must yield a non-empty label.
purposeType; required flags vary by type.)
For campaign types that use bulk calling, include enough schedule data that a first execution time can be computed (typically
callTime / followUpRetries and/or callStartTimeUtc / retryScheduleUtc, depending on how you configure the campaign—same rules as in the app). jobDetails is required when the chosen purposeType expects it.
Required fields by purposeType (reference)
These mirror the global / company campaign creator in the app. Fields marked “bulk schedule” apply to the first call and retries (callTime / followUpRetries or callStartTimeUtc / retryScheduleUtc).
Example
jobDetails fields (assessment-oriented campaigns)
When purposeType is ASSESSMENT_REMINDER, jobDetails typically includes:
You may also set
assessmentTestId, SMS templates, autoAddInvitedCandidates, and assessmentFirstReminderDelayHours at the top level of the body (duplicates for convenience); jobDetails remains the canonical nested block for that shape.
Example: UTC-scheduled creation (ASSESSMENT_REMINDER)
201 response
Update campaign
PATCH /campaigns/:campaignId
Updates editable fields for the campaign: title/name, job title, SMS templates, delay, verified phone number, call schedule (until first call starts), opening/closing messages, and call type / AI script—which fields apply depends on the campaign’s purpose and current state.
- The campaign must belong to the company and be a company campaign (404 otherwise).
Example
campaign object follows the same partner response shape as Get one campaign, including createdAt / updatedAt when present.
Company sites
GET /company-sites
Returns sites the API key user may use when creating campaigns. Each entry includes companySiteId and optional site metadata (name, address, region).
Example response
Leads
GET /campaigns/:campaignId/leads
Lists campaign participants with partner-facing lead fields.
Query parameters
Example
assessmentSubmitted is Submitted or Not submitted; flowStatus may show Completed when the lead row completes even if the last dial outcome was pending/no-answer.
POST /campaigns/:campaignId/leads
Adds one or many leads in a single request. Only the simple candidate path is supported (no AI search or marketplace bulk import).
Body
Each lead
Idempotency: the API does not guarantee idempotent adds. Re-posting the same email may return
skipped counts if the candidate is already on the flow or blocked by duplicate/contact rules. Treat added / skipped as best-effort telemetry and reconcile with GET .../leads if needed.
Example
skipped increments when a row is not added because of duplicates, prior contact, or internal eligibility checks.
DELETE /campaigns/:campaignId/leads/:leadId
Removes a lead from the campaign. leadId is the leadId returned by the list endpoint (internal talentId).
Webhooks (campaign completion)
When a lead reaches a terminal campaign outcome, TapTalent sends a webhook event:- Event:
candidate.flow_completed - When sent: after a lead reaches a terminal status such as completed or terminated
- Scope: company-level webhook URL configured in your Partner API settings
Errors
Partner routes normalize failures to JSON:Debugging failed requests
If you see a generic error or500 in your API client:
- For
INVALID_REQUEST, readerror.message(anddetailswhen present). ForINTERNAL_ERROR, review your request payload and retry; if the issue persists, contact your workspace owner/support with the request context. - Check the terminal where the Partner API (Node) is running. Failed creates are logged as
[POST /v1/partner/campaigns]with the underlying exception (operators only). - Confirm
companySiteIdappears inGET /v1/partner/company-sitesfor the same API key user, and thatphoneNumberis a verified company number (same rules as the in-app global campaign creator). - Confirm your API key’s user has access to the assessment
assessmentTestIdyou pass injobDetails.
Operational notes
- Rate limiting: follows the same limits as other Partner API routes for your workspace.
- Voice (IVR): creating or updating IVR messages may trigger text-to-speech generation in the background, as in the product. Administrative or system-only operations are not exposed on the Partner API.
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)