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

# Create Invitation

> Create an invitation. A branded one-time acceptance URL carries the token only in its URL fragment, which browsers never send in the initial HTTP request. The URL is returned once and only the token's SHA-256 digest is retained.



## OpenAPI

````yaml /openapi.json post /v1/orgs/{orgId}/projects/{projectId}/access/invitations
openapi: 3.1.0
info:
  title: Korve API
  version: 0.1.0
  description: >-
    Typed control plane for deploying applications and explicitly provisioning
    their managed infrastructure.
servers:
  - url: https://api.korve.dev
security: []
paths:
  /v1/orgs/{orgId}/projects/{projectId}/access/invitations:
    post:
      tags:
        - appAccess
      summary: Create Invitation
      description: >-
        Create an invitation. A branded one-time acceptance URL carries the
        token only in its URL fragment, which browsers never send in the initial
        HTTP request. The URL is returned once and only the token's SHA-256
        digest is retained.
      operationId: appAccess.createInvitation
      parameters:
        - name: orgId
          in: path
          required: true
          schema:
            type: string
          description: The organization's id (UUID) or slug — either form is accepted.
        - name: projectId
          in: path
          required: true
          schema:
            type: string
          description: The project's id (UUID) or slug — either form is accepted.
      requestBody:
        required: true
        x-korve-max-bytes: 1048576
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                email:
                  type: string
                  format: email
                  maxLength: 320
                expiresInSeconds:
                  type: integer
                  minimum: 300
                  maximum: 2592000
              required:
                - email
      responses:
        '201':
          description: Invitation plus a one-time branded acceptance URL.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  invitation:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      email:
                        type: string
                        format: email
                      status:
                        type: string
                        enum:
                          - pending
                          - accepted
                          - revoked
                          - expired
                      expiresAt:
                        type: string
                        format: date-time
                      acceptedAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                      revokedAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                      createdAt:
                        type: string
                        format: date-time
                    required:
                      - id
                      - email
                      - status
                      - expiresAt
                      - acceptedAt
                      - revokedAt
                      - createdAt
                  acceptUrl:
                    type: string
                    format: uri
                    description: >-
                      Dashboard acceptance URL with project and token in the
                      fragment only; its query string is always empty.
                required:
                  - invitation
                  - acceptUrl
        '404':
          description: No such project or access resource in this organization.
        '409':
          description: A pending invitation already exists for this email.
      security:
        - session: []
components:
  securitySchemes:
    session:
      type: apiKey
      in: cookie
      name: korve.session_token

````