> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signa.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Suggest Trademarks

> Trademark autocomplete with prefix matching and optional filters

## Overview

Returns trademark name suggestions for a prefix query. Designed for typeahead interfaces where low latency matters: suggestions come from the compact tier of the search index, with edge n-gram matching on `mark_text`. Results are returned as a non-paginated list (top N).

This endpoint requires the `trademarks:read` scope.

## Query Parameters

<ParamField query="q" type="string" required>
  Prefix query, between 2 and 200 characters.
</ParamField>

<ParamField query="limit" type="integer" default="10">
  Maximum number of suggestions to return, between 1 and 50.
</ParamField>

<ParamField query="jurisdictions" type="string">
  Filter by jurisdiction codes, comma-separated (e.g. `?jurisdictions=US,EU`).
</ParamField>

<ParamField query="nice_classes" type="string">
  Filter by Nice classification numbers, 1 to 45, comma-separated (e.g. `?nice_classes=9,42`).
</ParamField>

<ParamField query="status_stage" type="string">
  Filter by status stage, comma-separated (e.g. `?status_stage=registered,published`).
</ParamField>

## Response

<ResponseField name="object" type="string">Always `list`.</ResponseField>

<ResponseField name="data" type="object[]">
  <Expandable title="Suggestion object">
    <ResponseField name="id" type="string">Trademark ID prefixed with `tm_`.</ResponseField>
    <ResponseField name="object" type="string">Always `trademark_suggestion`.</ResponseField>
    <ResponseField name="mark_text" type="string">Mark text (truncated to 100 characters for long names).</ResponseField>
    <ResponseField name="office_code" type="string">Office code (lowercase, e.g. `uspto`, `euipo`).</ResponseField>
    <ResponseField name="status_stage" type="string">Current status stage.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="has_more" type="boolean">Always `false`. Suggest is not paginated.</ResponseField>
<ResponseField name="pagination" type="object">Always `{ "cursor": null }`.</ResponseField>
<ResponseField name="request_id" type="string">Unique request identifier for support and debugging.</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "tm_8kLm2nPq",
        "object": "trademark_suggestion",
        "mark_text": "AURORA",
        "office_code": "uspto",
        "status_stage": "registered"
      },
      {
        "id": "tm_Qr6nK9jL",
        "object": "trademark_suggestion",
        "mark_text": "AURORA DIGITAL",
        "office_code": "euipo",
        "status_stage": "registered"
      },
      {
        "id": "tm_Vt3pM7nR",
        "object": "trademark_suggestion",
        "mark_text": "AURORA BOREALIS",
        "office_code": "cipo",
        "status_stage": "filed"
      }
    ],
    "has_more": false,
    "pagination": {
      "cursor": null
    },
    "request_id": "req_eX4nP0qR"
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -G "https://api.signa.so/v1/trademarks/suggest" \
    -H "Authorization: Bearer sig_YOUR_KEY_HERE" \
    --data-urlencode "q=aur" \
    --data-urlencode "jurisdictions=US,EU" \
    --data-urlencode "nice_classes=9,42" \
    --data-urlencode "limit=10"
  ```

  ```python Python theme={null}
  import requests

  resp = requests.get(
      "https://api.signa.so/v1/trademarks/suggest",
      headers={"Authorization": "Bearer sig_YOUR_KEY_HERE"},
      params={
          "q": "aur",
          "jurisdictions": "US,EU",
          "nice_classes": "9,42",
          "limit": 10,
      },
  )
  suggestions = resp.json()["data"]
  ```

  ```typescript TypeScript theme={null}
  import { Signa } from "@signa-so/sdk";

  const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });

  const suggestions = await signa.trademarks.suggest({
    q: "aur",
    jurisdictions: ["US", "EU"],
    nice_classes: [9, 42],
  });

  for (const s of suggestions.data) {
    console.log(s.mark_text, s.office_code, s.status_stage);
  }
  ```
</CodeGroup>

## Errors

| Status | Type               | Description                                                                   |
| ------ | ------------------ | ----------------------------------------------------------------------------- |
| 400    | `validation_error` | `q` shorter than 2 characters, `limit` outside 1-50, or invalid filter values |
| 401    | `unauthorized`     | Missing or invalid API key                                                    |
| 403    | `forbidden`        | API key lacks the `trademarks:read` scope                                     |
| 429    | `rate_limited`     | Rate limit exceeded                                                           |

## Related Endpoints

* [List Trademarks](/api-reference/trademarks/list-trademarks) -- multi-strategy text and phonetic search with aggregations and sort
