API Reference

Search Products

Full-text search across product and vendor names in the CPE catalog. Returns matching product entries with their vendor. This endpoint shares the /v1/cpe collection path with List Top Vendors and is selected by supplying the search query parameter.

GET
/v1/cpe

Cost: 1 credit per successful call

Query parameters

searchstringrequired

Search term, 3–80 characters. Matched against product names and vendor names (case-insensitive substring match).

limitintegeroptionaldefault: 25

Maximum number of results to return. Accepted range: 1–50.

Request

curl "https://api.precursorintelligence.com/functions/v1/cpe?search=forti&limit=10" \
  -H "Authorization: Bearer $PRECURSOR_API_KEY"

Response

200 OK
{
  "data": {
    "count": 3,
    "items": [
      {
        "name": "forticlient",
        "vendor": "fortinet",
        "is_favorited": false
      },
      {
        "name": "fortigate",
        "vendor": "fortinet",
        "is_favorited": false
      },
      {
        "name": "fortios",
        "vendor": "fortinet",
        "is_favorited": false
      }
    ],
    "generated_at": "2026-05-29T08:14:22.301Z"
  },
  "meta": {
    "request_id": "8b16efb8-9a6c-4ace-b817-11cbee626d08",
    "generated_at": "2026-05-18T10:24:31.118Z",
    "credits": { "charged": 1, "remaining": 9998 }
  }
}

Response fields

data.countintegeroptional

Number of results returned (equals items.length, not the total catalog matches). Narrow your search term or reduce limit if results are not specific enough.

data.itemsarrayoptional

Matching catalog entries. Each object contains the fields below.

data.items[].namestringoptional

Lowercased product name as stored in the CPE catalog.

data.items[].vendorstringoptional

Lowercased vendor identifier the product belongs to.

data.items[].is_favoritedbooleanoptional

Whether this product is favorited for the calling organisation.

data.generated_atstringoptional

ISO 8601 timestamp indicating when this response was generated.

Errors

StatuserrorWhen
400missing_search, invalid_search, invalid_limitA parameter failed validation.
401invalid_authorizationMissing or malformed Authorization header.
401unauthorizedInvalid/revoked key, or IP not allowlisted.
402insufficient_creditsOrganisation credit balance is below 1.
404not_foundThe route or entity does not exist.
405method_not_allowedOnly GET and OPTIONS are accepted.
500internalUnexpected server error (credit auto-refunded).

See Errors for the full error reference.