The API contract

Generated from the API’s OpenAPI document. Field names, required flags and types below come from the same snapshot as the downloadable spec.

Source revision cb7d67b. Download OpenAPI JSON. This snapshot has bearer authentication and no confirmed production servers URL.

POST /v1/auth/signup

Signup

Public: no bearer token required.

Request body

Generated from OpenAPI
FieldRequiredTypeConstraints
emailYesstring{"maxLength":254}
passwordYesstring{"maxLength":1024,"minLength":12}
account_nameYesstring{"maxLength":200,"minLength":1}

Responses

201 — Successful Response SessionOut

422 — Validation Error HTTPValidationError

POST /v1/auth/login

Login

Public: no bearer token required.

Request body

Generated from OpenAPI
FieldRequiredTypeConstraints
emailYesstring{"maxLength":254}
passwordYesstring{"maxLength":1024,"minLength":1}

Responses

200 — Successful Response SessionOut

422 — Validation Error HTTPValidationError

POST /v1/auth/logout

Logout

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Ends the session that made this request, and only that one. Signing out of one browser must not sign you out of the others.

Generated from OpenAPI
ParameterLocationRequiredType
authorizationheaderNostring | null

Responses

204 — Successful Response

422 — Validation Error HTTPValidationError

GET /v1/me

Me

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
authorizationheaderNostring | null

Responses

200 — Successful Response MeOut

422 — Validation Error HTTPValidationError

POST /v1/api-keys

Create Key

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Mints a key and shows it once. Reserved to an owner: a key outlives the person and the session that made it, so issuing one is an act of delegation and belongs to whoever owns the bill.

Generated from OpenAPI
ParameterLocationRequiredType
authorizationheaderNostring | null

Request body

Generated from OpenAPI
FieldRequiredTypeConstraints
nameYesstring{"maxLength":200,"minLength":1}
scopesNostring[]{}

Responses

201 — Successful Response CreatedKeyOut

422 — Validation Error HTTPValidationError

GET /v1/api-keys

List Keys

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Prefixes, never secrets. There is no hash in the response and no way back to the key from anything in it.

Generated from OpenAPI
ParameterLocationRequiredType
authorizationheaderNostring | null

Responses

200 — Successful Response KeyOut[]

422 — Validation Error HTTPValidationError

DELETE /v1/api-keys/{key_id}

Revoke Key

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Revoking an already-revoked key succeeds. The caller asked for it to stop working and it does not work. A key belonging to another account is a 404, indistinguishable from one that never existed.

Generated from OpenAPI
ParameterLocationRequiredType
key_idpathYesstring (uuid)
authorizationheaderNostring | null

Responses

204 — Successful Response

422 — Validation Error HTTPValidationError

GET /v1/usage

Usage

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

The ledger, newest first. `amount` is the delta applied to the balance, so summing the column reconciles against it — a reserve is negative, a refund positive.

Generated from OpenAPI
ParameterLocationRequiredType
limitqueryNointeger
authorizationheaderNostring | null

Responses

200 — Successful Response UsageEntry[]

422 — Validation Error HTTPValidationError

POST /v1/profile-searches

Create Profile Search

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
Idempotency-KeyheaderNostring | null
authorizationheaderNostring | null

Request body

Generated from OpenAPI
FieldRequiredTypeConstraints
search_queryNostring | null{}
locationsNostring[]{"maxItems":100}
exclude_locationsNostring[]{"maxItems":100}
current_job_titlesNostring[]{"maxItems":100}
past_job_titlesNostring[]{"maxItems":100}
exclude_current_job_titlesNostring[]{"maxItems":100}
exclude_past_job_titlesNostring[]{"maxItems":100}
current_companiesNostring[]{"maxItems":100}
past_companiesNostring[]{"maxItems":100}
exclude_current_companiesNostring[]{"maxItems":100}
exclude_past_companiesNostring[]{"maxItems":100}
schoolsNostring[]{"maxItems":100}
exclude_schoolsNostring[]{"maxItems":100}
industry_idsNostring[]{"maxItems":100}
exclude_industry_idsNostring[]{"maxItems":100}
function_idsNostring[]{"maxItems":100}
exclude_function_idsNostring[]{"maxItems":100}
seniority_idsNostring[]{"maxItems":100}
exclude_seniority_idsNostring[]{"maxItems":100}
years_of_experienceNostring[]{"maxItems":100}
years_at_current_companyNostring[]{"maxItems":100}
company_headcountNostring[]{"maxItems":100}
company_hq_locationsNostring[]{"maxItems":100}
exclude_company_hq_locationsNostring[]{"maxItems":100}
first_namesNostring[]{"maxItems":100}
last_namesNostring[]{"maxItems":100}
profile_languagesNostring[]{"maxItems":100}
recently_changed_jobsNoboolean | null{}
recently_postedNoboolean | null{}
max_itemsNointeger{"maximum":2000,"minimum":25,"description":"Profiles to fetch. A multiple of 25: the search is served and billed in blocks of 25 whether or not the whole block is taken, so asking for 30 would pay for 50.","default":100}
start_pageNointeger{"maximum":10000,"minimum":1,"description":"Which page of the result set to start from. NOT a stable cursor: the underlying ordering shifts between calls, so consecutive pages can overlap or skip. Prefer one call with a high max_items over several with paging.","default":1}
labelNostring | null{}
webhook_urlNostring | null{}

Responses

202 — Successful Response RunAccepted

422 — Validation Error HTTPValidationError

POST /v1/profile-lookups

Create Profile Lookup

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
Idempotency-KeyheaderNostring | null
authorizationheaderNostring | null

Request body

Generated from OpenAPI
FieldRequiredTypeConstraints
linkedin_urlsYesstring[]{"maxItems":2000,"minItems":1}
labelNostring | null{}
webhook_urlNostring | null{}

Responses

202 — Successful Response RunAccepted

422 — Validation Error HTTPValidationError

GET /v1/runs/{run_id}

Get Run

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
run_idpathYesstring (uuid)
authorizationheaderNostring | null

Responses

200 — Successful Response RunDetail

422 — Validation Error HTTPValidationError

POST /v1/runs/{run_id}/cancel

Cancel Run

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Stop a run that has not finished. Cancelling releases the whole reservation: the run delivered nothing, so it bills nothing. Cancelling an already-cancelled run is not an error — a client retrying a request whose response it never saw wants the run's state, not a failure. Cancelling a *finished* one is, because that asks us to undo something that already cost money, and answering 200 would say we had.

Generated from OpenAPI
ParameterLocationRequiredType
run_idpathYesstring (uuid)
authorizationheaderNostring | null

Responses

200 — Successful Response RunDetail

422 — Validation Error HTTPValidationError

GET /v1/runs/{run_id}/profiles

List Profiles

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
run_idpathYesstring (uuid)
limitqueryNointeger
cursorqueryNostring | null
authorizationheaderNostring | null

Responses

200 — Successful Response ProfilePage

422 — Validation Error HTTPValidationError

GET /v1/runs/{run_id}/profiles.csv

Profiles Csv

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
run_idpathYesstring (uuid)
authorizationheaderNostring | null

Responses

200 — Successful Response

422 — Validation Error HTTPValidationError

GET /v1/catalogs/locations

Locations

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
qqueryNostring | null
limitqueryNointeger
authorizationheaderNostring | null

Responses

200 — Successful Response Catalog

422 — Validation Error HTTPValidationError

GET /v1/catalogs/industries

Industries

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
qqueryNostring | null
limitqueryNointeger
authorizationheaderNostring | null

Responses

200 — Successful Response Catalog

422 — Validation Error HTTPValidationError

GET /v1/catalogs/schools

Schools

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Suggestions, not an allowlist. Unlike locations this list is a curated selection rather than validated coverage, so `schools` accepts values that are not in it. Rejecting every school outside it would refuse most legitimate searches.

Generated from OpenAPI
ParameterLocationRequiredType
qqueryNostring | null
limitqueryNointeger
authorizationheaderNostring | null

Responses

200 — Successful Response Catalog

422 — Validation Error HTTPValidationError

GET /v1/catalogs/company-headcounts

Company Headcounts

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
authorizationheaderNostring | null

Responses

200 — Successful Response Catalog

422 — Validation Error HTTPValidationError

GET /v1/catalogs/experience-bands

Experience Bands

Authorization: Bearer token required. Account management requires a session and appropriate permissions.

Generated from OpenAPI
ParameterLocationRequiredType
authorizationheaderNostring | null

Responses

200 — Successful Response Catalog

422 — Validation Error HTTPValidationError

GET /v1/demo/profile

Demo Profile

Public: no bearer token required.

Responses

200 — Successful Response ProfilePage

Models

AccountOut
Generated from OpenAPI
FieldRequiredTypeConstraints
account_idYesstring (uuid){"format":"uuid"}
nameYesstring{}
roleYesstring{}
balanceYesMoney{}
statusYesstring{}
Catalog
Generated from OpenAPI
FieldRequiredTypeConstraints
dataYesCatalogEntry[]{}
totalYesinteger{}
max_per_requestNointeger | null{}
CatalogEntry
Generated from OpenAPI
FieldRequiredTypeConstraints
valueYesstring{}
labelNostring | null{}
CreatedKeyOut
Generated from OpenAPI
FieldRequiredTypeConstraints
idYesstring (uuid){"format":"uuid"}
nameYesstring{}
key_prefixYesstring{}
scopesYesstring[]{}
created_atYesstring (date-time){"format":"date-time"}
last_used_atNostring (date-time) | null{}
revoked_atNostring (date-time) | null{}
created_byNostring | null{}
secretYesstring{}
Experience
Generated from OpenAPI
FieldRequiredTypeConstraints
ordinalYesinteger{}
positionNostring | null{}
company_nameNostring | null{}
company_linkedin_urlNostring | null{}
employment_typeNostring | null{}
workplace_typeNostring | null{}
locationNostring | null{}
descriptionNostring | null{}
started_onNostring (date) | null{}
ended_onNostring (date) | null{}
is_currentNoboolean{"default":false}
duration_monthsNointeger | null{}
duration_textNostring | null{}
skillsNostring[]{"default":[]}
Failure
Generated from OpenAPI
FieldRequiredTypeConstraints
reasonYesstring{}
detailNostring | null{}
HTTPValidationError
Generated from OpenAPI
FieldRequiredTypeConstraints
detailNoValidationError[]{}
KeyOut
Generated from OpenAPI
FieldRequiredTypeConstraints
idYesstring (uuid){"format":"uuid"}
nameYesstring{}
key_prefixYesstring{}
scopesYesstring[]{}
created_atYesstring (date-time){"format":"date-time"}
last_used_atNostring (date-time) | null{}
revoked_atNostring (date-time) | null{}
created_byNostring | null{}
KeyRequest
Generated from OpenAPI
FieldRequiredTypeConstraints
nameYesstring{"maxLength":200,"minLength":1}
scopesNostring[]{}
LoginRequest
Generated from OpenAPI
FieldRequiredTypeConstraints
emailYesstring{"maxLength":254}
passwordYesstring{"maxLength":1024,"minLength":1}
MeOut
Generated from OpenAPI
FieldRequiredTypeConstraints
user_idYesstring (uuid){"format":"uuid"}
accountsYesAccountOut[]{}
Money
Generated from OpenAPI
FieldRequiredTypeConstraints
microsYesinteger{}
usdYesstring{}
currencyNostring{"default":"USD"}
Pagination
Generated from OpenAPI
FieldRequiredTypeConstraints
total_elementsNointeger | null{}
total_pagesNointeger | null{}
page_numberNointeger | null{}
page_sizeNointeger | null{}
ProfileLookupRequest
Generated from OpenAPI
FieldRequiredTypeConstraints
linkedin_urlsYesstring[]{"maxItems":2000,"minItems":1}
labelNostring | null{}
webhook_urlNostring | null{}
ProfileOut
Generated from OpenAPI
FieldRequiredTypeConstraints
idYesstring (uuid){"format":"uuid"}
ordinalYesinteger{}
public_identifierNostring | null{}
linkedin_urlYesstring{}
requested_urlNostring | null{}
first_nameNostring | null{}
last_nameNostring | null{}
full_nameNostring | null{}
headlineNostring | null{}
aboutNostring | null{}
location_textNostring | null{}
location_cityNostring | null{}
location_stateNostring | null{}
location_region_codeNostring | null{}
location_countryNostring | null{}
location_country_fullNostring | null{}
location_country_codeNostring | null{}
open_to_workNoboolean | null{}
hiringNoboolean | null{}
premiumNoboolean | null{}
influencerNoboolean | null{}
creatorNoboolean | null{}
verifiedNoboolean | null{}
open_profileNoboolean | null{}
memorializedNoboolean | null{}
connections_countNointeger | null{}
follower_countNointeger | null{}
registered_atNostring (date-time) | null{}
profile_languageNostring | null{}
profile_countryNostring | null{}
profile_picture_urlNostring | null{}
photo_urlNostring | null{}
cover_picture_urlNostring | null{}
current_titleNostring | null{}
current_company_nameNostring | null{}
current_company_linkedin_urlNostring | null{}
current_position_started_onNostring (date) | null{}
total_months_experienceNointeger | null{}
months_at_current_companyNointeger | null{}
months_in_current_roleNointeger | null{}
promoted_at_current_companyNoboolean{"default":false}
promotions_countNointeger{"default":0}
companies_countNointeger{"default":0}
avg_months_per_companyNointeger | null{}
linkedin_member_sinceNostring (date) | null{}
skills_flatNostring[]{"default":[]}
languages_flatNostring[]{"default":[]}
school_namesNostring[]{"default":[]}
company_namesNostring[]{"default":[]}
section_totalsNoobject | null{}
experience_truncatedNoboolean{"default":false}
skills_truncatedNoboolean{"default":false}
educationNoany[]{"default":[]}
certificationsNoany[]{"default":[]}
languagesNoany[]{"default":[]}
skillsNoany[]{"default":[]}
projectsNoany[]{"default":[]}
publicationsNoany[]{"default":[]}
coursesNoany[]{"default":[]}
honorsNoany[]{"default":[]}
volunteeringNoany[]{"default":[]}
recommendationsNoany[]{"default":[]}
interestsNoany[]{"default":[]}
patentsNoany[]{"default":[]}
organizationsNoany[]{"default":[]}
websitesNoany[]{"default":[]}
top_skillsNoany[]{"default":[]}
experiencesNoExperience[]{"default":[]}
scraped_atYesstring (date-time){"format":"date-time"}
ProfilePage
Generated from OpenAPI
FieldRequiredTypeConstraints
dataYesProfileOut[]{}
has_moreYesboolean{}
next_cursorNostring | null{}
ProfileSearchRequest
Generated from OpenAPI
FieldRequiredTypeConstraints
search_queryNostring | null{}
locationsNostring[]{"maxItems":100}
exclude_locationsNostring[]{"maxItems":100}
current_job_titlesNostring[]{"maxItems":100}
past_job_titlesNostring[]{"maxItems":100}
exclude_current_job_titlesNostring[]{"maxItems":100}
exclude_past_job_titlesNostring[]{"maxItems":100}
current_companiesNostring[]{"maxItems":100}
past_companiesNostring[]{"maxItems":100}
exclude_current_companiesNostring[]{"maxItems":100}
exclude_past_companiesNostring[]{"maxItems":100}
schoolsNostring[]{"maxItems":100}
exclude_schoolsNostring[]{"maxItems":100}
industry_idsNostring[]{"maxItems":100}
exclude_industry_idsNostring[]{"maxItems":100}
function_idsNostring[]{"maxItems":100}
exclude_function_idsNostring[]{"maxItems":100}
seniority_idsNostring[]{"maxItems":100}
exclude_seniority_idsNostring[]{"maxItems":100}
years_of_experienceNostring[]{"maxItems":100}
years_at_current_companyNostring[]{"maxItems":100}
company_headcountNostring[]{"maxItems":100}
company_hq_locationsNostring[]{"maxItems":100}
exclude_company_hq_locationsNostring[]{"maxItems":100}
first_namesNostring[]{"maxItems":100}
last_namesNostring[]{"maxItems":100}
profile_languagesNostring[]{"maxItems":100}
recently_changed_jobsNoboolean | null{}
recently_postedNoboolean | null{}
max_itemsNointeger{"maximum":2000,"minimum":25,"description":"Profiles to fetch. A multiple of 25: the search is served and billed in blocks of 25 whether or not the whole block is taken, so asking for 30 would pay for 50.","default":100}
start_pageNointeger{"maximum":10000,"minimum":1,"description":"Which page of the result set to start from. NOT a stable cursor: the underlying ordering shifts between calls, so consecutive pages can overlap or skip. Prefer one call with a high max_items over several with paging.","default":1}
labelNostring | null{}
webhook_urlNostring | null{}
RunAccepted
Generated from OpenAPI
FieldRequiredTypeConstraints
run_idYesstring (uuid){"format":"uuid"}
statusYesstring{}
modeYesstring{}
resource_typeYesstring{}
start_pageYesinteger{}
max_itemsYesinteger{}
webhook_urlYesstring | null{}
created_atYesstring (date-time){"format":"date-time"}
RunDetail
Generated from OpenAPI
FieldRequiredTypeConstraints
run_idYesstring (uuid){"format":"uuid"}
statusYesstring{}
modeYesstring{}
resource_typeYesstring{}
labelNostring | null{}
inputYesobject{"additionalProperties":true}
start_pageYesinteger{}
max_itemsYesinteger{}
profiles_deliveredYesinteger{}
duplicates_discardedYesinteger{}
chargedYesMoney{}
paginationYesPagination{}
failureNoFailure | null{}
unresolvedNoUnresolved[]{"default":[]}
created_atYesstring (date-time){"format":"date-time"}
started_atNostring (date-time) | null{}
finished_atNostring (date-time) | null{}
expires_atYesstring (date-time){"format":"date-time"}
SessionOut
Generated from OpenAPI
FieldRequiredTypeConstraints
session_tokenYesstring{}
expires_atYesstring (date-time){"format":"date-time"}
account_idYesstring (uuid){"format":"uuid"}
roleYesstring{}
scopesYesstring[]{}
SignupRequest
Generated from OpenAPI
FieldRequiredTypeConstraints
emailYesstring{"maxLength":254}
passwordYesstring{"maxLength":1024,"minLength":12}
account_nameYesstring{"maxLength":200,"minLength":1}
Unresolved
Generated from OpenAPI
FieldRequiredTypeConstraints
requested_urlNostring | null{}
reasonYesstring{}
detailNostring | null{}
UsageEntry
Generated from OpenAPI
FieldRequiredTypeConstraints
kindYesstring{}
unitsYesinteger{}
amountYesMoney{}
run_idNostring (uuid) | null{}
created_atYesstring (date-time){"format":"date-time"}
ValidationError
Generated from OpenAPI
FieldRequiredTypeConstraints
locYesstring | integer[]{}
msgYesstring{}
typeYesstring{}
inputNoany{}
ctxNoobject{}