API reference
List candidates
GET
Newest first. With updatedSince, ordered by last change, oldest first, for syncing.
Required scope: candidates:read (candidates:write also works).
Errors
- 400:
invalid_cursor,unknown_field - 401:
authentication_required,invalid_api_key - 403:
api_access_disabled,insufficient_scope - 422:
invalid_parameter - 429:
rate_limit_exceeded - 500:
api_error - 503:
service_unavailable
ApiKeyheader
AuthorizationBearer <probb_live_<id>_<secret>>limit?integerPage size, 1 to 100. Defaults to 25.
Range
1 <= value <= 100Default
25cursor?stringThe nextCursor from the previous page.
Length
1 <= length <= 2048email?stringOnly the candidate with this email (case-insensitive).
Length
1 <= length <= 254externalId?stringOnly the candidate with this external ID.
Length
1 <= length <= 128search?stringMatch against name, email, role and location.
Length
1 <= length <= 120createdSince?stringOnly candidates created at or after this time (ISO-8601).
Format
date-timeupdatedSince?stringOnly candidates changed at or after this time. Lists then run oldest change first, so you can resume from the last updatedAt you saw.
Format
date-timeSuccess.
application/json- response
object*stringdata*array<>The candidates on this page.
hasMore*booleanWhether another page follows.
nextCursor*|Pass as cursor to fetch the next page, or null at the end.
# Set PROBB_URL and PROBB_API_KEY. Replace any *_VALUE placeholder and any example ID (such as job_example) with a real one.curl --fail-with-body -X GET "$PROBB_URL/api/v1/candidates" \ -H "Authorization: Bearer $PROBB_API_KEY"Example Response
{ "object": "list", "data": [ { "object": "candidate", "id": "string", "externalId": "string", "name": "string", "email": "string", "linkedinUrl": "string", "currentRole": "string", "location": "string", "resumeStatus": "none", "resumeError": "string", "revision": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "hasMore": true, "nextCursor": "string"}