POST /accounts/{account_id}/containers/applications
Create a new application. An Application represents an intent to run one or more containers, with the same image, dynamically scheduled based on constraints
Servers
- https://api.cloudflare.com/client/v4
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
account_id |
String | Yes |
Account identifier. |
Request headers
| Name | Type | Required | Description |
|---|---|---|---|
Content-Type |
String | Yes |
The media type of the request body.
Default value: "application/json" |
Request body fields
| Name | Type | Required | Description |
|---|---|---|---|
constraints |
Object | No | |
constraints.jurisdiction |
String | No |
Currently only "eu" and "fedramp" are supported. Overlap between jurisdiction and region is allowed for ENAM, WNAM (FedRAMP) and EEUR, WEUR (EU). |
constraints.regions[] |
Array | No | |
rollout_active_grace_period |
Integer | No |
Grace period for active instances to stay alive before becoming eligible for shutdown signal due to a rollout, in seconds. Defaults to 0. Default value: 0 |
scheduling_policy |
String | Yes |
The scheduling policy to use for an application Valid values:
|
max_instances |
Integer | No |
Maximum number of instances that the application will allow. This is relevant for applications that auto-scale. |
durable_objects |
No |
Set of properties to configure a durable object application in Cloudchamber. |
|
name |
String | Yes |
The name for this application |
priorities |
Object | No |
Defines priorities of application instances that are taken into account in scheduling decisions and used to determine what instances should be evicted in the face of resource scarcity. The feature is experimental and only supported with the "gpu" scheduling policy. |
priorities.default |
Integer | Yes |
Application instance priority. Default value: 50 |
configuration |
Object | Yes |
Properties required to create a cloudchamber deployment specified by the user |
configuration.instance_type |
String | No |
The instance type will be used to configure vCPU, memory, and disk.
Default value: "lite" |
configuration.network |
Object | No | |
configuration.network.egress_from_landing_colo |
Boolean | No |
Egress packets sent by the container through a colo, if any, that has seen packets sent to the container first. Landing colos are tracked for individual 5-tuples. |
configuration.network.ipv6_prefix_length |
Integer | No |
Prefix length of an IPv6 subnet assigned to a container. |
configuration.network.ipv4_prefix_length |
Integer | No |
Prefix length of an IPv4 subnet assigned to a container. |
configuration.network.assign_ipv4 |
String | No |
Valid values:
|
configuration.network.mode |
String | No |
Defines the kind of networking the container will have. If "public", the container will be assigned at least an IPv6, and an IPv4 if "assign_ipv4": true. If "public-by-port" is specified, the IP address assignment logic is the same as with "public". However, at least one port must be specified. Only packets sent to specified ports will be routed to the container. If "private", the container won't have any accessible public IPs, however it will be able to access the internet. Valid values:
|
configuration.network.assign_ipv6 |
String | No |
Valid values:
|
configuration.vcpu |
Number | No |
Specify the vcpu to be used for the deployment. Vcpu must be at least 1. The input value will be rounded to the nearest 0.0001. The default will be the one configured for the account. |
configuration.secrets[] |
Array | No |
A list of objects with secret names and the their access types from the account |
configuration.secrets[].name |
String | Yes |
The name of the secret within the container |
configuration.secrets[].type |
String | Yes |
The secret access type denotes how a secret is made available within a container. Available Options are "env". Valid values:
|
configuration.secrets[].secret |
String | Yes |
Corresponding secret name from the account |
configuration.provisioner |
Object | No |
Configuration for a VM provisioner. |
configuration.provisioner.type |
String | Yes |
The provisioner to use. Valid values:
|
configuration.ports[] |
Array | No | |
configuration.ports[].port |
Integer | No |
Optional port number, it's assigned only if the user specified it. If it's not specified, the datacenter scheduler will decide it. |
configuration.ports[].assign_port[] |
Array | No |
Choose a port number from a given set of port ranges and use it. It is an optional field. If it is set, "port" must not be provided. The same port ranges may be used with multiple ports as long as the port ranges are identical for each port. Otherwise no two port ranges must intersect and no fixed port must belong to any port range. The total port count for all port ranges should be sufficiently large for assigning the requested number of ports. |
configuration.ports[].assign_port[].end |
Integer | Yes |
Last port number. Inclusive. It may be equal to the start one. |
configuration.ports[].assign_port[].start |
Integer | Yes |
First port number. Inclusive. |
configuration.ports[].name |
String | Yes |
A port name. The port array should not have duplicate names. The port name should be between 1 and 15 characters long. Only alphanumeric characters, dashes (-), and underscores (_) are allowed. No consecutive dashes. The value of the port is exposed to the user's application with a set of environment variables, where
|
configuration.environment_variables[] |
Array | No |
Container environment variables |
configuration.environment_variables[].name |
String | Yes |
An environment variable name |
configuration.environment_variables[].value |
String | Yes |
An environment variable value |
configuration.entrypoint[] |
Array | No |
The entry point for the container, specifying the executable to run when the container starts. This can be overridden at run-time. If overridden, the default command from the image is ignored. Both entrypoint and command can be specified at run-time to completely replace the image defaults. |
configuration.durable_object_offset_instances |
Integer | No |
The number of containers that should be prewarmed for this application, resulting in a number of deployments = number of durable object instances + this value. Omit to inherit the account default. When neither this field nor the account default is set, the system default applies. |
configuration.dns |
Object | No |
Represents the /etc/resolv.conf that will appear in the deployment. If the 'dns' property is specified, even if empty object, will override the default resolv.conf of the container. The default resolv.conf of a container is 'servers = ["1.1.1.1", "9.9.9.9", "2606:4700:4700::1111"]', only if an IPv4 is assigned. The default for a non IPv4 deployment is 'servers = ["2606:4700:4700::1111", "2620:fe::fe"]'. |
configuration.dns.servers[] |
Array | No |
List of DNS servers that the deployment will use to resolve domain names. You can only specify a maximum of 3. |
configuration.dns.searches[] |
Array | No |
The container resolver will append these domains to every resolve query. For example, if you have 'google.com', and your deployment queries 'web', it will append 'google.com' to 'web' in the search query before trying 'web'. Limited to 6 domains. |
configuration.labels[] |
Array | No |
Deployment labels |
configuration.labels[].name |
String | Yes |
A label name |
configuration.labels[].value |
String | Yes |
A label value |
configuration.command[] |
Array | No |
The command to be executed when the container starts, passed to the entrypoint. This can be overridden at run-time. If only the command is overridden at run-time, it gets passed to the default entrypoint specified in the image. |
configuration.lifecycle |
Object | No |
Lifecycle configuration for a deployment. |
configuration.lifecycle.max_termination_duration |
String | No |
Duration string. From Go documentation: A string representing the duration in the form "3d1h3m". Leading zero units are omitted. As a special case, durations less than one second format use a smaller unit (milli-, micro-, or nanoseconds) to ensure that the leading digit is non-zero. |
configuration.image |
String | Yes |
Image url |
configuration.memory_mib |
Integer | No |
Specify the memory to be used for the deployment, in MiB. The default will be the one configured for the account. |
configuration.observability |
Object | No |
Settings for deployment observability such as logging. |
configuration.observability.logs |
Object | No |
Observability logging settings. |
configuration.observability.logs.enabled |
Boolean | No |
Default value: false |
configuration.ssh_public_key_ids[] |
Array | No |
A list of SSH public key IDs from the account |
configuration.memory |
String | No |
A memory size that specifies its unit at the end. |
configuration.wrangler_ssh |
Object | No |
Configuration properties for SSH'ing into a container with Wrangler |
configuration.wrangler_ssh.port |
Number | No |
Default value: 22 |
configuration.wrangler_ssh.enabled |
Boolean | No |
Default value: true |
configuration.checks[] |
Array | No |
Health and readiness checks for this deployment. |
configuration.checks[].tls |
Boolean | No |
Connect to the port using TLS Default value: false |
configuration.checks[].port |
String | Yes |
The name of the port defined in the "ports" property of the deployment |
configuration.checks[].name |
String | No |
Optional name for the check. If omitted, a name will be generated automatically. |
configuration.checks[].interval |
String | Yes |
Duration string. From Go documentation: A string representing the duration in the form "3d1h3m". Leading zero units are omitted. As a special case, durations less than one second format use a smaller unit (milli-, micro-, or nanoseconds) to ensure that the leading digit is non-zero. |
configuration.checks[].attempts_before_failure |
Integer | No |
Number of times to attempt the check before considering it to have failed Default value: 1 |
configuration.checks[].timeout |
String | Yes |
Duration string. From Go documentation: A string representing the duration in the form "3d1h3m". Leading zero units are omitted. As a special case, durations less than one second format use a smaller unit (milli-, micro-, or nanoseconds) to ensure that the leading digit is non-zero. |
configuration.checks[].type |
String | Yes |
Valid values:
|
configuration.checks[].grace_period |
String | No |
Duration string. From Go documentation: A string representing the duration in the form "3d1h3m". Leading zero units are omitted. As a special case, durations less than one second format use a smaller unit (milli-, micro-, or nanoseconds) to ensure that the leading digit is non-zero. |
configuration.checks[].kind |
String | Yes |
Valid values:
|
configuration.checks[].http |
Object | No |
Configuration for HTTP checks. |
configuration.checks[].http.method |
String | No |
Available HTTP methods for health and readiness checks. Valid values:
|
configuration.checks[].http.body |
String | No |
If the method is one of POST, PATCH or PUT, this is required. It's the body that will be passed to the HTTP healthcheck request. |
configuration.checks[].http.headers |
Object | No |
HTTP headers to include in the request. |
configuration.checks[].http.path |
String | No |
Path that will be used to perform the healthcheck. Default value: "/" |
configuration.trusted_user_ca_keys[] |
Array | No | |
configuration.trusted_user_ca_keys[].name |
String | No |
Optional human readable name for this key |
configuration.trusted_user_ca_keys[].public_key |
String | Yes |
An SSH public key |
configuration.experimental_flags[] |
Array | No |
Opt-in experimental flags for this application. Only a subset of experimental flags can be set by users; unsupported values are rejected. |
configuration.metadata_service |
Object | No |
Configuration for enabling the container metadata service. |
configuration.metadata_service.enabled |
Boolean | Yes |
Whether the metadata service should be enabled for the deployment. |
configuration.authorized_keys[] |
Array | No | |
configuration.authorized_keys[].name |
String | No |
Optional human readable name for this key |
configuration.authorized_keys[].public_key |
String | Yes |
An SSH public key |
configuration.disk |
Object | No |
The disk configuration for this deployment. By default, all containers have a disk size of 2GB. |
configuration.disk.size |
String | No |
A disk size that specifies its unit at the end. |
configuration.disk.size_mb |
Integer | No |
Size of the disk, in MB. |
affinities |
Object | No |
Defines affinity in application scheduling. (This still an experimental feature, some schedulers might not work with these affinities). |
affinities.colocation |
String | No |
Colocation affinity is designed so schedulers try to place application instances all in the same way. Colocation is best-effort depending on available resources. If there is some leftover set of instances that can't be placed together, the scheduler will try to place them somewhere else. Valid values:
|
affinities.hardware_generation |
String | No |
To the extent possible, prefer nodes with specified characteristics when placing application instances. Valid values:
|
jobs |
Boolean | No |
Application config denoting deployments with Jobs type Default value: false |
observability |
Object | No |
Settings for application observability such as logging. |
observability.target_instance_count |
Integer | No |
Fixed number of instances that should receive the application-level observability overlay.
Mutually exclusive with |
observability.logs |
Object | No |
Observability logging settings. |
observability.logs.enabled |
Boolean | No |
Default value: false |
observability.target_instance_percentage |
Integer | No |
Percentage of instances that should receive the application-level observability overlay.
This rounds up so at least this percentage of instances is targeted.
Mutually exclusive with |
instances |
Integer | Yes |
Number of deployments to create |
How to start integrating
- Add HTTP Task to your workflow definition.
- Search for the API you want to integrate with and click on the name.
- This loads the API reference documentation and prepares the Http request settings.
- Click Test request to test run your request to the API and see the API's response.