Skip to main content
GET
/
v1
/
trademarks
/
{id}
/
media
/
{mediaId}
Trademark Media
curl --request GET \
  --url https://api.signa.so/v1/trademarks/{id}/media/{mediaId} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.signa.so/v1/trademarks/{id}/media/{mediaId}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.signa.so/v1/trademarks/{id}/media/{mediaId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/trademarks/{id}/media/{mediaId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.signa.so/v1/trademarks/{id}/media/{mediaId}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/trademarks/{id}/media/{mediaId}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.signa.so/v1/trademarks/{id}/media/{mediaId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body

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

id
string
required
Trademark ID (tm_...).
mediaId
string
required
Media ID (med_...). Obtain this from the media[] array on a GET /v1/trademarks/{id} response.

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

<img
  src="https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2"
  alt="Trademark drawing"
/>
curl -I "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2"
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");
This endpoint does not require an API key (the health check endpoints are also unauthenticated). It only emits 302 redirects to public office URLs, so no record data is exposed.

Errors

StatusTypeDescription
400validation_errorInvalid trademark ID or media ID format
404not_foundTrademark, media record, or upstream URL does not exist
  • Get Trademark: returns the media[] array with each asset’s med_ ID