# Errors

> Every error of an API call is a TryYourSizeError subclass, by HTTP status: InvalidRequestError (400, 422), AuthenticationError (401), PermissionError (403), NotFoundError (404), ConflictError (409), R

Source: https://docs.tryyoursize.com/reference/node/errors/

*Class* · `@tryyoursize/node`

Every error of an API call is a `TryYourSizeError` subclass, by HTTP status: `InvalidRequestError` (400, 422), `AuthenticationError` (401), `PermissionError` (403), `NotFoundError` (404), `ConflictError` (409), `RateLimitError` (429, with `retryAfter`), `APIError` (5xx) and `ConnectionError` (no answer). Webhook checks throw `SignatureVerificationError`.

```ts
class TryYourSizeError extends Error
```

## Properties

- **`status`** (`number | undefined`, required)
- **`code`** (`string | undefined`, required)
- **`docUrl`** (`string | undefined`, required)
- **`requestId`** (`string | undefined`, required)
- **`raw`** (`unknown`, required)
- **`headers`** (`Headers | undefined`, required)
- **`issues`** (`GarmentIssue[] | undefined`, required): Values to fix, for 422 answers of the garment endpoints (schema GarmentRejected).

## Example

**Node.js**

```ts

try {
  await tys.products.retrieve("NO-SUCH-SKU");
} catch (err) {
  if (err instanceof RateLimitError) await sleep((err.retryAfter ?? 1) * 1000);
  else if (err instanceof TryYourSizeError) console.error(err.status, err.code, err.requestId);
}
```

**Python**

```python
try:
    tys.products.retrieve("NO-SUCH-SKU")
except tryyoursize.NotFoundError:
    pass
except tryyoursize.APIError as err:
    print(err.status, err.code, err.request_id)
```

## See also

- [API error codes](https://docs.tryyoursize.com/api/errors.md)
