# Get movies list metadata



Operation: headMovies
HEAD /api/movies.json

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/headMovies) · [Authoritative schemas](/api/openapi.json)

## Wire contract

```json
{
  "operationId": "headMovies",
  "summary": "Get movies list metadata",
  "tags": [
    "movies"
  ],
  "parameters": [
    {
      "name": "API-Version",
      "in": "header",
      "required": false,
      "description": "Header-based API version selection. Omit it, send an empty value, or send 1.0.0; surrounding whitespace is ignored.",
      "schema": {
        "type": "string",
        "pattern": "^[ \\t]*(1\\.0\\.0)?[ \\t]*$",
        "default": "1.0.0"
      }
    },
    {
      "name": "Idempotency-Key",
      "in": "header",
      "required": false,
      "description": "Accepted for clients that attach a key uniformly. GET, HEAD, and OPTIONS are already safe and intrinsically idempotent, so read responses are not stored in an idempotency replay cache.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "limit",
      "in": "query",
      "description": "Requested page size (default 50). Numeric values are floored and clamped to 1–100.",
      "schema": {
        "type": "number",
        "default": 50
      }
    },
    {
      "name": "cursor",
      "in": "query",
      "description": "Opaque cursor copied from a returned pagination link. Arbitrary strings are rejected with 400; windowed feed cursors must retain their original filters.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "sort",
      "in": "query",
      "description": "Sort field and direction (e.g., \"year:desc\", \"addedAt:asc\")",
      "schema": {
        "type": "string",
        "pattern": "^(releaseDate|year|addedAt|title):(asc|desc)(,(releaseDate|year|addedAt|title):(asc|desc))*$"
      }
    },
    {
      "name": "facets",
      "in": "query",
      "description": "Include facet metadata in response meta (set to 1)",
      "schema": {
        "type": "string",
        "description": "Values 1, true, and yes enable facets (case-insensitive, ignoring surrounding whitespace); other strings leave them disabled."
      }
    },
    {
      "name": "type",
      "in": "query",
      "description": "Filter by movie or TV series",
      "schema": {
        "type": "string",
        "enum": [
          "movie",
          "tv"
        ]
      }
    },
    {
      "name": "year",
      "in": "query",
      "description": "Filter by release year",
      "schema": {
        "type": "integer"
      }
    },
    {
      "name": "genre",
      "in": "query",
      "description": "Filter by genre",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "director",
      "in": "query",
      "description": "Filter by director",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "actor",
      "in": "query",
      "description": "Filter by cast member",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "q",
      "in": "query",
      "description": "Case-insensitive title search",
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Headers only",
      "headers": {
        "Content-Usage": {
          "description": "IETF AIPREF usage preferences for this public content",
          "schema": {
            "type": "string",
            "examples": [
              "train-ai=y, search=y"
            ]
          }
        },
        "Content-Signal": {
          "description": "Compatibility AI usage preferences for deployed crawlers",
          "schema": {
            "type": "string",
            "examples": [
              "ai-train=yes, search=yes, ai-input=yes"
            ]
          }
        },
        "API-Version": {
          "description": "Selected public REST contract version",
          "schema": {
            "type": "string",
            "enum": [
              "1.0.0"
            ]
          }
        },
        "RateLimit-Policy": {
          "description": "Public REST quota policy: 1000 Worker requests per 60 seconds for each source and Cloudflare location",
          "schema": {
            "type": "string"
          }
        },
        "RateLimit-Limit": {
          "description": "Compatibility form of the current public REST request limit",
          "schema": {
            "type": "integer",
            "enum": [
              1000
            ]
          }
        },
        "ETag": {
          "description": "Entity tag for conditional requests",
          "schema": {
            "type": "string"
          }
        },
        "Cache-Control": {
          "description": "Caching directives",
          "schema": {
            "type": "string"
          }
        },
        "X-Total-Count": {
          "description": "Total number of items",
          "schema": {
            "type": "integer"
          }
        },
        "Link": {
          "description": "RFC 8288 Web Linking header with pagination links",
          "schema": {
            "type": "string"
          }
        },
        "Link-Template": {
          "description": "RFC 9652 Link-Template header with query parameter templates",
          "schema": {
            "type": "string"
          }
        },
        "Deprecation": {
          "description": "RFC 9745 lifecycle deprecation signal",
          "schema": {
            "type": "string"
          }
        },
        "Sunset": {
          "description": "RFC 8594 lifecycle sunset date (HTTP IMF-fixdate)",
          "schema": {
            "type": "string",
            "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$",
            "examples": [
              "Sun, 06 Sep 2026 17:40:13 GMT"
            ]
          }
        }
      }
    },
    "304": {
      "description": "Not Modified"
    },
    "400": {
      "description": "Invalid query or API version"
    },
    "429": {
      "description": "Public REST request limit exceeded",
      "headers": {
        "Retry-After": {
          "description": "Seconds before the request should be retried",
          "schema": {
            "type": "integer",
            "enum": [
              60
            ]
          }
        },
        "RateLimit": {
          "description": "Current quota state for the exhausted public-rest policy",
          "schema": {
            "type": "string"
          }
        },
        "Content-Usage": {
          "description": "IETF AIPREF usage preferences for this public content",
          "schema": {
            "type": "string",
            "examples": [
              "train-ai=y, search=y"
            ]
          }
        },
        "Content-Signal": {
          "description": "Compatibility AI usage preferences for deployed crawlers",
          "schema": {
            "type": "string",
            "examples": [
              "ai-train=yes, search=yes, ai-input=yes"
            ]
          }
        },
        "API-Version": {
          "description": "Selected public REST contract version",
          "schema": {
            "type": "string",
            "enum": [
              "1.0.0"
            ]
          }
        },
        "RateLimit-Policy": {
          "description": "Public REST quota policy: 1000 Worker requests per 60 seconds for each source and Cloudflare location",
          "schema": {
            "type": "string"
          }
        },
        "RateLimit-Limit": {
          "description": "Compatibility form of the current public REST request limit",
          "schema": {
            "type": "integer",
            "enum": [
              1000
            ]
          }
        }
      }
    }
  }
}
```

## Synthetic examples

### curl

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

### TypeScript

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

### CLI

```bash
irvinebroque movies list-head
```
