Skip to main content
GET /api/v1/search searches orders, patients, prescribers, and products in a single request. Results are ranked and each carries a result_type so you can tell what you matched. Searchable fields include IDs, order numbers, names, emails, phone numbers, prescriber identifiers, product names, and SKUs — with substring matching across all of them.
limit defaults to 50 and maxes at 100.

Exact phrases

Wrap the phrase in URL-escaped quotes to match it exactly rather than as loose terms:

Searching one type

When you know what you’re looking for, the scoped endpoints are faster and return less noise:
Patient search accepts a date of birth in MM/DD/YYYY, YYYYMMDD, or YYYY-MM-DD — you don’t have to normalize the format your users type.

Search versus filtered lists

Search is for finding a known thing when you have a fragment of it — a partial name, a phone number, half an order number. It is not the tool for enumerating a set. For “every order that shipped last week” or “every prescription without an order”, use the list endpoints with filters and pagination:
Those are exhaustive and paginated. Search is ranked and capped at 100 results, so it will quietly miss things if you use it as a list.
Searching for a prescription that never matched a patient is a different problem — an unmatched inbound message may not surface where you expect. See why Blend can’t find a prescription I sent.

Search all

GET /search

Search patients

Accepts several DOB formats

Search orders

By order number or external ID

Search products

By name or SKU