API Reference
Start a prospecting job
Starts a bounded public prospecting job for an account group through the integrations API.
/v1/accounts/{accountGroupId}/prospectingCredit consumption
Each imported prospect costs 1 credit, or 2 credits when searchEmails is enabled. Insufficient credits return 402 INSUFFICIENT_CREDITS.
Result limits
maxResults is capped by source and plan. LinkedIn Search allows up to 500 results, Sales Navigator allows up to 2,000 results, Post Commenters allows up to 1,000 results, Post Reactions allows up to 500 results, and url_upload accepts up to 1,000 profile URLs.
Source requirements
linkedin_search requires searchUrl, sales_navigator requires savedSearchId or leadListId, post_commenters and post_reactions require postUrl, and url_upload requires 1-1000 LinkedIn profile URLs.
Asynchronous job
Prospecting jobs run asynchronously and may take several minutes depending on the search size. Use the job status endpoint to poll for completion.
Integration notes
Required API permission
prospecting:write.
Prerequisites
integration_api_key, account_group_access, valid_prospecting_request.
Idempotency
send a stable Idempotency-Key header when retrying this request.
Note
Database prospecting replaces the old ICP template import flow. Start jobs here with LinkedIn search, Sales Navigator, post engagement, or URL upload sources.
Parameters
accountGroupIdPathType: string
Account group ID that scopes the request.
Required
Idempotency-KeyHeaderType: string
Request field for idempotency key.
Required
Request body
Required
Optional
Content types
application/json
Fields
nameType: string
Human-readable name for this resource.
Required
searchEmailsType: boolean
Whether email discovery should run for imported prospects.
Optional
typeType: linkedin_search | sales_navigator | post_commenters | post_reactions | url_upload
Resource type used to classify this object.
Required
searchUrlType: string
URL value for search url.
Required
maxResultsType: integer
Request field for max results.
Optional
savedSearchIdType: string
Provider saved-search ID used as the prospecting source.
Optional
leadListIdType: string
Provider lead-list ID used as the prospecting source.
Optional
postUrlType: string
LinkedIn post URL used as the signal or engagement source.
Required
urlsType: array<string>
URL value for urls.
Required
Responses
Existing completed prospecting job replayed for the same request
Schema: ProspectingJobStartSuccessResponse
Job created
Schema: ProspectingJobStartSuccessResponse
Request validation failed
Schema: ValidationErrorResponse
Invalid or missing API key
Schema: ErrorResponse
Payment or credit balance required
Schema: ErrorResponse
Missing required permission
Schema: ErrorResponse
Resource not found
Schema: ErrorResponse
Conflict — resource is in a state that prevents this operation
Schema: ErrorResponse
Request validation failed
Schema: ValidationErrorResponse
Rate limit exceeded
Schema: ErrorResponse
Internal server error
Schema: ErrorResponse
Upstream service error
Schema: ErrorResponse
Response examples
200 Example JSONProspectingJobStartSuccessResponse
{
"success": true,
"data": {
"jobId": "507f1f77bcf86cd799439011",
"status": "queued",
"createdAt": "2026-04-28T15:30:00.000Z"
},
"error": null,
"traceId": "507f1f77bcf86cd799439011"
}202 Example JSONProspectingJobStartSuccessResponse
{
"success": true,
"data": {
"jobId": "507f1f77bcf86cd799439011",
"status": "queued",
"createdAt": "2026-04-28T15:30:00.000Z"
},
"error": null,
"traceId": "507f1f77bcf86cd799439011"
}400 Example JSONValidationErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}401 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}402 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}403 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}404 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}409 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}422 Example JSONValidationErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}429 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}500 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}502 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}