---
title: "Get Jobs By Filter"
method: POST
path: "/jobs/filter"
---

# Get Jobs By Filter

`POST /jobs/filter`

## Request

- Base URL: `https://dc-region.zuperpro.com/api`
- URL: `https://dc-region.zuperpro.com/api/jobs/filter`
- Auth: API key in header `x-api-key`

Rule-engine-based list endpoint — an alternative to the simple `filter.*` query params on the plain list endpoint, for building complex AND/OR filter conditions. Get the field key enum for filter_rules from the corresponding Meta Filter endpoint. `keyword` (free text) is special-cased and matches job_title/work_order_number/zip codes rather than going through the rule engine.

## Request body

- object
  - `page` integer
  - `limit` integer: Max 1000 — larger values are rejected.
  - `sort` 'ASC' | 'DESC'
  - `sort_by` 'work_order_number' | 'job_priority' | 'scheduled_start_time' | 'due_date' | 'job_title' | 'created_at' | 'updated_at' | 'job_total' | 'current_job_status.status_name' | 'job_category.category_name' | 'none'
  - `filter_rules` object[]: Rule-engine filter conditions, ANDed/ORed per filter_rule_operator. `type` must match the type the module's Meta Filter endpoint declares for that `key` (`fieldDataKey`) — sending the wrong `type` is rejected with an error. A handful of keys shared across modules (e.g. `scheduled_date_range`, `schedule_status`, `asset`, `property`, `assigned_to`, `auto_charge.status`) require `module` to be set to this endpoint's module (e.g. `"JOB"`) since the query engine branches on it directly.
    - `key` 'work_order_number' | 'job_title' | 'job_category_uid' | 'scheduled_date_range' | 'job_priority' | 'current_job_status.status_type' | 'is_recurrence' | 'job_tags' | 'delayed_job' | 'parent_job' | 'job_feedback.rating' | 'job_type' | 'status_uid' | 'route_uid' | 'request_uid' | 'assigned_to_team.team_uid' | 'assigned_to.user_uid' | 'assigned_to' | 'schedule_status' | 'scheduled_start_time' | 'scheduled_end_time' | 'due_date' | 'customer_address.street' | 'customer_address.state' | 'customer_address.country' | 'customer_address.zip_code' | 'customer_address.city' | 'customer_billing_address.street' | 'customer_billing_address.state' | 'customer_billing_address.country' | 'customer_billing_address.zip_code' | 'customer_billing_address.city' | 'created_by' | 'created_at' | 'updated_at' | 'territory_uid' | 'invoice.is_invoiced' | 'job_total' | 'customer_uid' | 'organization_uid' | 'property_uid' | 'asset_uid' | 'contract_uid' | 'project_uid' | 'waiting_on_po' | 'waiting_on_mr' | 'keyword': The filterable field — get the full current list from this module's Meta Filter endpoint.
    - `operator` 'EQUAL_TO' | 'NOT_EQUAL_TO' | 'CONTAINS' | 'NOT_CONTAINS' | 'GREATER_THAN' | 'LESS_THAN' | 'BETWEEN' | 'IS_EMPTY' | 'IS_NOT_EMPTY'
    - `value` unknown
    - `type` 'default_field' | 'nested_field' | 'custom_field'
    - `module` string: Required only for the handful of cross-module-shared keys noted above.
  - `filter_rule_operator` 'AND' | 'OR'
  - `filter.module_uid` string: Comma-separated list of this module's own UIDs to restrict to.
  - `fields_to_select` string: Sparse fieldset selector.
  - `preferred_timezone` string
  - `cursor` string
  - `prev_cursor` string
  - `cursor_pagination` boolean: Switches the response to the cursor-paginated shape.
  - `last_page` boolean
  - `include_custom_field_internal_object` boolean

## Response `200`

200

- object
  - `type` 'success'
  - `data` object[]: Job documents — same shape as GET /jobs, with assigned_to/assigned_to_team/created_by hydrated.
  - `total_records` integer
  - `current_page` integer: 0 in cursor-paginated mode.
  - `total_pages` integer: 0 in cursor-paginated mode.
  - `paging` object, nullable: Populated only in cursor-paginated mode.
    - `next` string, nullable
    - `previous` string, nullable
    - `has_more` boolean

## Other responses

- `400`: 400

## Changes

- **2026-11-03** `3c21bc232e16`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zuper/apis/zuper-pro-api/changes/jobs/filter/post.md)

---

[API](https://skmtc.dev/zuper/apis/zuper-pro-api.md) - [All operations](https://skmtc.dev/zuper/apis/zuper-pro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zuper/apis/zuper-pro-api/revisions/3c21bc232e16?raw)
