openapi: 3.1.0 info: title: Lambda Cloud Audit Events Firewalls 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. ``\nrepresents the endpoint-specific data object returned as part of the response object.\n\n```json\n{\n \"data\": \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 \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 \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 ':'\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 :\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: Firewalls paths: /api/v1/firewall-rules: get: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: type: array items: $ref: '#/components/schemas/FirewallRule' required: - data 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: - Firewalls summary: List inbound firewall rules description: 'Retrieves a list of your firewall rules. **Note:** Firewall rules do not apply to the **us-south-1** region.' operationId: firewallRulesList put: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: type: array items: $ref: '#/components/schemas/FirewallRule' 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: - Firewalls summary: Replace inbound firewall rules description: 'Overwrites the inbound firewall rules currently active for your account''s instances with the desired rules. **Note:** Firewall rules do not apply to the **us-south-1** region.' operationId: firewallRulesSet requestBody: content: application/json: schema: properties: data: type: array items: $ref: '#/components/schemas/FirewallRule' description: The list of inbound firewall rules. required: - data title: FirewallRulesPutRequest type: object required: true /api/v1/firewall-rulesets: get: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: type: array items: $ref: '#/components/schemas/FirewallRuleset' 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: - Firewalls summary: List firewall rulesets description: Retrieves a list of your firewall rulesets. operationId: firewallRulesetsList post: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: $ref: '#/components/schemas/FirewallRuleset' required: - data type: object '400': description: Bad Request content: application/json: schema: additionalProperties: false properties: error: anyOf: - $ref: '#/components/schemas/ApiErrorQuotaExceeded' - $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 '409': description: Conflict content: application/json: schema: additionalProperties: false properties: error: $ref: '#/components/schemas/ApiErrorInternal' required: - error type: object tags: - Firewalls summary: Create firewall ruleset description: Creates a new firewall ruleset with the specified name and rules. operationId: createFirewallRuleset requestBody: content: application/json: schema: description: Request to create a new firewall ruleset. properties: name: type: string maxLength: 64 description: The name of the firewall ruleset. examples: - My Firewall Ruleset region: type: string description: The region in which the firewall ruleset is deployed. rules: type: array items: $ref: '#/components/schemas/FirewallRule' description: The firewall rules to include in the ruleset. required: - name - region - rules title: FirewallRulesetCreateRequest type: object required: true /api/v1/firewall-rulesets/global: get: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: $ref: '#/components/schemas/GlobalFirewallRuleset' 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: - Firewalls summary: Retrieve global firewall ruleset details description: Retrieves the details of the global firewall ruleset. operationId: getGlobalFirewallRuleset patch: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: $ref: '#/components/schemas/GlobalFirewallRuleset' 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 '409': description: Conflict content: application/json: schema: additionalProperties: false properties: error: $ref: '#/components/schemas/ApiErrorInternal' required: - error type: object tags: - Firewalls summary: Update global firewall ruleset description: Updates the global firewall ruleset. This allows updating the rules only. operationId: updateGlobalFirewallRuleset requestBody: content: application/json: schema: description: Request to update the global firewall ruleset. properties: rules: type: array items: $ref: '#/components/schemas/FirewallRule' description: The new firewall rules for the ruleset. If not provided, the rules will not be updated. title: GlobalFirewallRulesetPatchRequest type: object required: true /api/v1/firewall-rulesets/{id}: get: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: $ref: '#/components/schemas/FirewallRuleset' 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/ApiErrorFirewallRulesetNotFound' required: - error type: object tags: - Firewalls summary: Retrieve firewall ruleset details description: Retrieves the details of a specific firewall ruleset. operationId: getFirewallRuleset parameters: - name: id in: path description: The unique identifier (ID) of the firewall ruleset required: true schema: description: The unique identifier (ID) of the firewall ruleset example: c4d291f47f9d436fa39f58493ce3b50d type: string example: c4d291f47f9d436fa39f58493ce3b50d patch: responses: '200': description: OK content: application/json: schema: additionalProperties: false properties: data: $ref: '#/components/schemas/FirewallRuleset' 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/ApiErrorFirewallRulesetNotFound' required: - error type: object '409': description: Conflict content: application/json: schema: additionalProperties: false properties: error: $ref: '#/components/schemas/ApiErrorInternal' required: - error type: object tags: - Firewalls summary: Update firewall ruleset description: Updates a firewall ruleset. This is a partial update that allows updating either the name, rules, or both. operationId: updateFirewallRuleset parameters: - name: id in: path description: The unique identifier (ID) of the firewall ruleset required: true schema: description: The unique identifier (ID) of the firewall ruleset example: c4d291f47f9d436fa39f58493ce3b50d type: string example: c4d291f47f9d436fa39f58493ce3b50d requestBody: content: application/json: schema: description: Request to partially update a firewall ruleset. properties: name: type: string maxLength: 64 description: The new name for the firewall ruleset. If not provided, the name will not be updated. examples: - My Updated Firewall Ruleset rules: type: array items: $ref: '#/components/schemas/FirewallRule' description: The new firewall rules for the ruleset. If not provided, the rules will not be updated. title: FirewallRulesetPatchRequest type: object required: true 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: anyOf: - $ref: '#/components/schemas/ApiErrorFirewallRulesetInUse' - $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/ApiErrorFirewallRulesetNotFound' required: - error type: object '409': description: Conflict content: application/json: schema: additionalProperties: false properties: error: $ref: '#/components/schemas/ApiErrorInternal' required: - error type: object tags: - Firewalls summary: Delete firewall ruleset description: Deletes the firewall ruleset with the specified ID. operationId: deleteFirewallRuleset parameters: - name: id in: path description: The unique identifier (ID) of the firewall ruleset required: true schema: description: The unique identifier (ID) of the firewall ruleset example: c4d291f47f9d436fa39f58493ce3b50d type: string example: c4d291f47f9d436fa39f58493ce3b50d components: schemas: GlobalFirewallRuleset: type: object properties: id: const: global type: string description: The unique identifier of the firewall ruleset. examples: - global name: type: string description: The name of the firewall ruleset. examples: - Default Workspace Global Rules rules: type: array items: $ref: '#/components/schemas/FirewallRule' description: The list of firewall rules in this ruleset. required: - id - name - rules title: GlobalFirewallRuleset description: Firewall rules that apply across all regions. ApiErrorInternal: type: object properties: code: const: global/internal-error type: string description: The unique identifier for the type of error. message: type: string default: An internal server error occurred. description: A description of the error. suggestion: type: string default: Try again later. Contact Support if the problem persists. description: One or more suggestions of possible ways to fix the error. required: - code - message - suggestion title: ApiErrorInternal Region: type: object properties: name: type: string description: The region code. description: type: string description: The region description. required: - name - description title: Region ApiErrorFirewallRulesetNotFound: type: object properties: code: const: global/object-does-not-exist type: string description: The unique identifier for the type of error. message: type: string default: Firewall ruleset does not exist or you do not have permission to access it. description: A description of the error. suggestion: type: string default: Check your firewall ruleset ID and try again. description: One or more suggestions of possible ways to fix the error. required: - code - message - suggestion title: ApiErrorFirewallRulesetNotFound NetworkProtocol: title: NetworkProtocol enum: - tcp - udp - icmp - all type: string ApiErrorNotFound: type: object properties: code: const: global/not-found type: string description: The unique identifier for the type of error. message: type: string default: The requested resource was not found. description: A description of the error. suggestion: type: string description: One or more suggestions of possible ways to fix the error. required: - code - message title: ApiErrorNotFound ApiErrorUnauthorized: type: object properties: code: const: global/invalid-api-key type: string description: The unique identifier for the type of error. message: type: string default: API key was invalid, expired, or deleted. description: A description of the error. suggestion: type: string default: Check your API key or create a new one, then try again. description: One or more suggestions of possible ways to fix the error. required: - code - message - suggestion title: ApiErrorUnauthorized ApiErrorAccountInactive: type: object properties: code: const: global/account-inactive type: string description: The unique identifier for the type of error. message: type: string default: Your account is inactive. description: A description of the error. suggestion: type: string default: Make sure you have verified your email address and have a valid payment method. Contact Support if problems continue. description: One or more suggestions of possible ways to fix the error. required: - code - message - suggestion title: ApiErrorAccountInactive FirewallRule: type: object properties: protocol: $ref: '#/components/schemas/NetworkProtocol' description: The protocol to which the rule applies. examples: - tcp port_range: type: array items: type: integer maximum: 65535 minimum: 1 minItems: 2 maxItems: 2 description: 'An inclusive range of network ports specified as `[min, max]`. Not allowed for the `icmp` protocol but required for the others. To specify a single port, list it twice (for example, `[22,22]`).' examples: - - 22 - 22 source_network: type: string format: ipv4network description: 'The set of source IPv4 addresses from which you want to allow inbound traffic. These addresses must be specified in CIDR notation. You can specify individual public IPv4 CIDR blocks such as `1.2.3.4` or `1.2.3.4/32`, or you can specify `0.0.0.0/0` to allow access from any address. This value is a string consisting of a public IPv4 address optionally followed by a slash (/) and an integer mask (the network prefix). If no mask is provided, the API assumes `/32` by default.' examples: - 0.0.0.0/0 description: type: string minLength: 0 maxLength: 128 description: A human-readable description of the rule. examples: - Allow SSH from anywhere required: - protocol - source_network - description title: FirewallRule ApiErrorFirewallRulesetInUse: type: object properties: code: const: firewall-rulesets/firewall-ruleset-in-use type: string description: The unique identifier for the type of error. message: type: string default: Firewall ruleset is in use by one or more instances. description: A description of the error. suggestion: type: string default: Terminate all instances that are using the ruleset before deleting it. description: One or more suggestions of possible ways to fix the error. required: - code - message - suggestion title: ApiErrorFirewallRulesetInUse ApiErrorQuotaExceeded: type: object properties: code: const: global/quota-exceeded type: string description: The unique identifier for the type of error. message: type: string default: Quota exceeded. description: A description of the error. suggestion: type: string default: Contact Support to increase your quota. description: One or more suggestions of possible ways to fix the error. required: - code - message - suggestion title: ApiErrorQuotaExceeded ApiErrorInvalidParameters: type: object properties: code: const: global/invalid-parameters type: string description: The unique identifier for the type of error. message: type: string default: Invalid request data. description: A description of the error. suggestion: type: string description: One or more suggestions of possible ways to fix the error. required: - code - message title: ApiErrorInvalidParameters FirewallRuleset: type: object properties: id: type: string description: The unique identifier of the firewall ruleset. examples: - c4d291f47f9d436fa39f58493ce3b50d name: type: string description: The name of the firewall ruleset. examples: - My Firewall Ruleset region: $ref: '#/components/schemas/Region' description: The region in which the firewall ruleset is deployed. rules: type: array items: $ref: '#/components/schemas/FirewallRule' description: The list of firewall rules in this ruleset. created: type: string format: date-time description: The date and time at which the firewall ruleset was created. Formatted as an ISO 8601 timestamp. instance_ids: type: array items: type: string description: The IDs of instances this firewall ruleset is associated with. required: - id - name - region - rules - created - instance_ids title: FirewallRuleset description: A collection of firewall rules that can be associated with instances. EmptyResponse: type: object properties: {} title: EmptyResponse securitySchemes: basicAuth: type: http description: 'Basic HTTP authentication. Allowed headers: * `Authorization: Basic :` * `Authorization: Basic `' scheme: basic bearerAuth: type: http description: 'Bearer HTTP authentication. Allowed headers: * `Authorization: Bearer `' scheme: bearer x-lambda-api-keys-config-url: https://cloud.lambda.ai/api-keys