List Classifications
curl --request GET \
--url https://api.signa.so/v1/classifications \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/classifications"
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/classifications', 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/classifications",
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/classifications"
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/classifications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/classifications")
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": [
{
"class_number": 25,
"object": "classification",
"title": "Clothing, footwear, headwear",
"description": "Clothing, footwear, headwear",
"category": "goods"
},
{
"class_number": 35,
"object": "classification",
"title": "Advertising; business management, organization and administration; office functions",
"description": "Advertising; business management, organization and administration; office functions.",
"category": "services"
}
],
"has_more": false,
"pagination": {
"cursor": null
}
}
Classification
List Classifications
List all Nice classification classes with descriptions
GET
/
v1
/
classifications
List Classifications
curl --request GET \
--url https://api.signa.so/v1/classifications \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/classifications"
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/classifications', 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/classifications",
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/classifications"
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/classifications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/classifications")
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": [
{
"class_number": 25,
"object": "classification",
"title": "Clothing, footwear, headwear",
"description": "Clothing, footwear, headwear",
"category": "goods"
},
{
"class_number": 35,
"object": "classification",
"title": "Advertising; business management, organization and administration; office functions",
"description": "Advertising; business management, organization and administration; office functions.",
"category": "services"
}
],
"has_more": false,
"pagination": {
"cursor": null
}
}
Overview
Returns the complete Nice Classification system used to categorize goods and services in trademark applications. Each class includes its number, title, and description. The Nice Classification is maintained by WIPO and updated annually; Signa always reflects the current edition. This reference endpoint is useful for building class pickers, validating user input, and displaying human-readable class descriptions alongside trademark data.Query Parameters
string
Filter by classification type:
goods (classes 1-34) or services (classes 35-45).string
Search classification titles, descriptions, and terms (case-insensitive contains, max 200 characters).
integer
default:"100"
Max results per page (max 500). The default returns all 45 classes in one page.
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[]
boolean
Whether more pages are available.
{
"object": "list",
"data": [
{
"class_number": 25,
"object": "classification",
"title": "Clothing, footwear, headwear",
"description": "Clothing, footwear, headwear",
"category": "goods"
},
{
"class_number": 35,
"object": "classification",
"title": "Advertising; business management, organization and administration; office functions",
"description": "Advertising; business management, organization and administration; office functions.",
"category": "services"
}
],
"has_more": false,
"pagination": {
"cursor": null
}
}
Code Examples
curl "https://api.signa.so/v1/classifications?type=services" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const classifications = await signa.references.classifications({ q: "software" });
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid type 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 Classification, single class detail
- Suggest Classifications, AI-assisted class suggestion from a description
- Suggest Goods & Services, draft filing-ready wording per class
- List Goods & Services, browse and search the pre-approved term catalog
- Search Trademarks, filter or search by Nice class