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

# Presigned PUT for a punch selfie (stored via the storage

> Presigned PUT for a punch selfie (stored via the storage adapter); returns the objectKey to send as selfieRef



## OpenAPI

````yaml /api-reference/openapi.json post /api/attendance/selfie/presign
openapi: 3.1.0
info:
  title: ontime API
  description: APIs for ontime.v2
  version: 1.0.0
servers:
  - url: https://app.ontime.hosai.app
    description: Production
security:
  - apiKey: []
paths:
  /api/attendance/selfie/presign:
    post:
      tags:
        - Attendance
      summary: Presigned PUT for a punch selfie (stored via the storage
      description: >-
        Presigned PUT for a punch selfie (stored via the storage adapter);
        returns the objectKey to send as selfieRef
      operationId: postApiAttendanceSelfiePresign
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                contentType:
                  default: image/jpeg
                  type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  uploadUrl:
                    type: string
                  objectKey:
                    type: string
                required:
                  - uploadUrl
                  - objectKey
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: ont_ API key
      description: >-
        Issue keys in Settings → API. Send them as `Authorization: Bearer ont_…`
        (an `X-Api-Key: ont_…` header is also accepted). Session-cookie routes
        are used by the OnTime web apps and are shown for completeness.

````