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

# List Design Codes

> List Vienna figurative classification codes

## Overview

Lists Vienna classification design codes used to describe figurative elements in trademarks. Filter by depth (1 = category, 2 = division, 3 = section) or search descriptions. Use this to build Vienna code pickers.

## Query Parameters

<ParamField query="q" type="string">
  Substring search across descriptions (case-insensitive, max 200 chars).
</ParamField>

<ParamField query="depth" type="integer">
  Filter by depth: `1` (category), `2` (division), or `3` (section).
</ParamField>

<ParamField query="category" type="string">
  Two-digit category code filter (e.g. `03`).
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Max results (1-500).
</ParamField>

<ParamField query="cursor" type="string">
  Pagination cursor (the code of the last item returned).
</ParamField>

## Response

This endpoint is publicly cacheable, so the response never includes `request_id`.

<ResponseField name="object" type="string">Always `list`.</ResponseField>

<ResponseField name="data" type="object[]">
  Array of Vienna code records ordered by code.
</ResponseField>

<ResponseField name="data[].code" type="string">Vienna code (e.g. `03`, `03.05`, `03.05.01`).</ResponseField>
<ResponseField name="data[].object" type="string">Always `design_code`.</ResponseField>
<ResponseField name="data[].category" type="string">Two-digit category code (e.g. `03`).</ResponseField>
<ResponseField name="data[].division" type="string | null">Division-level code (e.g. `03.05`). `null` for depth-1 codes.</ResponseField>
<ResponseField name="data[].section" type="string | null">Section-level code (e.g. `03.05.01`). `null` for depth-1 and depth-2 codes.</ResponseField>
<ResponseField name="data[].depth" type="integer">Depth (1, 2, or 3).</ResponseField>
<ResponseField name="data[].description" type="string">Description text.</ResponseField>
<ResponseField name="has_more" type="boolean">Whether more pages are available.</ResponseField>

<ResponseField name="pagination" type="object">
  <Expandable title="Pagination">
    <ResponseField name="cursor" type="string | null">Cursor for the next page, or `null` on the last page.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "code": "03.01.01",
        "object": "design_code",
        "category": "03",
        "division": "03.01",
        "section": "03.01.01",
        "depth": 3,
        "description": "Lions"
      }
    ],
    "has_more": true,
    "pagination": { "cursor": "03.01.01" }
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -G "https://api.signa.so/v1/design-codes" \
    -H "Authorization: Bearer sig_YOUR_KEY" \
    --data-urlencode "q=lion" \
    --data-urlencode "depth=3" \
    --data-urlencode "limit=20"
  ```

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

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

  const codes = await signa.references.designCodes({
    q: "lion",
    depth: 3,
    limit: 20,
  });
  ```
</CodeGroup>

## Errors

| Status | Type               | Description                           |
| ------ | ------------------ | ------------------------------------- |
| 400    | `validation_error` | Invalid depth or query length         |
| 401    | `unauthorized`     | Missing or invalid API key            |
| 403    | `forbidden`        | API key lacks `trademarks:read` scope |

## Related Endpoints

* [Get Design Code](/api-reference/reference/get-design-code), single code with children
* [List Trademarks](/api-reference/trademarks/list-trademarks), search by `vienna_codes`
