Skip to content

spec: expires_at is required but no convention exists for non-expiring preview URLs #4453

@andrazbajec

Description

@andrazbajec

Problem

expires_at is required in both the single and batch preview responses (preview-creative-response.json). However, some creative agents produce preview URLs that do not expire. The spec defines no convention for this case — implementers must either:

  • Advertise a far-future timestamp (e.g. 30 days out), misrepresenting actual expiry behaviour
  • Omit the field (schema violation)
  • Use a sentinel value (no such value is defined)

Proposed fix

Two options — requesting spec authors pick one:

Option A: Make expires_at optional. Omission signals non-expiring. Add a note: "Omit expires_at if preview URLs do not expire. When present, consumers MUST treat URLs as invalid after this timestamp."

Option B: Define a sentinel value (e.g. "9999-12-31T23:59:59Z") for non-expiring URLs, with a note in the schema description.

Option A is cleaner and avoids a magic value.

Affected files

  • schemas/v3/creative/preview-creative-response.json (both single and batch branches — expires_at required field)
  • docs/creative/task-reference/preview_creative.mdx

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions