> ## 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.

# Owner Trademarks

> List all trademarks owned by a specific owner with the full Appendix A filter set

## Overview

Returns a paginated list of trademarks held by the specified owner. Use this for portfolio views, competitor intelligence, or auditing an entity's IP holdings across jurisdictions.

When no `sort` parameter is supplied and no `q` text query is given, results are returned in the search index's internal document order (not sorted by any specific field). When a `q` text query is provided, results are ranked by relevance score with filing date as a tiebreaker. You can pass an explicit `sort` parameter to control ordering (e.g. `sort=-filing_date`). Every Appendix A filter from the main [`List Trademarks`](/api-reference/trademarks/list-trademarks) endpoint is available here, scoped automatically to the parent owner.

Arrays are comma-separated, date ranges use flat `_gte`, `_gt`, `_lte`, and `_lt` operators, and booleans must be the literal strings `true` or `false`.

## Path Parameters

<ParamField path="id" type="string" required>
  Owner ID (e.g., `own_Rj3kL9mN`).
</ParamField>

## Query Parameters

### Pagination

<ParamField query="limit" type="integer" default="20">
  Items per page (1-100).
</ParamField>

<ParamField query="cursor" type="string">
  Pagination cursor from a previous response.
</ParamField>

### Status filters

<ParamField query="status_primary" type="string | string[]">Primary status: `active`, `pending`, `inactive`, `unknown`. Accepts a single value or a comma-separated list — e.g. `?status_primary=active,pending` matches TESS-style "live" marks.</ParamField>
<ParamField query="status_stage" type="string">Status stage(s), comma-separated.</ParamField>
<ParamField query="status_reason" type="string">Status reason(s), comma-separated.</ParamField>
<ParamField query="challenge_states" type="string">Challenge state(s), comma-separated.</ParamField>

### Mark classification

<ParamField query="mark_feature_type" type="string">Mark feature type(s), comma-separated.</ParamField>
<ParamField query="mark_legal_category" type="string">Legal category(ies), comma-separated.</ParamField>
<ParamField query="right_kind" type="string">Right kind.</ParamField>
<ParamField query="filing_route" type="string">Filing route(s), comma-separated.</ParamField>
<ParamField query="scope_kind" type="string">Scope kind(s), comma-separated.</ParamField>

### Identifiers

<ParamField query="application_number" type="string">Application number. Requires `office`.</ParamField>
<ParamField query="registration_number" type="string">Registration number. Requires `office`.</ParamField>
<ParamField query="ir_number" type="string">Madrid international registration number.</ParamField>
<ParamField query="office" type="string">Office code (required with `application_number` or `registration_number`).</ParamField>

### Geography

<ParamField query="jurisdictions" type="string">Jurisdiction codes, comma-separated (e.g. `?jurisdictions=US,EU`).</ParamField>
<ParamField query="offices" type="string">Office codes, comma-separated (e.g. `?offices=uspto,euipo`).</ParamField>
<ParamField query="owner_country" type="string">Owner country code (ISO 3166-1 alpha-2).</ParamField>

### Classification codes

<ParamField query="nice_classes" type="string">Nice classes 1-45, comma-separated (e.g. `?nice_classes=9,42`).</ParamField>
<ParamField query="vienna_codes" type="string">Vienna figurative codes, comma-separated.</ParamField>

### Date ranges

Each operator accepts `YYYY-MM-DD`; `updated_at_*` accepts ISO 8601 timestamps. Lower bounds must be before upper bounds.

<ParamField query="filing_date_gte" type="string">Filing date >=.</ParamField>
<ParamField query="filing_date_gt" type="string">Filing date >.</ParamField>
<ParamField query="filing_date_lte" type="string">Filing date \<=.</ParamField>
<ParamField query="filing_date_lt" type="string">Filing date \<.</ParamField>
<ParamField query="registration_date_gte" type="string">Registration date >=.</ParamField>
<ParamField query="registration_date_gt" type="string">Registration date >.</ParamField>
<ParamField query="registration_date_lte" type="string">Registration date \<=.</ParamField>
<ParamField query="registration_date_lt" type="string">Registration date \<.</ParamField>
<ParamField query="expiry_date_gte" type="string">Expiry date >=.</ParamField>
<ParamField query="expiry_date_gt" type="string">Expiry date >.</ParamField>
<ParamField query="expiry_date_lte" type="string">Expiry date \<=.</ParamField>
<ParamField query="expiry_date_lt" type="string">Expiry date \<.</ParamField>
<ParamField query="renewal_due_date_gte" type="string">Renewal due date >=.</ParamField>
<ParamField query="renewal_due_date_gt" type="string">Renewal due date >.</ParamField>
<ParamField query="renewal_due_date_lte" type="string">Renewal due date \<=.</ParamField>
<ParamField query="renewal_due_date_lt" type="string">Renewal due date \<.</ParamField>
<ParamField query="publication_date_gte" type="string">Publication date >=.</ParamField>
<ParamField query="publication_date_gt" type="string">Publication date >.</ParamField>
<ParamField query="publication_date_lte" type="string">Publication date \<=.</ParamField>
<ParamField query="publication_date_lt" type="string">Publication date \<.</ParamField>
<ParamField query="termination_date_gte" type="string">Termination date >=.</ParamField>
<ParamField query="termination_date_gt" type="string">Termination date >.</ParamField>
<ParamField query="termination_date_lte" type="string">Termination date \<=.</ParamField>
<ParamField query="termination_date_lt" type="string">Termination date \<.</ParamField>
<ParamField query="updated_at_gte" type="string">Updated at >= (ISO 8601).</ParamField>
<ParamField query="updated_at_gt" type="string">Updated at > (ISO 8601).</ParamField>
<ParamField query="updated_at_lte" type="string">Updated at \<= (ISO 8601).</ParamField>
<ParamField query="updated_at_lt" type="string">Updated at \< (ISO 8601).</ParamField>

### Entity filters

<ParamField query="owner_name" type="string">Fuzzy owner name match (within the owner's record group).</ParamField>
<ParamField query="attorney_id" type="string">Attorney ID (`att_...`).</ParamField>
<ParamField query="firm_id" type="string">Firm ID (`firm_...`).</ParamField>

### Public company filters

<ParamField query="owner_publicly_traded" type="boolean">`true` to return marks whose owner has a confirmed active SEC ticker match. `false` means no confirmed public-company match, not confirmed private.</ParamField>
<ParamField query="owner_has_lei" type="boolean">`true` to return marks whose owner has a confirmed GLEIF LEI match. `false` means no confirmed LEI match.</ParamField>
<ParamField query="owner_ticker" type="string">Exact owner ticker match, uppercased server-side.</ParamField>
<ParamField query="owner_lei" type="string">Exact owner LEI match, uppercased server-side.</ParamField>

### Boolean flags

<ParamField query="has_media" type="boolean">Marks with media.</ParamField>
<ParamField query="has_proceedings" type="boolean">Marks with proceedings.</ParamField>
<ParamField query="is_madrid" type="boolean">Madrid-routed marks only.</ParamField>
<ParamField query="is_retracted" type="boolean">Retracted marks only.</ParamField>
<ParamField query="is_series_mark" type="boolean">Series marks only.</ParamField>

## Response

<ResponseField name="data" type="object[]">
  Array of trademark summary objects belonging to this owner.
</ResponseField>

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "tm_8kLm2nPq",
        "object": "trademark",
        "mark_text": "AURORA",
        "status": { "primary": "active", "stage": "registered" },
        "office_code": "uspto",
        "jurisdiction_code": "US",
        "filing_date": "2023-04-12",
        "registration_date": "2024-09-18",
        "classifications": [
          { "nice_class": 9, "goods_services_text": "Downloadable software for digital image processing" },
          { "nice_class": 35, "goods_services_text": "Online retail store services featuring digital media" },
          { "nice_class": 42, "goods_services_text": "Software as a service (SaaS) featuring media management tools" }
        ],
        "owner_name": "Aurora Digital Inc.",
        "owners": [
          {
            "id": "own_7nQp3xYz",
            "name": "Aurora Digital Inc.",
            "country_code": "US",
            "companies": [
              {
                "source": "sec",
                "ticker": "AUR",
                "exchange": "NASDAQ",
                "lei": null,
                "entity_status": "active"
              }
            ]
          }
        ]
      },
      {
        "id": "tm_Qr6nK9jL",
        "object": "trademark",
        "mark_text": "AURORA DIGITAL",
        "status": { "primary": "active", "stage": "registered" },
        "office_code": "euipo",
        "jurisdiction_code": "EU",
        "filing_date": "2023-07-20",
        "registration_date": "2024-11-05",
        "classifications": [
          { "nice_class": 9, "goods_services_text": "Downloadable software for digital image processing" },
          { "nice_class": 42, "goods_services_text": "Software as a service (SaaS) featuring media management tools" }
        ],
        "owner_name": "Aurora Digital Inc."
      }
    ],
    "has_more": true,
    "pagination": {
      "cursor": "eyJpZCI6ImFiYyJ9"
    },
    "request_id": "req_fY5pQ1rS"
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/owners/own_Rj3kL9mN/trademarks?status_stage=registered&offices=uspto,euipo&nice_classes=9,42&limit=20" \
    -H "Authorization: Bearer sig_xxxxxxxxxxxx"
  ```

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

  const signa = new Signa({ api_key: "sig_xxxxxxxxxxxx" });

  const page = await signa.owners.trademarks("own_Rj3kL9mN", {
    status_stage: ["registered"],
    offices: ["uspto", "euipo"],
    nice_classes: [9, 42],
    limit: 20,
  });
  ```

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

  resp = requests.get(
      "https://api.signa.so/v1/owners/own_Rj3kL9mN/trademarks",
      headers={"Authorization": "Bearer sig_xxxxxxxxxxxx"},
      params={
          "status_stage": "registered",
          "offices": "uspto,euipo",
          "nice_classes": "9,42",
          "limit": 20,
      },
  )
  marks = resp.json()["data"]
  ```
</CodeGroup>

## Errors

| Status | Type               | Description                            |
| ------ | ------------------ | -------------------------------------- |
| 400    | `validation_error` | Invalid query parameters or date range |
| 401    | `unauthorized`     | Missing or invalid API key             |
| 404    | `not_found`        | Owner ID does not exist                |
| 429    | `rate_limited`     | Too many requests                      |

## Related Endpoints

* [Get Owner](/api-reference/parties/get-owner): owner profile and stats
* [Owner Related](/api-reference/parties/owner-related): related entities (subsidiaries, parent companies)
* [List Trademarks](/api-reference/trademarks/list-trademarks): search across all owners
