> ## Documentation Index
> Fetch the complete documentation index at: https://docs.strandai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set sample expiration

> Set a sample to expire on a specific date, set it to never expire, or clear any custom expiration and follow the org default. Caller must be the sample's creator, an org owner/admin, or a Strand admin.



## OpenAPI

````yaml PATCH /samples/{id}/expiration
openapi: 3.1.0
info:
  title: Strand AI Platform API
  version: v1
  description: >-
    REST surface for uploading WSIs, submitting Lattice inference jobs, and
    streaming results. All endpoints require an `Authorization: Bearer
    sk-strand-...` header. Generate keys at `/settings/api-keys`.
servers:
  - url: https://app.strandai.com/api/v1
    description: Production
security:
  - ApiKey: []
paths:
  /samples/{id}/expiration:
    patch:
      tags:
        - Samples
      summary: Set sample expiration
      description: >-
        Set a sample to expire on a specific date, set it to never expire, or
        clear any custom expiration and follow the org default. Caller must be
        the sample's creator, an org owner/admin, or a Strand admin.
      operationId: setSampleExpiration
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpirationUpdate'
      responses:
        '200':
          description: Updated sample
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sample'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not allowed for this sample
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Sample not found in this org
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ExpirationUpdate:
      type: object
      description: >-
        Provide exactly one of `expiresAt`, `neverExpire: true`, or
        `useOrgDefault: true`. `neverExpire: true` is sugar for `expiresAt:
        null` (custom). `useOrgDefault: true` clears the custom expiration and
        follows the org's default policy.
      properties:
        expiresAt:
          type: string
          format: date-time
          nullable: true
        neverExpire:
          type: boolean
        useOrgDefault:
          type: boolean
        reason:
          type: string
          maxLength: 500
    Sample:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
        expiresAt:
          type: string
          format: date-time
          nullable: true
        expiresAtSource:
          type: string
          nullable: true
          enum:
            - org_default
            - custom
            - null
        retentionChangedAt:
          type: string
          format: date-time
          nullable: true
        retentionChangedBy:
          type: string
          nullable: true
        batchId:
          type: string
          format: uuid
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
        message:
          type: string
        required:
          type: integer
          nullable: true
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: sk-strand-XXXXXXXXXXXXXXXXXXXXXXXX

````