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

# Status

> The normalized status value, the live/dead category, the office's own wording, and the difference between null, other and unknown.

Offices describe a mark's legal state in hundreds of ways. The record gives you the normalized value, a three-way category, and the office's own wording:

```json theme={null}
"status": {
  "value": "pending",
  "category": "live",
  "date": null,
  "office_status": "Në proces ekzaminimi",
  "office_status_code": null
}
```

## Value

| `status.value` | Meaning | `status.category` |
| - | - | - |
| `registered` | Registered and in force, as far as the register shows | `live` |
| `pending` | Filed and not yet decided: examination, publication, opposition | `live` |
| `abandoned` | Withdrawn, refused or lapsed before registration | `dead` |
| `cancelled` | Registered, then cancelled, revoked or invalidated | `dead` |
| `unknown` | The office itself reports the status as unknown | `unknown` |
| `other` | The office's status has no mapping yet (a safeguard: no record carries it today) | `unknown` |
| `null` | The office did not state a status (a safeguard: no record carries it today) | `null` |

The mapping follows each office's own terms, which do not always line up with these definitions. Some offices, for example, keep a lapsed mark as registered until a grace period ends. When the exact legal state matters, read `office_status`, and check the office record before acting on it.

## Expired and lapsed marks

There is no separate `expired` value. Offices' expired, lapsed and not-renewed statuses are normalized to the values above, in practice mostly to `cancelled` (category `dead`); some offices keep such a mark `registered` until a grace period ends. The office's own wording stays in `office_status`.

To find registered marks whose expiry date has passed (in a grace period, lapsing, or not yet updated by the office), filter on the date. `expiry_date_to` is inclusive, so pass today's date (UTC):

```bash theme={null}
curl -G "https://api.pinakelai.com/v1/trademarks" \
  -H "Authorization: Bearer $PINAKEL_API_KEY" \
  --data-urlencode "jurisdiction=GB" \
  --data-urlencode "status=registered" \
  --data-urlencode "expiry_date_to=2026-11-12"
```

Expiry dates are not recorded everywhere:

* 100 of the 119 registers state an expiry date for at least half of their records.
* Ten registers state one for fewer than 10% of their records: United States (`US`), India (`IN`), Türkiye (`TR`), Italy (`IT`), Ecuador (`EC`), Saudi Arabia (`SA`), Austria (`AT`), Bolivia (`BO`), Bangladesh (`BD`) and Libya (`LY`). There this search finds few or no marks.
* **United States:** the USPTO publishes no expiry date. `dates.renewal` is the date of the **last** renewal, not the next due date, so `renewal_date_to` does not find lapsed US registrations. Pinakel computes US renewal deadlines, but they are not a filter yet.

To list a portfolio's upcoming expiries, combine an owner or number filter with `sort=expiry_date` and `expiry_date_from` set to today.

## Category

`status.category` groups values into `live` (registered or pending), `dead` (abandoned or cancelled) and `unknown` (`unknown` or `other`). It is `null` only when the status is `null`.

Use the category for "is this mark a potential obstacle" questions, and the value when you need to tell pending from registered.

## null, other and unknown

These three look alike but mean different things:

| You see | It means | Filter with |
| - | - | - |
| `"value": "unknown"` | The office published a status, and it says the status is unknown. | `status=unknown` |
| `"value": "other"` | The office published a status that Pinakel has not mapped yet. The wording is in `office_status`. | not a filter value |
| `"value": null` | The office published no status for this record. | not a filter value |

`other` and `null` are safeguards for future data: every stored record carries one of the five mapped values today, so they are not offered as filter values (a request with them gets `400`). If you ever receive one, treat it like `unknown`; when Pinakel adds a mapping, the record appears in the [changes feed](https://docs.pinakelai.com/guides/syncing.md).

## Office wording

* `office_status` is the office's status text, untranslated, for example `Në proces ekzaminimi` ("under examination") in Albania.
* `office_status_code` is the office's status code, for registers that publish codes.

Both are in the full record only, not in summaries. Both can be `null`.

## Status date

`status.date` is the date of the current status as the office states it, often the date of the last decision or event. It is `null` when the office does not publish one. Filter on it with `status_date_from` and `status_date_to`.

## Filtering

```bash theme={null}
# Live marks only
--data-urlencode "status_category=live"

# Registered or pending, in two equivalent spellings
--data-urlencode "status=registered,pending"
--data-urlencode "status=registered" --data-urlencode "status=pending"

# Everything that might still be live, including records whose status is unknown
--data-urlencode "status_category=live,unknown"
```

Values within one parameter are combined with OR; different parameters are combined with AND.


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