Skip to main content
For Affiliates & Partners

Partner API: Search & Profile Endpoints

Full endpoint reference for the Partner API — search, expert profiles, filters, and disciplines, with sample requests and responses.

5 min read

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 (no q)
  • 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

ParamTypeNotes
qstring ≤ 500Name, keywords, or natural language. Optional if filters are set.
pageint 1–100Default 1. Each page is a separate billable call.
sizeint 1–50Default 20.
sort_byenum_score (default), full_name, years_experience, total_cases
sort_orderenumasc | desc
statestring[]Repeatable, e.g. state=CA&state=NY
citystring[]Repeatable
specialtiesstring[]Values from GET /filters
categoriesstring[]Values from GET /filters
credentialsstring[]e.g. MD, PhD, PE
discipline_slugstringFrom GET /disciplines
years_experience_min / _maxint
hourly_rate_min / _maxintUSD
testifying_expert / consulting_expertbool

#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:

  • total is 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, with original_query/corrected_query populated) or suggest an alternative in did_you_mean.
  • has_email / has_phone / has_direct_contact indicate contactability only. Search results never include raw contact values regardless of your account's capabilities — fetch GET /experts/{uuid} for that. Without the contact_info capability, 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_info capability (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/phones may come back as an empty array (not null) 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_contact always reflect existence on file regardless of capability or display opt-out.
  • Whenever a response actually includes a non-empty emails or phones array, that call is billed with an additional flat contact-reveal surcharge (see Billing & Usage).
  • addresses are 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.