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

# Trademark Media

> Public image proxy that 302-redirects to the underlying office or CDN URL

## Overview

Returns a 302 redirect to the canonical image URL for a trademark media asset (logo, drawing, specimen). The endpoint is **unauthenticated** so it can be used directly inside HTML `<img>` tags, where browsers cannot attach an `Authorization` header. Responses set CORS headers (`Cross-Origin-Resource-Policy: cross-origin`) so embedding from another origin works.

The redirect target is either the original office URL or a Signa CDN URL. No image data is returned by this endpoint itself.

## Path Parameters

<ParamField path="id" type="string" required>
  Trademark ID (`tm_...`).
</ParamField>

<ParamField path="mediaId" type="string" required>
  Media ID (`med_...`). Obtain this from the `media[]` array on a [`GET /v1/trademarks/{id}`](/api-reference/trademarks/get-trademark) response.
</ParamField>

## Response

`302 Found` with these headers:

* `Location`: canonical image URL
* `Cache-Control: public, max-age=86400, immutable`
* `Cross-Origin-Resource-Policy: cross-origin`
* `Access-Control-Allow-Origin: *`

There is no JSON response body. Following the redirect returns the image bytes from the upstream office or CDN.

## Code Examples

<CodeGroup>
  ```html HTML theme={null}
  <img
    src="https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2"
    alt="Trademark drawing"
  />
  ```

  ```bash cURL theme={null}
  curl -I "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2"
  ```

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

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

  // The SDK returns the absolute media URL string
  const url = await signa.trademarks.media("tm_8kLm2nPq", "med_9mQ4pXk2");
  ```
</CodeGroup>

<Note>
  This endpoint does not require an API key (the [health check endpoints](/api-reference/health) are also unauthenticated). It only emits 302 redirects to public office URLs, so no record data is exposed.
</Note>

## Errors

| Status | Type               | Description                                             |
| ------ | ------------------ | ------------------------------------------------------- |
| 400    | `validation_error` | Invalid trademark ID or media ID format                 |
| 404    | `not_found`        | Trademark, media record, or upstream URL does not exist |

## Related Endpoints

* [Get Trademark](/api-reference/trademarks/get-trademark): returns the `media[]` array with each asset's `med_` ID
