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

# Create Launch Session

> Create a report-writing launch session for a clinician in the connected practice. Requires an Idempotency-Key header: retrying with the same key and identical body returns the original session; reusing a key with a different body fails with 409. Sessions expire 48 hours after creation if not completed. Open the returned launch_url for the clinician.



## OpenAPI

````yaml /developer-docs/api/openapi.json post /v1/partner/launch-sessions
openapi: 3.1.0
info:
  title: Everbility Public API
  version: 1.0.0
  description: >-
    Pull reports from Everbility, upload notes and files, poll asynchronous
    jobs, and generate reports from saved templates. Partner endpoints let
    approved platforms connect practices with OAuth 2.0, launch report-writing
    sessions, receive signed lifecycle webhooks, and retrieve completed
    documents.
servers:
  - url: https://api.everbility.com
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/partner/launch-sessions:
    post:
      tags:
        - partner
      summary: Create Launch Session
      description: >-
        Create a report-writing launch session for a clinician in the connected
        practice. Requires an Idempotency-Key header: retrying with the same key
        and identical body returns the original session; reusing a key with a
        different body fails with 409. Sessions expire 48 hours after creation
        if not completed. Open the returned launch_url for the clinician.
      operationId: create_partner_launch_session_v1_partner_launch_sessions_post
      parameters:
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            title: Idempotency-Key
          description: >-
            Unique key per logical session (for example a UUID). Enables safe
            retries.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartnerLaunchSessionCreateInput'
      responses:
        '200':
          description: >-
            Session created (or the existing session for a repeated
            Idempotency-Key).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerLaunchSessionCreateResponse'
        '400':
          description: >-
            Missing Idempotency-Key, or clinician_email did not match exactly
            one verified practice member.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerErrorResponse'
              example:
                detail: clinician_email_not_resolved
        '401':
          description: Invalid or expired access token, or the connection was revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerErrorResponse'
              example:
                detail: Invalid bearer token
        '403':
          description: >-
            The mapped Everbility client is not accessible to the assigned
            clinician.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerErrorResponse'
              example:
                detail: client_access_denied
        '409':
          description: Idempotency-Key was reused with a different request body.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerErrorResponse'
              example:
                detail: Idempotency-Key conflict
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - partnerBearer: []
components:
  schemas:
    PartnerLaunchSessionCreateInput:
      type: object
      title: PartnerLaunchSessionCreateInput
      properties:
        external_client_id:
          type: string
          minLength: 1
          maxLength: 255
          title: External Client Id
          description: >-
            Your platform's ID for the client. Used to remember the client
            mapping across sessions on this connection.
        clinician_email:
          type: string
          minLength: 3
          maxLength: 320
          title: Clinician Email
          description: >-
            Must match the verified email of exactly one member of the connected
            practice. Matching is case-insensitive.
        client_first_name:
          anyOf:
            - type: string
              maxLength: 255
            - type: 'null'
          title: Client First Name
          description: Shown to the clinician when mapping the client for the first time.
        client_last_name:
          anyOf:
            - type: string
              maxLength: 255
            - type: 'null'
          title: Client Last Name
          description: Shown to the clinician when mapping the client for the first time.
      required:
        - external_client_id
        - clinician_email
      example:
        external_client_id: your-client-42
        clinician_email: jordan@examplepractice.com
        client_first_name: Alex
        client_last_name: Nguyen
    PartnerLaunchSessionCreateResponse:
      type: object
      title: PartnerLaunchSessionCreateResponse
      properties:
        session_id:
          type: string
          title: Session Id
        status:
          type: string
          enum:
            - created
            - opened
            - completed
            - expired
          title: Status
        launch_url:
          type: string
          title: Launch Url
          description: >-
            Open this URL for the assigned clinician to write the report in
            Everbility.
        expires_at:
          type: string
          format: date-time
          title: Expires At
          description: Sessions expire 48 hours after creation if not completed.
      required:
        - session_id
        - status
        - launch_url
        - expires_at
      example:
        session_id: psess_Zl9nB1qFhOQe2kQ4rW8xJ3Ty
        status: created
        launch_url: >-
          https://www.everbility.com/partner-sessions/psess_Zl9nB1qFhOQe2kQ4rW8xJ3Ty
        expires_at: '2026-07-08T04:15:00Z'
    PartnerErrorResponse:
      type: object
      title: PartnerErrorResponse
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable error code or message.
      required:
        - detail
      example:
        detail: Invalid authorization code
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Use a Clerk-backed Everbility user or organisation API key directly as
        the bearer token.
    partnerBearer:
      type: http
      scheme: bearer
      bearerFormat: Partner access token
      description: >-
        Opaque partner access token (pat_...) issued by POST
        /v1/partner/oauth/token. Access tokens last 1 hour; refresh with the
        90-day refresh token.

````