Run a search
Creates a search and starts the pipeline. Returns immediately with a scanId — the run continues in the background, so poll GET /api/scans/{id} for status and results.
A target count written into rawInput (“find 25”) is parsed out and used as the run’s target.
curl --request POST \
--url https://api.revcenter.ai/api/scans \
--header 'Content-Type: application/json' \
--cookie session= \
--data '
{
"criteria": {
"family": "<string>",
"title_variants": [
"<string>"
],
"allowed_seniority": [],
"must_have": [
"<string>"
],
"industries": [
"<string>"
],
"metro": "San Jose, CA",
"geo_radius_mi": 123,
"remote_ok": true,
"exclude_titles": [
"<string>"
],
"exclude_industries": [
"<string>"
],
"exclude_companies": [
"<string>"
],
"avoid_titles": [
"<string>"
],
"avoid_industries": [
"<string>"
],
"avoid_companies": [
"<string>"
],
"comp_band": [
123
],
"years_experience": {
"min": 123,
"max": 123
},
"min_avg_tenure_years": 123,
"skills": [
"<string>"
],
"skills_required": [
"<string>"
],
"languages_required": [
"<string>"
],
"target_company_profile": {
"sector": "<string>",
"employee_range": [
123
],
"pe_backed_preferred": true
},
"rubric_weights": {
"title": 123,
"years": 123,
"skills": 123,
"geo": 123,
"industry": 123,
"seniority": 123
}
},
"rawInput": "<string>",
"mode": "candidate",
"projectId": "<string>"
}
'const options = {
method: 'POST',
headers: {cookie: 'session=', 'Content-Type': 'application/json'},
body: JSON.stringify({
criteria: {
family: '<string>',
title_variants: ['<string>'],
allowed_seniority: [],
must_have: ['<string>'],
industries: ['<string>'],
metro: 'San Jose, CA',
geo_radius_mi: 123,
remote_ok: true,
exclude_titles: ['<string>'],
exclude_industries: ['<string>'],
exclude_companies: ['<string>'],
avoid_titles: ['<string>'],
avoid_industries: ['<string>'],
avoid_companies: ['<string>'],
comp_band: [123],
years_experience: {min: 123, max: 123},
min_avg_tenure_years: 123,
skills: ['<string>'],
skills_required: ['<string>'],
languages_required: ['<string>'],
target_company_profile: {sector: '<string>', employee_range: [123], pe_backed_preferred: true},
rubric_weights: {title: 123, years: 123, skills: 123, geo: 123, industry: 123, seniority: 123}
},
rawInput: '<string>',
mode: 'candidate',
projectId: '<string>'
})
};
fetch('https://api.revcenter.ai/api/scans', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.revcenter.ai/api/scans"
payload = {
"criteria": {
"family": "<string>",
"title_variants": ["<string>"],
"allowed_seniority": [],
"must_have": ["<string>"],
"industries": ["<string>"],
"metro": "San Jose, CA",
"geo_radius_mi": 123,
"remote_ok": True,
"exclude_titles": ["<string>"],
"exclude_industries": ["<string>"],
"exclude_companies": ["<string>"],
"avoid_titles": ["<string>"],
"avoid_industries": ["<string>"],
"avoid_companies": ["<string>"],
"comp_band": [123],
"years_experience": {
"min": 123,
"max": 123
},
"min_avg_tenure_years": 123,
"skills": ["<string>"],
"skills_required": ["<string>"],
"languages_required": ["<string>"],
"target_company_profile": {
"sector": "<string>",
"employee_range": [123],
"pe_backed_preferred": True
},
"rubric_weights": {
"title": 123,
"years": 123,
"skills": 123,
"geo": 123,
"industry": 123,
"seniority": 123
}
},
"rawInput": "<string>",
"mode": "candidate",
"projectId": "<string>"
}
headers = {
"cookie": "session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"scanId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ontologyPlan": {}
}Authorizations
A signed-in workspace session, sent as a browser cookie. Requests must include credentials, and act on the session's active workspace.
Body
The structured brief a search runs on. Every field is optional, but a search with no signal finds nothing useful.
The distinction that matters: exclude_* fields are hard and disqualify, while avoid_* fields are soft and only rank down. A great person at a firm you'd rather avoid still shows up; a person at an excluded firm never does.
Show child attributes
Show child attributes
The original brief. Kept for provenance and parsed for a target count.
candidate searches for people against a role. client discovers target companies first, then their decision-makers.
candidate, client Attach the run to a client project so its context and disqualifiers apply.
curl --request POST \
--url https://api.revcenter.ai/api/scans \
--header 'Content-Type: application/json' \
--cookie session= \
--data '
{
"criteria": {
"family": "<string>",
"title_variants": [
"<string>"
],
"allowed_seniority": [],
"must_have": [
"<string>"
],
"industries": [
"<string>"
],
"metro": "San Jose, CA",
"geo_radius_mi": 123,
"remote_ok": true,
"exclude_titles": [
"<string>"
],
"exclude_industries": [
"<string>"
],
"exclude_companies": [
"<string>"
],
"avoid_titles": [
"<string>"
],
"avoid_industries": [
"<string>"
],
"avoid_companies": [
"<string>"
],
"comp_band": [
123
],
"years_experience": {
"min": 123,
"max": 123
},
"min_avg_tenure_years": 123,
"skills": [
"<string>"
],
"skills_required": [
"<string>"
],
"languages_required": [
"<string>"
],
"target_company_profile": {
"sector": "<string>",
"employee_range": [
123
],
"pe_backed_preferred": true
},
"rubric_weights": {
"title": 123,
"years": 123,
"skills": 123,
"geo": 123,
"industry": 123,
"seniority": 123
}
},
"rawInput": "<string>",
"mode": "candidate",
"projectId": "<string>"
}
'const options = {
method: 'POST',
headers: {cookie: 'session=', 'Content-Type': 'application/json'},
body: JSON.stringify({
criteria: {
family: '<string>',
title_variants: ['<string>'],
allowed_seniority: [],
must_have: ['<string>'],
industries: ['<string>'],
metro: 'San Jose, CA',
geo_radius_mi: 123,
remote_ok: true,
exclude_titles: ['<string>'],
exclude_industries: ['<string>'],
exclude_companies: ['<string>'],
avoid_titles: ['<string>'],
avoid_industries: ['<string>'],
avoid_companies: ['<string>'],
comp_band: [123],
years_experience: {min: 123, max: 123},
min_avg_tenure_years: 123,
skills: ['<string>'],
skills_required: ['<string>'],
languages_required: ['<string>'],
target_company_profile: {sector: '<string>', employee_range: [123], pe_backed_preferred: true},
rubric_weights: {title: 123, years: 123, skills: 123, geo: 123, industry: 123, seniority: 123}
},
rawInput: '<string>',
mode: 'candidate',
projectId: '<string>'
})
};
fetch('https://api.revcenter.ai/api/scans', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.revcenter.ai/api/scans"
payload = {
"criteria": {
"family": "<string>",
"title_variants": ["<string>"],
"allowed_seniority": [],
"must_have": ["<string>"],
"industries": ["<string>"],
"metro": "San Jose, CA",
"geo_radius_mi": 123,
"remote_ok": True,
"exclude_titles": ["<string>"],
"exclude_industries": ["<string>"],
"exclude_companies": ["<string>"],
"avoid_titles": ["<string>"],
"avoid_industries": ["<string>"],
"avoid_companies": ["<string>"],
"comp_band": [123],
"years_experience": {
"min": 123,
"max": 123
},
"min_avg_tenure_years": 123,
"skills": ["<string>"],
"skills_required": ["<string>"],
"languages_required": ["<string>"],
"target_company_profile": {
"sector": "<string>",
"employee_range": [123],
"pe_backed_preferred": True
},
"rubric_weights": {
"title": 123,
"years": 123,
"skills": 123,
"geo": 123,
"industry": 123,
"seniority": 123
}
},
"rawInput": "<string>",
"mode": "candidate",
"projectId": "<string>"
}
headers = {
"cookie": "session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"scanId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ontologyPlan": {}
}