# Resolve a public canonical item ID to its current URL

Inspect the Location header with redirects disabled. Missing, invalid, and non-public IDs all return 404.

Operation: headCanonicalItem
HEAD /api/items/{canonicalId}

Access: anonymous. Automatic retries: none. Redirects: manual. Request body limit: 0 bytes.
Default timeout: 30 seconds. Response limit: 16 MiB. Pagination is opt-in and bounded; an exhausted bound reports incomplete execution.

[HTML reference](/developers/api/headCanonicalItem) · [Authoritative schemas](/api/openapi.json)

## Wire contract

```json
{
  "operationId": "headCanonicalItem",
  "summary": "Resolve a public canonical item ID to its current URL",
  "tags": [
    "items"
  ],
  "description": "Inspect the Location header with redirects disabled. Missing, invalid, and non-public IDs all return 404.",
  "parameters": [
    {
      "name": "canonicalId",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string",
        "pattern": "^itm_[a-f0-9]{24}$"
      }
    }
  ],
  "responses": {
    "302": {
      "description": "Canonical location; no response body",
      "headers": {
        "Location": {
          "required": true,
          "schema": {
            "type": "string",
            "format": "uri"
          }
        },
        "Cache-Control": {
          "schema": {
            "const": "no-store"
          }
        }
      }
    },
    "404": {
      "description": "Item is unavailable"
    }
  }
}
```

## Synthetic examples

### curl

```bash
curl --fail-with-body --max-time 30 --max-filesize 16777216 --head 'https://irvinebroque.com/api/items/itm_aaaaaaaaaaaaaaaaaaaaaaaa'
```

### TypeScript

```typescript
import { PublicApi } from '@irvinebroque/public-api';
const api = new PublicApi();
const result = await api.items.resolveHead({
  "canonicalId": "itm_aaaaaaaaaaaaaaaaaaaaaaaa"
});
console.log(result.status, result.headers.get('content-type')); // Keep transient capabilities in memory.
```

### CLI

```bash
irvinebroque items resolve-head --canonical-id 'itm_aaaaaaaaaaaaaaaaaaaaaaaa'
```
