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

# Entity Trademarks

> List all trademarks across every member owner of a resolved entity

## Overview

Returns a paginated, summary-tier list of trademarks held by **all member owners** of the entity, the global-portfolio view. Where [Owner Trademarks](/api-reference/parties/owner-trademarks) is one office's record, this fans out across every office the entity has been resolved into, so a single call returns the company's worldwide portfolio.

When neither `sort` nor `q` is supplied, results default to most-recent-first (`-filing_date`); a `q` text query instead ranks by relevance. Arrays are comma-separated, date ranges use flat `_gte` / `_gt` / `_lte` / `_lt` operators, and booleans must be the literal strings `true` or `false`.

A derived `ent_<owner-uuid>` id is accepted and degrades to that one owner's marks.

## Path Parameters

<ParamField path="id" type="string" required>
  Entity ID (e.g. `ent_R3jK9mN2`), including the derived `ent_<owner-uuid>` form.
</ParamField>

## Query Parameters

The full [List Trademarks](/api-reference/trademarks/list-trademarks) filter set applies (status, mark classification, identifiers, geography, Nice/Vienna codes, date ranges, public-company filters, and boolean flags), plus:

<ParamField query="q" type="string">Relevance text search within the entity's marks.</ParamField>

<ParamField query="include_family" type="boolean" default="false">
  When `true`, expands the portfolio to this entity **and all of its GLEIF family-tree descendants** (a bounded, cycle-safe downward walk via `parent_entity_id`), then runs the same query over the combined member-owner set. Default `false` returns this entity only. A family graph larger than the walk bounds returns `422` with `error.reason` `family_graph_too_large`. Use this to pull a listed parent and every subsidiary in one call.
</ParamField>

<ParamField query="sort" type="string" default="-filing_date">Sort field(s), comma-separated, `-` prefix for descending.</ParamField>
<ParamField query="include" type="string">Comma-separated optional row projections. `full_goods_services` returns full `classifications[].goods_services_text` instead of the truncated summary text.</ParamField>
<ParamField query="fields" type="string">Sparse top-level field projection, comma-separated. `id` and `object` are always retained. Unknown names return `400`.</ParamField>
<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>

## Response

<ResponseField name="data" type="object[]">
  Array of trademark summary objects across all member owners. Each row's `owners[]` carries `entity_id` and `entity_id_type` so you can confirm the grouping.
</ResponseField>

<ResponseField name="has_more" type="boolean">Whether more marks are available.</ResponseField>
<ResponseField name="pagination" type="object">Cursor for the next page.</ResponseField>

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "tm_8kLm2nPq",
        "object": "trademark",
        "mark_text": "APPLE",
        "status": { "primary": "active", "stage": "registered" },
        "office_code": "US",
        "jurisdiction_code": "US",
        "filing_date": "2018-04-12",
        "owners": [
          {
            "id": "own_R3jK9mN2",
            "name": "Apple Inc.",
            "country_code": "US",
            "entity_id": "ent_R3jK9mN2",
            "entity_id_type": "resolved"
          }
        ]
      }
    ],
    "has_more": true,
    "pagination": { "cursor": "eyJpZCI6ImFiYyJ9" },
    "request_id": "req_fY5pQ1rS"
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/entities/ent_R3jK9mN2/trademarks?status_primary=active&limit=20" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

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

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

  const page = await signa.entities.trademarks("ent_R3jK9mN2", {
    status_primary: "active",
    limit: 20,
  });
  ```
</CodeGroup>

## Errors

| Status | Type               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 400    | `validation_error` | Invalid query parameters or date range                                                                                                                                                                                                                                                                                                           |
| 401    | `unauthorized`     | Missing or invalid API key                                                                                                                                                                                                                                                                                                                       |
| 404    | `not_found`        | Entity ID does not exist (or a derived id for a suppressed or merged-away owner)                                                                                                                                                                                                                                                                 |
| 410    | `entity_merged`    | The entity was fused into another; follow `merged_into`                                                                                                                                                                                                                                                                                          |
| 422    | `entity_too_large` | The entity resolves to more than 10,000 member owners. `error.reason` is `member_owners_too_large` (carries `member_count` / `member_count_limit`). The sibling `family_graph_too_large` reason is fired only by `?entity_group=` family walks on [List Trademarks](/api-reference/trademarks/list-trademarks), not by this per-entity endpoint. |
| 429    | `rate_limited`     | Too many requests                                                                                                                                                                                                                                                                                                                                |

## Related Endpoints

* [Get Entity](/api-reference/parties/get-entity): entity detail with members
* [Entity Family](/api-reference/parties/entity-family): GLEIF corporate parent and subsidiaries
* [List Trademarks](/api-reference/trademarks/list-trademarks): search across all entities (supports `entity_id` and `entity_group`)
