> ## Documentation Index > Fetch the complete documentation index at: https://bunny.net/docs/llms.txt > Use this file to discover all available pages before exploring further. # Add Application > Creates a new application with the specified configuration including containers, volumes, region settings, and autoscaling. ## OpenAPI ````yaml https://api-mc.opsbunny.net/docs/public/swagger.json post /apps openapi: 3.0.4 info: title: Public API description: 'Public API endpoints for user consumption. Release version: v1.11.1.0' version: '1.0' servers: - url: https://api.bunny.net/mc security: - AccessKey: [] paths: /apps: post: tags: - Applications summary: Add Application description: >- Creates a new application with the specified configuration including containers, volumes, region settings, and autoscaling. operationId: AddApplication requestBody: content: application/json: schema: $ref: '#/components/schemas/AddApplicationRequest' text/json: schema: $ref: '#/components/schemas/AddApplicationRequest' application/*+json: schema: $ref: '#/components/schemas/AddApplicationRequest' responses: '201': description: Application was successfully created. content: application/json: schema: $ref: '#/components/schemas/AddApplicationResponse' '400': description: Invalid input. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '401': description: User is unauthorized. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: User has invalid card or suspended. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '409': description: Application count limit is reached. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '422': description: Unprocessable entity. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '500': description: Unexpected server error. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' components: schemas: AddApplicationRequest: required: - autoScaling - name - regionSettings - runtimeType type: object properties: name: maxLength: 100 minLength: 1 pattern: '[A-Za-z0-9-\s]+' type: string runtimeType: $ref: '#/components/schemas/ApplicationRuntimeType' terminationGracePeriodSeconds: maximum: 300 minimum: 1 type: integer format: int64 repositorySettings: $ref: '#/components/schemas/RepositorySettings' autoScaling: $ref: '#/components/schemas/AutoscalingSettings' regionSettings: $ref: '#/components/schemas/UpdateRegionSettingsRequest' containerTemplates: minItems: 1 type: array items: $ref: '#/components/schemas/ContainerRequest' volumes: type: array items: $ref: '#/components/schemas/VolumeRequest' gpu: $ref: '#/components/schemas/GpuConfig' additionalProperties: false AddApplicationResponse: type: object properties: id: type: string additionalProperties: false ErrorDetails: type: object properties: title: type: string description: A short, human-readable summary of the problem type. readOnly: true status: type: integer description: The HTTP status code. format: int32 readOnly: true detail: type: string description: >- A human-readable explanation specific to this occurrence of the problem. nullable: true readOnly: true instance: type: string description: >- A URI reference that identifies the specific occurrence of the problem. nullable: true readOnly: true errors: type: array items: $ref: '#/components/schemas/ValidationError' description: Additional validation errors for field-specific issues. nullable: true readOnly: true id: type: string description: >- The application ID, returned as an RFC 7807 extension field when relevant (e.g. partial save errors). Matches the "id" field from successful create response for consistency. nullable: true readOnly: true additionalProperties: false description: RFC 7807 Problem Details response model. ProblemDetails: type: object properties: type: type: string nullable: true title: type: string nullable: true status: type: integer format: int32 nullable: true detail: type: string nullable: true instance: type: string nullable: true additionalProperties: {} ApplicationRuntimeType: enum: - shared - reserved type: string RepositorySettings: type: object properties: templateRepository: type: string nullable: true repositoryName: type: string nullable: true owner: type: string nullable: true additionalProperties: false AutoscalingSettings: required: - max - min type: object properties: min: maximum: 1000 minimum: 1 type: integer format: int32 example: 1 max: maximum: 1000 minimum: 1 type: integer format: int32 example: 10 additionalProperties: false UpdateRegionSettingsRequest: type: object properties: allowedRegionIds: type: array items: type: string nullable: true example: - DE - UK - US requiredRegionIds: type: array items: type: string nullable: true example: - DE maxAllowedRegions: type: integer format: int32 nullable: true example: 5 nodeSelectors: type: object additionalProperties: type: string nullable: true additionalProperties: false ContainerRequest: required: - imageName - imageNamespace - imageRegistryId - imageTag - name type: object properties: id: type: string description: >- Absence of the id means it is a new container. Presence of the id means it is an update of the existing. nullable: true name: maxLength: 50 minLength: 1 type: string image: type: string nullable: true imageName: minLength: 1 pattern: '[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*' type: string imageNamespace: minLength: 1 pattern: '[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*' type: string imageTag: minLength: 1 pattern: '[a-zA-Z0-9]+(?:[._-]{1,2}[a-zA-Z0-9]+)*' type: string imageDigest: pattern: sha256:[a-z0-9]{64} type: string nullable: true imageRegistryId: minLength: 1 type: string imagePullPolicy: $ref: '#/components/schemas/ImagePullPolicy' entryPoint: $ref: '#/components/schemas/ContainerEntryPoint' probes: $ref: '#/components/schemas/ContainerProbes' environmentVariables: type: array items: $ref: '#/components/schemas/EnvironmentVariable' endpoints: type: array items: $ref: '#/components/schemas/EndpointRequest' volumeMounts: type: array items: $ref: '#/components/schemas/VolumeMountRequest' additionalProperties: false VolumeRequest: required: - name - size type: object properties: name: maxLength: 50 minLength: 1 type: string size: maximum: 100 minimum: 1 type: integer format: int32 example: 5 additionalProperties: false GpuConfig: required: - type type: object properties: type: minLength: 1 type: string count: maximum: 2147483647 minimum: 1 type: integer format: int32 example: 25 additionalProperties: false ValidationError: required: - message type: object properties: field: type: string nullable: true message: type: string additionalProperties: false ImagePullPolicy: enum: - always - ifNotPresent type: string ContainerEntryPoint: type: object properties: command: type: string nullable: true commandArray: type: array items: type: string nullable: true arguments: type: string nullable: true argumentsArray: type: array items: type: string nullable: true workingDirectory: type: string nullable: true additionalProperties: false ContainerProbes: type: object properties: startup: $ref: '#/components/schemas/ContainerProbe' readiness: $ref: '#/components/schemas/ContainerProbe' liveness: $ref: '#/components/schemas/ContainerProbe' additionalProperties: false EnvironmentVariable: required: - name type: object properties: name: minLength: 1 type: string value: type: string additionalProperties: false EndpointRequest: required: - displayName type: object properties: displayName: maxLength: 50 minLength: 1 type: string cdn: $ref: '#/components/schemas/CdnEndpointRequest' anycast: $ref: '#/components/schemas/AnycastEndpointRequest' additionalProperties: false VolumeMountRequest: required: - mountPath - name type: object properties: name: maxLength: 50 minLength: 1 type: string mountPath: minLength: 1 pattern: ^/(?!.*//)(?!.*\.\.)(?!.*\s)([a-zA-Z0-9._-]+/?)+$ type: string additionalProperties: false ContainerProbe: type: object properties: initialDelaySeconds: maximum: 3600 minimum: 1 type: integer format: int32 default: 10 nullable: true periodSeconds: maximum: 3600 minimum: 1 type: integer format: int32 default: 10 nullable: true timeoutSeconds: maximum: 3600 minimum: 1 type: integer format: int32 default: 7 nullable: true failureThreshold: maximum: 1000 minimum: 1 type: integer format: int32 default: 3 nullable: true successThreshold: maximum: 1000 minimum: 1 type: integer format: int32 default: 1 nullable: true httpGet: $ref: '#/components/schemas/HttpGetProbe' tcpSocket: $ref: '#/components/schemas/TcpSocketProbe' grpc: $ref: '#/components/schemas/GrpcProbe' additionalProperties: false CdnEndpointRequest: type: object properties: isSslEnabled: type: boolean stickySessions: $ref: '#/components/schemas/StickySessionSettings' pullZoneId: type: integer format: int32 nullable: true portMappings: maxItems: 1 minItems: 1 type: array items: $ref: '#/components/schemas/ContainerPortMappingRequest' additionalProperties: false AnycastEndpointRequest: required: - portMappings - type type: object properties: type: $ref: '#/components/schemas/AnycastIpProtocolVersion' portMappings: minItems: 1 type: array items: $ref: '#/components/schemas/ContainerPortMappingRequest' additionalProperties: false HttpGetProbe: type: object properties: request: $ref: '#/components/schemas/HttpGetProbeRequestDetails' response: $ref: '#/components/schemas/HttpGetProbeResponseDetails' additionalProperties: false TcpSocketProbe: type: object properties: request: $ref: '#/components/schemas/TcpSocketProbeRequestDetails' additionalProperties: false GrpcProbe: type: object properties: request: $ref: '#/components/schemas/GrpcProbeRequestDetails' additionalProperties: false StickySessionSettings: required: - sessionHeaders type: object properties: enabled: type: boolean sessionHeaders: maxItems: 3 minItems: 1 type: array items: type: string cookieName: type: string additionalProperties: false ContainerPortMappingRequest: required: - containerPort type: object properties: containerPort: maximum: 65535 minimum: 1 type: integer format: int32 exposedPort: maximum: 65535 minimum: 1 type: integer format: int32 nullable: true protocols: type: array items: $ref: '#/components/schemas/Protocol' additionalProperties: false AnycastIpProtocolVersion: enum: - iPv4 type: string HttpGetProbeRequestDetails: type: object properties: path: type: string portNumber: maximum: 65535 minimum: 1 type: integer format: int32 additionalProperties: false HttpGetProbeResponseDetails: type: object properties: expectedStatusCode: $ref: '#/components/schemas/HttpStatusCode' additionalProperties: false TcpSocketProbeRequestDetails: type: object properties: portNumber: maximum: 65535 minimum: 1 type: integer format: int32 additionalProperties: false GrpcProbeRequestDetails: type: object properties: portNumber: maximum: 65535 minimum: 1 type: integer format: int32 serviceName: type: string description: >- If this is not specified, the default behavior is to probe the server's overall health status. nullable: true additionalProperties: false Protocol: enum: - tcp - udp - sctp type: string HttpStatusCode: enum: - continue - switchingProtocols - processing - earlyHints - ok - created - accepted - nonAuthoritativeInformation - noContent - resetContent - partialContent - multiStatus - alreadyReported - imUsed - multipleChoices - movedPermanently - found - seeOther - notModified - useProxy - unused - temporaryRedirect - permanentRedirect - badRequest - unauthorized - paymentRequired - forbidden - notFound - methodNotAllowed - notAcceptable - proxyAuthenticationRequired - requestTimeout - conflict - gone - lengthRequired - preconditionFailed - requestEntityTooLarge - requestUriTooLong - unsupportedMediaType - requestedRangeNotSatisfiable - expectationFailed - misdirectedRequest - unprocessableEntity - locked - failedDependency - upgradeRequired - preconditionRequired - tooManyRequests - requestHeaderFieldsTooLarge - unavailableForLegalReasons - internalServerError - notImplemented - badGateway - serviceUnavailable - gatewayTimeout - httpVersionNotSupported - variantAlsoNegotiates - insufficientStorage - loopDetected - notExtended - networkAuthenticationRequired type: string securitySchemes: AccessKey: type: apiKey description: Please enter a valid personal API key. name: AccessKey in: header ```` This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.