Partner API: Search & Profile Endpoints
Full endpoint reference for the Partner API — search, expert profiles, filters, and disciplines, with sample requests and responses.
This page covers the endpoints you'll use to build search and profile experiences. See Authentication for how to send your key, and Billing & Usage for what each call costs.
#GET /search — search experts
Billable: 1 × search per call.
One endpoint covers all three search styles:
- By name:
q=Jane Kowalski - By discipline/keyword:
q=biomechanics, or structured filters only (noq) - Natural language:
q=orthopedic surgeon in California with spinal fusion trial experience, under $700/hr
Natural-language queries are decomposed server-side — location, experience, and rate terms are extracted into filters automatically — and matched with hybrid keyword + semantic retrieval.
#Query Parameters
| Param | Type | Notes |
|---|---|---|
q | string ≤ 500 | Name, keywords, or natural language. Optional if filters are set. |
page | int 1–100 | Default 1. Each page is a separate billable call. |
size | int 1–50 | Default 20. |
sort_by | enum | _score (default), full_name, years_experience, total_cases |
sort_order | enum | asc | desc |
state | string[] | Repeatable, e.g. state=CA&state=NY |
city | string[] | Repeatable |
specialties | string[] | Values from GET /filters |
categories | string[] | Values from GET /filters |
credentials | string[] | e.g. MD, PhD, PE |
discipline_slug | string | From GET /disciplines |
years_experience_min / _max | int | |
hourly_rate_min / _max | int | USD |
testifying_expert / consulting_expert | bool |
#Sample Request
GET /partner/v1/search?q=neurologist%20in%20New%20York%20with%20traumatic%20brain%20injury%20experience&page=1&size=2
Authorization: Bearer exl_partner_live_...
Idempotency-Key: 7c9e6679-7425-40de-944b-e07fc1f90ae7
#Sample Response 200 OK
{
"success": true,
"data": {
"query": "neurologist in New York with traumatic brain injury experience",
"results": [
{
"expert_uuid": "3f8a1c2e-9b4d-4e6f-8a70-5c1d2e3f4a5b",
"full_name": "Dr. Miriam Vance",
"professional_suffix": "MD, FAAN",
"headline": "Board-certified neurologist — traumatic brain injury & concussion litigation",
"avatar_url": "https://cdn.exlitem.com/avatars/3f8a1c2e.jpg",
"profile_url_slug": "miriam-vance-neurology-ny",
"specialties": ["Neurology", "Traumatic Brain Injury", "Neurocritical Care"],
"categories": ["Medical & Surgical"],
"credentials": ["MD", "FAAN"],
"state": "NY",
"city": "New York",
"years_experience": 22,
"total_cases": 87,
"hourly_rate_min": 550,
"hourly_rate_max": 750,
"bio_snippet": "Dr. Vance has served as a testifying expert in over 80 <mark>traumatic brain injury</mark> matters...",
"org_name": "Vance Neurology Group",
"score": 24.318,
"highlights": { "bio": ["...80 <mark>traumatic brain injury</mark> matters..."] },
"testifying_expert": true,
"consulting_expert": true,
"has_email": true,
"has_phone": true,
"has_direct_contact": true
}
],
"total": 143,
"page": 1,
"size": 2,
"pages": 72,
"did_you_mean": null,
"auto_corrected": false,
"original_query": null,
"corrected_query": null
},
"pagination": { "page": 1, "size": 2, "total": 143, "pages": 72 },
"error": null
}
Notes:
totalis capped at 500 deep-paginated results per query — narrow your filters rather than paging past that.- Misspelled queries may be auto-corrected (
auto_corrected: true, withoriginal_query/corrected_querypopulated) or suggest an alternative indid_you_mean. has_email/has_phone/has_direct_contactindicate contactability only. Search results never include raw contact values regardless of your account's capabilities — fetchGET /experts/{uuid}for that. Without thecontact_infocapability, link users to the expert's Exlitem profile (https://exlitem.com/experts/{profile_url_slug}) to initiate contact instead.
#GET /experts/{expert_uuid} — full profile
Billable: 1 × profile_view per call, plus a flat contact-reveal surcharge on calls that return real contact info — see Billing & Usage.
GET /partner/v1/experts/3f8a1c2e-9b4d-4e6f-8a70-5c1d2e3f4a5b
Authorization: Bearer exl_partner_live_...
Returns bio, credentials, education, work history, publications, memberships, awards, rates, and case-history stats (total_cases, times_testified, times_deposed, plaintiff_defendant_ratio). Fields may be null where an expert has chosen to hide them.
Contact info (emails/phones) — capability-gated:
- Only accounts approved for the
contact_infocapability (granted per-account by your Exlitem contact) receive real values. Every other account gets"emails": null, "phones": null— present in the response shape, never populated. - Even with the capability, a given expert's
emails/phonesmay come back as an empty array (notnull) if that expert has opted out of public contact display, or with fewer entries than exist on file if some are marked not-visible.has_email/has_phone/has_direct_contactalways reflect existence on file regardless of capability or display opt-out. - Whenever a response actually includes a non-empty
emailsorphonesarray, that call is billed with an additional flat contact-reveal surcharge (see Billing & Usage). addressesare never returned by the Partner API, capability or not.
#POST /experts/{expert_uuid}/similar — similar experts
Not yet available. This endpoint is designed but not built — it's scoped for a future release and will 404 if called today. The request/response shape below is the target contract and won't change before launch.
{ "size": 5, "filter_state": "NY", "exclude_expert_ids": [] }
Billable at 1 × search per call, same item shape as GET /search results, no pagination.
#GET /filters — valid filter values
Free.
Returns the currently valid values (with live counts) for specialties, categories, states, credentials, and experience/rate ranges. Cacheable for 10 minutes.
{
"success": true,
"data": {
"specialties": [
{ "value": "Neurology", "label": "Neurology", "count": 412 },
{ "value": "Orthopedic Surgery", "label": "Orthopedic Surgery", "count": 388 }
],
"states": [
{ "value": "CA", "label": "California", "count": 2101 },
{ "value": "NY", "label": "New York", "count": 1874 }
],
"credentials": [
{ "value": "MD", "label": "MD", "count": 5230 }
]
},
"pagination": null,
"error": null
}
#GET /disciplines — discipline taxonomy
Free.
Returns the two-level discipline tree. Slugs from this response are usable as discipline_slug in GET /search.
#Next Steps
Continue to Billing & Usage to understand what each call costs and how to track your monthly usage.