Lambda Support Tickets API

The Lambda Support Ticketing API is currently in beta. Contact support to enable access.

OpenAPI Specification

lambda-labs-support-tickets-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Lambda Cloud Audit Events Support Tickets API
  version: 1.10.0
  description: "The Lambda Cloud API provides a set of REST API endpoints you can use to create\nand manage your Lambda Cloud resources.\n\nRequests to the API are generally limited to one request per second. Requests to\nthe `/instance-operations/launch` endpoint are limited to one request per 12\nseconds, or five requests per minute.\n\n## Response types and formats {#formats}\n\nThe format of each response object depends on whether the request succeeded or failed.\n\n### Success responses {#success-responses}\n\nWhen a request succeeds, the API returns a response object in the following format. `<PAYLOAD>`\nrepresents the endpoint-specific data object returned as part of the response object.\n\n```json\n{\n    \"data\": <PAYLOAD>\n}\n```\n\n### Error responses {#error-responses}\n\nWhen a request fails, the API returns an error response object in the following format:\n\n```json\n{\n    \"error\": {\n        \"code\": string,\n        \"message\": string,\n        \"suggestion\": string?\n    }\n}\n```\n\n- `code`: A machine- and human-readable error code specific to a particular failure mode.\n- `message`: An explanation of the error.\n- `suggestion`: When present, a suggestion for how to address the error.\n\n:::note{type=\"info\" title=\"Note\"}\nWhen handling errors, avoid relying on the values of `message` or `suggestion`, as\nthese values are subject to change. Instead, use the value of `code`.\n:::\n\n#### Provider errors {#provider-errors}\n\nIn some cases, you might receive errors that come from upstream services/providers rather than directly\nfrom Lambda services. You can identify these errors by their error code prefix, `provider/`.\n\nCommon provider errors include:\n\n- Network outages or connectivity issues\n- Service unavailability\n- Quota limitations or resource exhaustion\n\nAn example of a typical service unavailability error:\n\n```json\n{\n  \"error\": {\n    \"code\": \"provider/internal-unavailable\",\n    \"message\": \"Provider unavailable\",\n    \"suggestion\": \"Try again shortly\"\n  }\n}\n```\n## Outgoing webhooks {#outgoing-webhooks}\n\nLambda can send webhook notifications to your URL when support ticket events occur,\nenabling near real-time integration with your systems.\n\n### Event types {#event-types}\n\n- `ticket.created` - A support ticket was created.\n- `ticket.status_changed` - A support ticket's status was updated, and the ticket remains open.\n- `ticket.resolved` - A support ticket's status was set to `solved`, or the ticket was closed.\n\n### Payload structure {#payload-structure}\n\nAll webhook payloads follow this structure:\n\n```json\n{\n  \"id\": \"a3b7c9d1e5f642a8b0c2d4e6f8a0b2c4\",\n  \"object\": \"event\",\n  \"type\": \"ticket.created\",\n  \"created\": 1700000000,\n  \"api_version\": \"2025-11-18\",\n  \"data\": {\n    \"object\": \"ticket\",\n    \"id\": \"f1e2d3c4b5a647869708192a3b4c5d6e\",\n    \"subject\": \"Issue with instance 0920582c7ff041399e34823a0be62549\",\n    \"description\": \"Detailed description of the issue...\",\n    \"request_type\": \"incident\",\n    \"severity\": \"sev_2\",\n    \"status\": \"new\",\n    \"created_at\": \"2024-11-15T10:00:00+00:00\",\n    \"updated_at\": \"2024-11-15T10:00:00+00:00\",\n    \"instance_ip\": \"192.168.1.100\",\n    \"instance_id\": \"0920582c7ff041399e34823a0be62549\",\n    \"cluster_id\": null,\n    \"source\": \"api\"\n  }\n}\n```\n\n### Webhook authentication {#webhook-authentication}\n\nWebhook requests include a Bearer token in the `Authorization` header for authentication:\n\n```http\nAuthorization: Bearer <token>\n```\n## Authentication {#authentication}\n\nThe Lambda Cloud API uses API keys to authenticate incoming requests. You\ncan generate a new API key pair or view your existing API keys by visiting\nthe [API keys page](https://cloud.lambda.ai/api-keys) in the Lambda Cloud\ndashboard.\n\nIn general, Lambda recommends passing an HTTP Bearer header that contains\nyour API key:\n\n```http\nAuthorization: Bearer <YOUR-API-KEY>\n```\n\n### Authenticating with `curl` {#authenticating-with-curl}\n\nThe API also supports passing an HTTP Basic header. This option chiefly exists\nto support `curl`'s `-u` flag, which allows you to pass your credentials\nwithout having to write out the full `Authorization: Basic` header string.\nFor example:\n\n```bash\ncurl --request GET --url 'https://cloud.lambda.ai/api/v1/instances' \\\n  --header 'accept: application/json' \\\n  --user '<YOUR-API-KEY>:'\n```\n\nIf your use case requires it, you can also pass the HTTP Basic header directly.\nThe value you pass must be a Base64-encoded string containing your API key\nand a trailing colon:\n\n```http\nAuthorization: Basic <BASE64-ENCODED-API-KEY>:\n```\n\n:::note{type=\"attention\" title=\"Important\"}\nIf you make a request without including a supported `Authorization` header,\nthe request will fail.\n:::"
servers:
- url: https://cloud.lambda.ai/
  description: Production server
- url: https://cloud.lambdalabs.com/
  description: Secondary production server (deprecated)
security:
- bearerAuth: []
- basicAuth: []
tags:
- name: Support Tickets
  description: The Lambda Support Ticketing API is currently in beta. Contact support to enable access.
paths:
  /api/v1/tickets:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/TicketListResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorAccountInactive'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: List support tickets
      description: Retrieves a list of support tickets for your account.
      operationId: listTickets
      parameters:
      - name: status
        in: query
        description: The current status of a support ticket.
        required: false
        schema:
          description: The current status of a support ticket.
          example:
          - open
          - pending
          items:
            $ref: '#/components/schemas/TicketStatus'
          type: array
        example:
        - open
        - pending
      - name: type
        in: query
        description: The type of support ticket.
        required: false
        schema:
          description: The type of support ticket.
          example:
          - incident
          - service_request
          - automated_event
          items:
            $ref: '#/components/schemas/TicketType'
          type: array
        example:
        - incident
        - service_request
        - automated_event
      - name: severity
        in: query
        description: The severity level for incident tickets.
        required: false
        schema:
          description: The severity level for incident tickets.
          example:
          - sev_1
          - sev_2
          items:
            $ref: '#/components/schemas/TicketSeverity'
          type: array
        example:
        - sev_1
        - sev_2
      - name: order_by
        in: query
        description: Specifies the field used to sort the list of tickets.
        required: false
        schema:
          $ref: '#/components/schemas/TicketOrderByField'
          description: Specifies the field used to sort the list of tickets.
          example: created_at
        example: created_at
      - name: direction
        in: query
        description: Specifies the order in which to sort the list of tickets.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
          description: Specifies the order in which to sort the list of tickets.
          example: desc
        example: desc
      - name: page_token
        in: query
        description: A page token. Provide this token in your next request to retrieve the next page of results. If there are no additional pages, this field has a null value.
        required: false
        schema:
          description: A page token. Provide this token in your next request to retrieve the next page of results. If there are no additional pages, this field has a null value.
          example: abCdEFg0h1I2jKlm34n5O6Pq78r=
          type: string
        example: abCdEFg0h1I2jKlm34n5O6Pq78r=
    post:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/TicketCreateResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorAccountInactive'
                    - $ref: '#/components/schemas/ApiErrorForbidden'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: Create a support ticket
      description: Creates a new support ticket.
      operationId: createTicket
      requestBody:
        content:
          application/json:
            schema:
              properties:
                subject:
                  type: string
                  description: A short summary of the issue.
                  examples:
                  - GPU cluster experiencing performance degradation
                description:
                  type: string
                  description: An initial description of the issue or request. When you make an API request to list the comments on this ticket, this will appear as the first public comment in the list.
                  examples:
                  - Performance drops by 30-40% during peak hours.
                type:
                  $ref: '#/components/schemas/TicketRequestType'
                  examples:
                  - incident
                severity:
                  $ref: '#/components/schemas/TicketSeverity'
                  description: The severity level of the issue. Required for incident tickets, must not be provided for service requests.
                  examples:
                  - sev_1
                ip:
                  type: string
                  description: The IP address of the affected node.
                  examples:
                  - 192.222.53.194
                instance_id:
                  type: string
                  description: The ID of the affected on-demand instance.
                  examples:
                  - 2fbb7a309a7c475abe7ee58bd125ac36
                cluster_id:
                  type: string
                  description: The ID of the affected 1CC or Supercluster.
                  examples:
                  - a0bacf07268245a2b596b5863185a4ff
              required:
              - subject
              - description
              - type
              title: TicketCreateRequest
              type: object
        required: true
  /api/v1/tickets/{ticket_id}:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorAccountInactive'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorTicketNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: Get a support ticket
      description: Retrieves a specific support ticket by ID.
      operationId: getTicket
      parameters:
      - name: ticket_id
        in: path
        description: The ticket ID.
        required: true
        schema:
          description: The ticket ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
    patch:
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/EmptyResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorAccountInactive'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorTicketNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: Update a support ticket
      description: Updates a support ticket status or severity, or adds a comment to the ticket. Returns a 202. Ticket updates happen asynchronously so to see the result of an update, re-query the tickets API.
      operationId: updateTicket
      parameters:
      - name: ticket_id
        in: path
        description: The ticket ID.
        required: true
        schema:
          description: The ticket ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
      requestBody:
        content:
          application/json:
            schema:
              properties:
                status:
                  const: solved
                  type: string
                  description: The new status to set the ticket to.
                  examples:
                  - solved
                severity:
                  $ref: '#/components/schemas/TicketSeverity'
                  description: The new severity level to set the ticket to.
                  examples:
                  - sev_2
                comment:
                  $ref: '#/components/schemas/TicketCommentInput'
                  description: Adds a new comment.
              title: TicketUpdateRequest
              type: object
        required: true
  /api/v1/tickets/{ticket_id}/attachments:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/AttachmentListResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorAccountInactive'
                    - $ref: '#/components/schemas/ApiErrorForbidden'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorTicketNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: List ticket attachments
      description: Retrieves all attachments for a ticket.
      operationId: listAttachments
      parameters:
      - name: ticket_id
        in: path
        description: The ticket ID.
        required: true
        schema:
          description: The ticket ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
      - name: status
        in: query
        description: The current status of an attachment upload.
        required: false
        schema:
          $ref: '#/components/schemas/AttachmentUploadStatus'
          description: The current status of an attachment upload.
          example: uploaded
        example: uploaded
    post:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/AttachmentInitiateResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorAccountInactive'
                    - $ref: '#/components/schemas/ApiErrorForbidden'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorTicketNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: Initiate attachment upload
      description: Start the upload process for a ticket attachment. Returns a presigned URL for direct upload to storage.
      operationId: initiateAttachmentUpload
      parameters:
      - name: ticket_id
        in: path
        description: The ticket ID.
        required: true
        schema:
          description: The ticket ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
      requestBody:
        content:
          application/json:
            schema:
              description: Request to initiate file upload for a ticket attachment.
              properties:
                filename:
                  type: string
                  maxLength: 255
                  description: The original filename.
                  examples:
                  - debug-logs.tar.gz
                content_type:
                  type: string
                  description: The MIME type of the attachment, such as `application/gzip` for a .gz file or text/plain for a plaintext file.
                  examples:
                  - application/gzip
                size_bytes:
                  type: integer
                  minimum: 1
                  description: The file size in bytes. The file size must be one or more bytes.
                  examples:
                  - 1024000
              required:
              - filename
              - content_type
              - size_bytes
              title: AttachmentInitiateRequest
              type: object
        required: true
  /api/v1/tickets/{ticket_id}/attachments/{attachment_id}:
    delete:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/EmptyResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorAccountInactive'
                    - $ref: '#/components/schemas/ApiErrorForbidden'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorTicketNotFound'
                    - $ref: '#/components/schemas/ApiErrorResourceNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: Delete attachment
      description: Delete an attachment.
      operationId: deleteAttachment
      parameters:
      - name: ticket_id
        in: path
        description: The ticket ID.
        required: true
        schema:
          description: The ticket ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
      - name: attachment_id
        in: path
        description: The attachment ID.
        required: true
        schema:
          description: The attachment ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
  /api/v1/tickets/{ticket_id}/attachments/{attachment_id}/complete:
    post:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/Attachment'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorUnauthorized'
                required:
                - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorAccountInactive'
                    - $ref: '#/components/schemas/ApiErrorForbidden'
                required:
                - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    anyOf:
                    - $ref: '#/components/schemas/ApiErrorTicketNotFound'
                    - $ref: '#/components/schemas/ApiErrorResourceNotFound'
                required:
                - error
                type: object
      tags:
      - Support Tickets
      summary: Complete attachment upload
      description: Mark attachment upload as complete after client finishes uploading to storage.
      operationId: completeAttachmentUpload
      parameters:
      - name: ticket_id
        in: path
        description: The ticket ID.
        required: true
        schema:
          description: The ticket ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
      - name: attachment_id
        in: path
        description: The attachment ID.
        required: true
        schema:
          description: The attachment ID.
          example: 0920582c7ff041399e34823a0be62549
          type: string
        example: 0920582c7ff041399e34823a0be62549
  /api/v1/tickets/{ticket_id}/attachments/{attachment_id}/download:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/AttachmentDownloadResponse'
                required:
                - data
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ApiErrorInvalidParameters'
                required:
                - error
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/component

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lambda-labs/refs/heads/main/openapi/lambda-labs-support-tickets-api-openapi.yml