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

# Create a tag

> Pin a committed snapshot from a branch or tag in the same collection as an immutable tag. A tag source pins the same snapshot, not a chain of tags. Alias sources are not allowed, and source.asOf is valid only for a branch source. Omit source to use main. An empty head or unavailable asOf history returns 400; verify committed data before tagging.



## OpenAPI

````yaml post /collections/{collectionName}/tags
openapi: 3.1.1
info:
  title: LambdaDB API
  summary: LambdaDB Open API Spec
  version: 1.1.1
servers:
  - url: https://{projectHost}
    description: LambdaDB API endpoints
    variables:
      projectHost:
        description: The project-scoped URL of the API
        default: api.lambdadb.ai/projects/example-project
security: []
tags:
  - name: collections
    description: Create, describe, configure, list, and delete collections.
  - name: versioning
    description: Manage branches, tags, and aliases within a collection.
  - name: collections.docs
    description: Write, fetch, list, and bulk upload documents.
paths:
  /collections/{collectionName}/tags:
    post:
      tags:
        - versioning
      summary: Create a Tag
      description: >-
        Pin a committed snapshot from a branch or tag in the same collection as
        an immutable tag. A tag source pins the same snapshot, not a chain of
        tags. Alias sources are not allowed, and source.asOf is valid only for a
        branch source. Omit source to use main. An empty head or unavailable
        asOf history returns 400; verify committed data before tagging.
      operationId: createTag
      parameters:
        - $ref: '#/components/parameters/CollectionName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                tagName:
                  type: string
                  minLength: 3
                  maxLength: 52
                  pattern: ^[a-zA-Z0-9_-]{3,52}$
                source:
                  $ref: '#/components/schemas/RefSource'
              required:
                - tagName
            examples:
              example:
                value:
                  tagName: validated-2026-09
                  source:
                    kind: branch
                    name: candidate
      responses:
        '201':
          description: Tag created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  tag:
                    $ref: '#/components/schemas/TagDetails'
                required:
                  - tag
              examples:
                example:
                  value:
                    tag:
                      name: validated-2026-09
                      snapshotId: snapshot-id
                      createdAt: 1788336000000
                      snapshotCommittedAt: 1788335940000
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              examples:
                example:
                  summary: Example response for bad request
                  value:
                    message: Invalid request
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
              examples:
                example:
                  summary: Example response for authentication failure
                  value:
                    message: Authentication failed
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          description: Resource already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceAlreadyExists'
              examples:
                example:
                  summary: Example response for resource already exists
                  value:
                    message: Resource already exists
        '413':
          $ref: '#/components/responses/PayloadTooLarge'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
              examples:
                example:
                  summary: Example response for too many requests
                  value:
                    message: Too many requests
          headers:
            Retry-After:
              description: >-
                Optional retry delay in seconds. Not present on every 429
                response.
              schema:
                type: string
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
              examples:
                example:
                  summary: Example response for internal server error
                  value:
                    message: Internal server error
        '502':
          $ref: '#/components/responses/BadGateway'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
      security:
        - ProjectApiKey: []
components:
  parameters:
    CollectionName:
      in: path
      name: collectionName
      description: Collection name.
      required: true
      schema:
        type: string
  schemas:
    RefSource:
      title: RefSource
      oneOf:
        - $ref: '#/components/schemas/BranchSource'
        - title: Tag source
          type: object
          additionalProperties: false
          properties:
            kind:
              type: string
              enum:
                - tag
            name:
              type: string
              minLength: 3
              maxLength: 52
              pattern: ^[a-zA-Z0-9_-]{3,52}$
          required:
            - kind
            - name
    TagDetails:
      title: TagDetails
      type: object
      properties:
        name:
          type: string
        snapshotId:
          type: string
          description: >-
            Immutable snapshot pinned by the tag. A tag cannot pin an empty
            head.
        snapshotCommittedAt:
          type: integer
          format: int64
          description: Pinned snapshot commit time as Unix epoch milliseconds.
        createdAt:
          type: integer
          format: int64
          description: >-
            Tag creation time as Unix epoch milliseconds, independent of the
            pinned snapshot commit time.
      required:
        - name
        - snapshotId
        - snapshotCommittedAt
        - createdAt
    BadRequest:
      title: BadRequest
      type: object
      properties:
        message:
          type: string
    Unauthenticated:
      title: Unauthenticated
      type: object
      properties:
        message:
          type: string
    ResourceAlreadyExists:
      title: ResourceAlreadyExists
      type: object
      properties:
        message:
          type: string
    TooManyRequests:
      title: TooManyRequests
      type: object
      properties:
        message:
          type: string
    InternalServerError:
      title: InternalServerError
      type: object
      properties:
        message:
          type: string
    BranchSource:
      title: Branch source
      type: object
      additionalProperties: false
      properties:
        kind:
          type: string
          enum:
            - branch
        name:
          type: string
          minLength: 3
          maxLength: 52
          pattern: ^[a-zA-Z0-9_-]{3,52}$
        asOf:
          type: integer
          format: int64
          description: Latest committed snapshot cutoff as Unix epoch milliseconds.
      required:
        - kind
        - name
    ResourceNotFound:
      title: ResourceNotFound
      type: object
      properties:
        message:
          type: string
    MessageResponse:
      type: object
      properties:
        message:
          type: string
      required:
        - message
  responses:
    ResourceNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceNotFound'
          examples:
            example:
              summary: Example response for resource not found
              value:
                message: Resource not found
    PayloadTooLarge:
      description: >-
        Request exceeds the Gateway transport limit. Reduce the request size or
        use bulk upsert when supported.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageResponse'
    BadGateway:
      description: >-
        Unexpected downstream failure. A failed write response may leave its
        outcome uncertain.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageResponse'
    ServiceUnavailable:
      description: >-
        Transient catalog or storage dependency failure. Use bounded retries
        where the operation permits.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageResponse'
    GatewayTimeout:
      description: >-
        Gateway request deadline exceeded. A write may have been applied; verify
        its outcome before retrying.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageResponse'
  securitySchemes:
    ProjectApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Project API Key.
      x-speakeasy-example: <YOUR_PROJECT_API_KEY>

````