Lambda Support Tickets API
The Lambda Support Ticketing API is currently in beta. Contact support to enable access.
The Lambda Support Ticketing API is currently in beta. Contact support to enable access.
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