Docs
API reference

Search candidates, jobs and reports

GET
/api/v1/search

Looks a name, title, company, email or ID up across the organization and returns the IDs to retrieve. The scope you need depends on what you search: candidates:read for candidates, jobs:read for jobs and reports:read for reports. With kind, the key needs that scope and you can page through all matches, 20 at a time. Without it you get the best five of each kind the key can read (moreKinds says which have more), and a key that can read none of them is refused. Closed jobs are left out unless includeClosedJobs=true. Searches are limited to 120 a minute for each key, on top of the overall rate limit.

Required scope: at least one of candidates:read, jobs:read, reports:read; the endpoint says which one each request needs.

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

Authorization

ApiKey
headerAuthorizationBearer <probb_live_<id>_<secret>>

Query Parameters

q*string

What to look for: 2 to 100 characters and at most 5 words. Matches names, titles, companies, emails and IDs.

Lengthlength <= 500
kind?string

Search one kind of record and page through all its matches. Leave it out to get the best few of each kind the key can read.

Value in"candidate""job""report"
includeClosedJobs?string

Also match closed jobs. Open jobs only by default, like the app.

Default"false"
Value in"true""false"
cursor?string

The nextCursor from the previous page. Needs kind.

Length1 <= length <= 2048

Response Body

Success.

application/json
  1. response
object*string
data*array<>

The matches, best first.

hasMore*boolean

Whether another page follows.

nextCursor*|

Pass as cursor to fetch the next page, or null at the end.

moreKinds*array<>

When kind is left out: the kinds that have more matches than are shown. Search again with that kind to page through them. Empty when kind is given.

Example Request
# 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/search" \  -H "Authorization: Bearer $PROBB_API_KEY"
Example Response
{  "object": "list",  "data": [    {      "object": "search_result",      "type": "candidate",      "id": "string",      "title": "string",      "subtitle": "string",      "status": "open"    }  ],  "hasMore": true,  "nextCursor": "string",  "moreKinds": [    "candidate"  ]}