Back to reference

API Reference

Start a prospecting job

Starts a bounded public prospecting job for an account group through the integrations API.

POST/v1/accounts/{accountGroupId}/prospecting

Credit 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

accountGroupIdPath

Type: string

Account group ID that scopes the request.

Required

Idempotency-KeyHeader

Type: string

Request field for idempotency key.

Required

Request body

Required

Optional

Content types

application/json

Fields

name

Type: string

Human-readable name for this resource.

Required

searchEmails

Type: boolean

Whether email discovery should run for imported prospects.

Optional

type

Type: linkedin_search | sales_navigator | post_commenters | post_reactions | url_upload

Resource type used to classify this object.

Required

searchUrl

Type: string

URL value for search url.

Required

maxResults

Type: integer

Request field for max results.

Optional

savedSearchId

Type: string

Provider saved-search ID used as the prospecting source.

Optional

leadListId

Type: string

Provider lead-list ID used as the prospecting source.

Optional

postUrl

Type: string

LinkedIn post URL used as the signal or engagement source.

Required

urls

Type: array<string>

URL value for urls.

Required

Responses

200

Existing completed prospecting job replayed for the same request

Schema: ProspectingJobStartSuccessResponse

202

Job created

Schema: ProspectingJobStartSuccessResponse

400

Request validation failed

Schema: ValidationErrorResponse

401

Invalid or missing API key

Schema: ErrorResponse

402

Payment or credit balance required

Schema: ErrorResponse

403

Missing required permission

Schema: ErrorResponse

404

Resource not found

Schema: ErrorResponse

409

Conflict — resource is in a state that prevents this operation

Schema: ErrorResponse

422

Request validation failed

Schema: ValidationErrorResponse

429

Rate limit exceeded

Schema: ErrorResponse

500

Internal server error

Schema: ErrorResponse

502

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"
}