---
title: "Global search"
method: GET
path: "/v1/search/global"
tags: ["Search"]
---

# Global search

`GET /v1/search/global`

## Request

- Base URL: `https://api.frihet.io`
- URL: `https://api.frihet.io/v1/search/global`
- Auth: API key in header `X-API-Key`

Read-only bounded search across invoices, expenses, vendors, clients, and products. Uses existing workspace-scoped search paths and does not mutate data.

## Query parameters

- `q` string, required
- `types` string
- `limit` integer
- `offset` integer

## Response `200`

Typed global search results

- object
  - `data` GlobalSearchResult[]
    - `type` 'invoices' | 'expenses' | 'vendors' | 'clients' | 'products'
    - `id` string
    - `label` string
    - `secondary` string, nullable
    - `date` string, nullable
    - `amount` number, nullable
    - `status` string, nullable
  - `total` integer
  - `limit` integer
  - `offset` integer
  - `hasMore` boolean
  - `query` string
  - `types` string[]
  - `truncated` boolean

## Other responses

- `400`: Bad request - invalid parameters or request body
- `401`: Authentication required or invalid API key
- `429`: Rate limit exceeded (100 requests per minute)
- `500`: Internal server error

---

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