> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinakelai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Identifiers

> Record ids, office numbers, international registration numbers, priority claims, and the other ids the API returns.

## Record ids

Every record has a permanent public id:

```
tm_AD_2376e41e-3d24-57e3-af6f-6a176f9985ba
```

It is `tm_`, the register code, `_`, and an opaque uid. The uid alone is not unique across registers; the full id is. Ids match `^tm_[A-Z]{2,4}_[A-Za-z0-9._-]{1,128}$`. A malformed id gets 400 [`invalid-request`](https://docs.pinakelai.com/errors/invalid-request); a well-formed id that does not exist gets 404 [`not-found`](https://docs.pinakelai.com/errors/not-found).

* **Store the id** as the key of your copy of a record, and use it for retrieve, batch retrieve and upserts from the changes feed.
* **Do not parse the uid.** Its format differs between registers and carries no meaning.

## Office numbers

`identifiers.application_number` and `identifiers.registration_number` are returned exactly as the office writes them, for example `48000` in Andorra or `AL/T/2026/001305` in Albania.

To look a record up by number, filter on `application_number`, `registration_number`, or `number` (either one). Each value is matched exactly in three forms: as you send it, upper-cased, and upper-cased with spaces removed, so `va 2026 00923` finds `VA 2026 00923`. You can send up to 100 numbers in one request.

```bash theme={null}
curl -G "https://api.pinakelai.com/v1/trademarks" \
  -H "Authorization: Bearer $PINAKEL_API_KEY" \
  --data-urlencode "jurisdiction=AL" \
  --data-urlencode "number=AL/T/2026/001305"
```

A number lookup always returns a list. Offices reuse numbers across series and years, and the same number exists in many registers, so:

* always pass `jurisdiction` with a number lookup;
* expect more than one result, and pick the right record by the application date or the mark;
* store the `id` once you have matched a record, and stop looking it up by number.

Send numbers in the office's own format, including spaces, slashes and leading zeros. Pinakel does not otherwise reformat numbers, so `AL/T/2026/001305` and `001305` are different values, and `VA202600923` does not find `VA 2026 00923`.

## International registration numbers

`identifiers.international_registration_numbers` lists the Madrid international registration numbers linked to a record. The `international_registration_number` filter finds every record carrying a given number, in every register: the international registration in `WO` and its designations in national registers.

```bash theme={null}
curl -G "https://api.pinakelai.com/v1/trademarks" \
  -H "Authorization: Bearer $PINAKEL_API_KEY" \
  --data-urlencode "international_registration_number=1234567"
```

## Priority claims

`identifiers.priority_claims` lists each claim as `{number, country, date}`. `country` is an ISO 3166-1 alpha-2 code where it can be resolved. The `priority_number` filter finds every record claiming a given priority number, which links filings in different countries that share one first filing.

## Designated countries

`designated_countries` lists ISO country codes designated under the Madrid system, where the register records them. Filter with `designated_country`. See [Data quality](https://docs.pinakelai.com/data/data-quality.md) for a known gap in the `WO` register.

## Other ids

| Prefix | What it identifies | Where you see it |
| - | - | - |
| `tm_` | A trademark record | `id` of records, summaries and batch inputs |
| `chg_` | One publication of a change | `id` of changes feed items |
| `req_` | One API request | `X-Request-Id` header and the `request_id` of every error. Quote it when you contact support. |

Change ids identify one delivery of one record change. The same record appears again, with a new change id, each time it changes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.