Skip to main content
GET
List Projects

Authorizations

Authorization
string
header
required

OAuth 2.0 client credentials. The access token from POST /oauth/token is sent as a bearer token. Request only the scopes you need.

zivio-tenant-id
string
header
required

Your Zivio organisation identifier. The regional API endpoints serve every Zivio organisation, so each request must identify yours.

Query Parameters

page
integer
default:1

Page number for pagination

limit
integer
default:20

Number of results per page (max 100)

Required range: x <= 100
filter[<attribute>]
object

Filterable attributes:

integer (operators: eq, not_eq, in, not_in, gt, gte, lt, lte, between): administrator_id, bid_round, bids_count, cancellation_reason_id, cancelled_by_id, client_billing_contact_id, client_id, client_org_id, client_payment_terms_in_days, closed_by_id, completed_by_id, current_approval_level, fee_schedule_id, id, location_id, original_project_id, payment_terms_in_days, project_matches_count, risk_level_id, skill_category_id, skill_category_tier3_id, skill_subcategory_id, supplier_id, talent_pool_id datetime (operators: eq, not_eq, gt, gte, lt, lte, between): approved_at, auto_close_at, bafo_submission_deadline, cancelled_at, closed_at, created_at, due_on, ended_at, hired_at, original_due_on, submission_deadline, submitted_at, updated_at string (operators: eq, not_eq, in, not_in, like, not_like): additional_notes, award_type (one of: direct_award, competition), cancellation_other_reason, custom_location, description, duration, fee_methodology (one of: markup, supplier_absorbed, tiered_markup, supplier_absorbed_itemized, markup_itemized), halted_comment, location_type, posting_type, reject_reason, state (one of: draft, pending, new, halted, in_progress, work_completed, cancelled, closed, superseded, bafo), submission_deadline_time_zone, time_zone, title, type, visibility money (operators: eq, not_eq, in, not_in, gt, gte, lt, lte, between): budget, estimated_savings, original_budget, original_rate, projected_recognized_savings, rate, target_cost decimal (operators: eq, not_eq, in, not_in, gt, gte, lt, lte, between): cost_score_allocation_percentage, fee, markup, quality_score_allocation_percentage date (operators: eq, not_eq, gt, gte, lt, lte, between): start_date boolean (operators: eq, not_eq): approved, is_child, is_parent, is_template json (operators: eq, not_eq): award_suppliers

Note: money values are in minor currency units (e.g. pence for GBP). Use 1000000 for £10,000.00.

Note: like is a case-insensitive substring match — pass the bare term (filter[title][like]=redesign). Do not add % wildcards; they are not needed.

or[group]
object

OR condition groups. Filters within a group are ANDed; groups are ORed.

Syntax: or[group_key][<attribute>]=value or or[group_key][<attribute>][operator]=value

Examples:

  • Simple OR: or[1][state]=draft&or[2][state]=pending
  • Complex: or[1][state]=draft&or[1][budget][gte]=50000&or[2][state]=closed
  • With custom fields: or[1][cf][priority]=high&or[2][state]=pending

Group keys can be any string (1, 2, a, b, etc.) - they just need to be unique.

cf[key]
object

Custom field filters using concise syntax.

Syntax:

  • Equality: cf[key]=value
  • With operator: cf[key][operator]=value

Operators: eq (default), not_eq, in, not_in, contains, not_contains, exists, not_exists

Examples:

  • cf[priority]=high - exact match
  • cf[department][in]=eng,design - matches any
  • cf[priority][not_eq]=low - not equal
  • cf[notes][contains]=urgent - contains text
  • cf[legacy_field][exists]= - field exists (value ignored)
  • cf[deprecated][not_exists]= - field does not exist
or[group][cf][key]
object

Custom field filters within OR condition groups.

Syntax: or[group][cf][key]=value or or[group][cf][key][operator]=value

Example: or[1][cf][priority]=high&or[2][state]=pending

sort[<attribute>]
object

Sort results by attribute. Direction defaults to ascending.

Syntax: sort[<attribute>]= (ascending) or sort[<attribute>]=desc (descending)

Sortable attributes: additional_notes, administrator_id, approved, approved_at, auto_close_at, award_suppliers, award_type, bafo_submission_deadline, bid_round, bids_count, budget, cancellation_other_reason, cancellation_reason_id, cancelled_at, cancelled_by_id, client_billing_contact_id, client_id, client_org_id, client_payment_terms_in_days, closed_at, closed_by_id, completed_by_id, cost_score_allocation_percentage, created_at, current_approval_level, custom_location, description, due_on, duration, ended_at, estimated_savings, fee, fee_methodology, fee_schedule_id, halted_comment, hired_at, id, is_child, is_parent, is_template, location_id, location_type, markup, original_budget, original_due_on, original_project_id, original_rate, payment_terms_in_days, posting_type, project_matches_count, projected_recognized_savings, quality_score_allocation_percentage, rate, reject_reason, risk_level_id, skill_category_id, skill_category_tier3_id, skill_subcategory_id, start_date, state, submission_deadline, submission_deadline_time_zone, submitted_at, supplier_id, talent_pool_id, target_cost, time_zone, title, type, updated_at, visibility

Examples:

  • Ascending: sort[created_at]= or sort[created_at]=asc
  • Descending: sort[created_at]=desc

Response

List of projects

projects
object[]