Help centerIntegrations

For: Admins

Search cases and users with a manage key

Find cases, people, case members, roles and import rows by text, with filters, from your own software.

In this article6 sections

Before you start

This page covers GET https://prd-api-manage.caseactive.com/v1/<hub id>/search, which finds records in your hub by text. It only ever searches your own hub.

Parameters

ParameterWhat it doesRequiredDefault
tableWhat to search: cases, host_users, case_users, host_roles, case_invoices, host_imports or import_itemsYes—
queryThe text to find. * matches everything, for a search by filters alone.Yes—
query_byThe text fields to look in, separated by commas, such as given_name,family_name,emailYes—
filter_byOne condition, such as case_status:=1. Repeat the parameter to add more; all must hold.NoNone
sort_byA number field and direction, such as created_on:descNoBest match
pageWhich pageNo1
limitResults a page holds, up to 250No10
  • A word in query matches from its start, and allows a typo or two, so jan finds Jane. In Tag IDs, names, email addresses, phone numbers and Reference IDs it also matches anywhere inside, so end-2026 finds rear-end-2026.
  • A filter is a field, an operator and a value: := exact, :!= not, and :>, :<, :>= and :<= for numbers. A condition can't contain &&, ||, brackets or commas: send several filter_by parameters instead. A value may hold / and +, such as ref_id:=2026/rear-end or phone:=+15551234567; in an address, send + as %2B, or it arrives as a space.
  • Only number fields can sort. Dates in results are Unix seconds.
  • A record can take a few minutes to show up after it's created or changed.
  • Inquiries can't be searched with a key.

Tables

tableText fields, to search and filterNumber fields, to filter and sort
casescase_id, ref_id (the Tag IDTag ID A permanent label you give a case, such as rear-end-2026, also shown as Reference ID and used in imports.), title, description, case_type, case_stage, users (members' user IDs)case_status (1 open, 0 closed), users_ct, date_opened, created_on, last_activity, updated_on
host_usersuser_id, given_name, family_name, email, phone, host_ref_id, title, company, address1, address2, locality, region, postal_code, country, gender, birthdate_md (month and day, such as 04-12), locale, zoneinfo, host_user_type, host_granted_status, host_default_role, host_staff_designationhost_user_status (1 active, 0 disabled), host_cases_ct, email_verified, phone_verified, created_on, updated_on
case_userscase_id, user_id, case_ref_id, case_role_id, and the case's title and descriptioncase_status, created_on, updated_on
host_rolesrole_id, name, role_type, permissions, case_read_fields, case_write_fieldsusers_ct, created_on, updated_on
case_invoicesinvoice_id, name, invoice_number, po_number, host_ref_id, description, notes, status (open, paid, void, uncollectible or processing), status_reason, payment_gateway, case_id, user_id, participants_ids, refund_status (pending, succeeded, failed or canceled), refund_reason, completed_on_daytotal, subtotal, discount, tax, refund_amount, payment_attempts_ct, due_date, completed_on, created_on, updated_on
host_importsimport_id, name, source, type, user_id, statustotal, passed, failed, created_on, updated_on
import_itemsimport_id, unique_id, type, status, error_msg, error_recordcreated_on, updated_on

host_users includes your hub's Virtual AssistantVirtual Assistant An automated team member that posts welcome messages, check-ins and stage posts for the firm; its posts carry a Virtual Assistant badge., whose host_user_type is bot. case_users holds no names: find the person in host_users, then filter case_users by user_id. case_invoices holds published invoices only. Its amounts are in cents, and tax and discount are fractions. A refunded invoice keeps the status paid; its refund is in refund_status.

Examples

A case by its Tag ID:

curl -G https://prd-api-manage.caseactive.com/v1/ca-7e6d5c4b3a2f10/search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "table=cases" \
  --data-urlencode "query=*" \
  --data-urlencode "query_by=ref_id" \
  --data-urlencode "filter_by=ref_id:=rear-end-2026"

Active people whose name or email starts with jane, newest first:

curl -G https://prd-api-manage.caseactive.com/v1/ca-7e6d5c4b3a2f10/search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "table=host_users" \
  --data-urlencode "query=jane" \
  --data-urlencode "query_by=given_name,family_name,email" \
  --data-urlencode "filter_by=host_user_status:=1" \
  --data-urlencode "sort_by=created_on:desc"

Open cases at one stageStage A step a case moves through, such as Intake or Demand sent, which the firm names and describes and which shows on the case page., using a stage_id from GET /stages: table=cases&query=*&query_by=title&filter_by=case_status:=1&filter_by=case_stage:=stage::20260927120000_8c1f0e2d3b4a59.

Invoices changed since 8 October 2026 at midnight UTC, oldest change first: table=case_invoices&query=*&query_by=name&filter_by=updated_on:>1791417600&sort_by=updated_on:asc.

Results

{
  "data": {
    "found": 1,
    "page": 1,
    "hits": [
      {
        "document": {
          "case_id": "cc-1a2b3c4d5e6f70",
          "host_id": "ca-7e6d5c4b3a2f10",
          "ref_id": "rear-end-2026",
          "title": "Jane Sample auto accident",
          "case_type": "general",
          "case_status": 1,
          "users": ["cu-4f1c2a9e8b7d60", "cu-9d8c7b6a5f4e30"],
          "users_ct": 2,
          "date_opened": 1790899200,
          "created_on": 1790949909,
          "updated_on": 1790949909
        }
      }
    ]
  }
}

found is how many records match. Each hit's document is the record; hits also carry the search engine's own scoring fields, which you can ignore. There's no nextLink: ask for the next page until you've had found results.

A word search can also match similar values, so when you look up one record by an ID, check the document you get back.

If a call is refused

StatusmessageWhy
400SchemaFieldsExceptiontable, query or query_by is missing or unknown, or a filter_by holds characters it can't (FieldSearchFilterTypeException, at filter_by.0 for the first)
400SearchParameterExceptionThe search engine refused it: an unknown field, a filter it can't read, a text field in sort_by, or limit over 250. reason holds the engine's own words.
403BotSearchTableNotAllowedExceptionYou asked for host_inquiries, which a key can't search
500InternalErrorThe search engine is down. Try again later.

Related articles

Create and update cases with a manage keyList, create, read, update and delete your hub's cases from your own software, including their stage and custom fields.IntegrationsAdd and update users with a manage keyList your hub's people, add clients, read someone's details and cases, and disable or re-enable their access.Integrations