Skip to main content
POST
/
v1
/
saved-searches
Create Saved Search
curl --request POST \
  --url https://api.example.com/v1/saved-searches \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "description": "<string>",
  "query": {},
  "metadata": {}
}
'
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "object": "saved_search",
  "name": "Nike clearance watch",
  "description": "Apparel marks similar to NIKE in classes 18, 25",
  "query": {
    "query": "nike",
    "filters": { "nice_classes": [18, 25] }
  },
  "metadata": { "team": "brand-protection" },
  "last_executed_at": null,
  "result_count": null,
  "created_at": "2026-04-10T03:18:42Z",
  "updated_at": "2026-04-10T03:18:42Z",
  "livemode": true,
  "request_id": "req_xyz"
}

Overview

Creates a saved search the org can re-run later. The query body mirrors the JSON shape accepted by POST /v1/trademarks/search. Saved searches are organization-scoped and persist their query, metadata, last execution time, and last result count. Requires the portfolios:manage scope. Saved search IDs are raw UUIDs (no prefix).

Request Body

name
string
required
Human-readable name (1-255 characters).
description
string
Optional description (max 2000 characters).
query
object
required
Stored query parameters. Same shape as the body of POST /v1/trademarks/search. Must contain at least a query string.
metadata
object
Key-value metadata (max 50 keys). Values must be strings.

Response

Returns the newly created saved search.
id
string
Saved search UUID.
object
string
Always saved_search.
name
string
Saved search name.
description
string
Optional description.
query
object
Stored search query.
metadata
object
Key-value metadata.
last_executed_at
string
ISO 8601 timestamp of the last execution. null until first run.
result_count
integer
Result count from the last execution. null until first run.
created_at
string
ISO 8601 creation timestamp.
updated_at
string
ISO 8601 last-updated timestamp.
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "object": "saved_search",
  "name": "Nike clearance watch",
  "description": "Apparel marks similar to NIKE in classes 18, 25",
  "query": {
    "query": "nike",
    "filters": { "nice_classes": [18, 25] }
  },
  "metadata": { "team": "brand-protection" },
  "last_executed_at": null,
  "result_count": null,
  "created_at": "2026-04-10T03:18:42Z",
  "updated_at": "2026-04-10T03:18:42Z",
  "livemode": true,
  "request_id": "req_xyz"
}

Code Examples

curl -X POST "https://api.signa.so/v1/saved-searches" \
  -H "Authorization: Bearer sig_live_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Nike clearance watch",
    "description": "Apparel marks similar to NIKE in classes 18, 25",
    "query": {
      "query": "nike",
      "filters": { "nice_classes": [18, 25] }
    },
    "metadata": { "team": "brand-protection" }
  }'

Errors

StatusTypeDescription
400validation_errorMissing name, empty query, or invalid metadata
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks portfolios:manage
409conflictA saved search with this name already exists