List Status Codes
curl --request GET \
--url https://api.signa.so/v1/status-codes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/status-codes"
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/status-codes', 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/status-codes",
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/status-codes"
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/status-codes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/status-codes")
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{
"object": "list",
"data": [
{
"object": "status_code",
"office_code": "US",
"raw": { "code": "700", "label": null },
"primary": "active",
"stage": "registered",
"reason": null
},
{
"object": "status_code",
"office_code": "US",
"raw": { "code": "710", "label": null },
"primary": "inactive",
"stage": "cancelled",
"reason": "cancelled"
}
],
"has_more": true,
"pagination": {
"cursor": "US|710"
}
}
Codes & types
List Status Codes
Decode office status codes into Signa’s normalised status
GET
/
v1
/
status-codes
List Status Codes
curl --request GET \
--url https://api.signa.so/v1/status-codes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/status-codes"
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/status-codes', 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/status-codes",
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/status-codes"
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/status-codes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/status-codes")
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{
"object": "list",
"data": [
{
"object": "status_code",
"office_code": "US",
"raw": { "code": "700", "label": null },
"primary": "active",
"stage": "registered",
"reason": null
},
{
"object": "status_code",
"office_code": "US",
"raw": { "code": "710", "label": null },
"primary": "inactive",
"stage": "cancelled",
"reason": "cancelled"
}
],
"has_more": true,
"pagination": {
"cursor": "US|710"
}
}
Overview
Every trademark carries the office’s own status code instatus.raw.code, next to Signa’s normalised status.primary, status.stage and status.reason. This endpoint lists those office codes, each with the label the office publishes for it and the normalised status Signa maps it to. Use it to show the office’s wording for a code, or to see which office codes land on a given stage.
raw.label is the office’s own text, never a Signa description. It is null when we hold no verbatim office label for the code (for example USPTO codes today), including when the only text we hold is the code itself or wording Signa wrote.
Query Parameters
string
Filter by office code (WIPO ST.3, e.g.
US, EM). Legacy codes (uspto, euipo) and EU are accepted as aliases. Omit to return every office. Unknown query parameters are rejected with 400.integer
default:"100"
Max results per page (max 500).
string
Pagination cursor from
pagination.cursor of the previous page.Response
This endpoint is publicly cacheable, so the response never includesrequest_id.
string
Always
list.object[]
Show Status code object
Show Status code object
string
Always
status_codestring
Uppercase ST.3 office code (e.g.
EM)object
string
Normalised primary status:
pending, active, inactive or unknownstring
Normalised lifecycle stage (see the status taxonomy)
string | null
Normalised reason for an inactive status (e.g.
refused, expired), otherwise nullboolean
Whether more pages are available.
{
"object": "list",
"data": [
{
"object": "status_code",
"office_code": "US",
"raw": { "code": "700", "label": null },
"primary": "active",
"stage": "registered",
"reason": null
},
{
"object": "status_code",
"office_code": "US",
"raw": { "code": "710", "label": null },
"primary": "inactive",
"stage": "cancelled",
"reason": "cancelled"
}
],
"has_more": true,
"pagination": {
"cursor": "US|710"
}
}
Code Examples
curl "https://api.signa.so/v1/status-codes?office_code=US" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const codes = await signa.references.statusCodes({ office_code: "US" });
for await (const code of codes) {
console.log(code.raw.code, code.raw.label ?? "(no office label)", "->", code.stage);
}
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Unknown office code or unknown query parameter |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks trademarks:read scope |
| 429 | rate_limited | Too many requests |
Related Endpoints
- Retrieve Trademark, where
status.raw.codeappears - List Event Types, the same decoding for prosecution events
- Trademarks & lifecycle guide, canonical status stages