Skip to content

Search across records

GET
/search
curl --request GET \
--url 'https://app.buildworkpro.com/api/v1/search?q=example' \
--header 'Authorization: Bearer <token>'

Full-text and fuzzy search across projects, contacts, site logs, documents, bids, leads, invoices, pay apps and change orders, blended into one relevance-ranked list. Requires projects:read; each other type is included only when the credential also holds that type’s read scope (e.g. bids:read), and results are limited to records the authorizing user may open.

q
required

Search text, at least 2 characters. * lists recent records.

string
>= 2 characters

Search text, at least 2 characters. * lists recent records.

limit

Maximum results (default 20, max 50).

integer
>= 1 <= 50

Maximum results (default 20, max 50).

Matches, best first

Media type application/json
object
data
required
Array<object>
object
type
required

Entity type of the match.

string
Allowed values: project contact site_log document bid lead invoice pay_app change_order
id
required

Id of the matched record; fetch it from that type’s own endpoint.

integer
title
required

Display title (name, number or filename).

string
subtitle
required

Short secondary text — email, project number, or the start of the matched body. Null when there is none.

string | null
projectId

Parent project for change orders, pay apps, site logs and invoices; null when the record has none. Absent for other types.

integer | null
meta
required
object
request_id

Server-generated request identifier

string
pagination
object
cursor
required

Opaque cursor for the next page; null when no more results

string | null
has_more
required

Whether more pages are available after this one

boolean
count
required

Items in this page

integer
Example
{
"data": [
{
"type": "project"
}
]
}

Error

Media type application/problem+json
object
type
required

URL identifying the problem type

string format: uri
title
required

Short human-readable summary

string
status
required

HTTP status code

integer
detail

Human-readable explanation

string
request_id

Server-generated request identifier

string
errors

Validation error array (422 only)

Array<object>
object
field
required

Field path that failed validation

string
code
required

Validation error code

string
message
required

Human-readable validation message

string
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Error

Media type application/problem+json
object
type
required

URL identifying the problem type

string format: uri
title
required

Short human-readable summary

string
status
required

HTTP status code

integer
detail

Human-readable explanation

string
request_id

Server-generated request identifier

string
errors

Validation error array (422 only)

Array<object>
object
field
required

Field path that failed validation

string
code
required

Validation error code

string
message
required

Human-readable validation message

string
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Error

Media type application/problem+json
object
type
required

URL identifying the problem type

string format: uri
title
required

Short human-readable summary

string
status
required

HTTP status code

integer
detail

Human-readable explanation

string
request_id

Server-generated request identifier

string
errors

Validation error array (422 only)

Array<object>
object
field
required

Field path that failed validation

string
code
required

Validation error code

string
message
required

Human-readable validation message

string
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}