Create a one-click / custom service
Authorization
bearerAuth Go to Keys & Tokens / API tokens and create a new token. Use the token as the bearer token.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
The one-click service type (e.g. "actualbudget", "calibre-web", "gitea-with-mysql" ...)
Name of the service.
length <= 255Description of the service.
Project UUID.
Environment name. You need to provide at least one of environment_name or environment_uuid.
Environment UUID. You need to provide at least one of environment_name or environment_uuid.
Server UUID.
Destination UUID. Required if server has multiple destinations.
Start the service immediately after creation.
falseThe base64 encoded Docker Compose content.
Array of URLs to be applied to containers of a service.
Force domain override even if conflicts are detected.
falseResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://app.coolify.io/api/v1/services" \ -H "Content-Type: application/json" \ -d '{ "project_uuid": "string", "environment_name": "string", "environment_uuid": "string", "server_uuid": "string" }'{ "uuid": "string", "domains": [ "string" ]}{ "message": "Invalid token."}{ "message": "Unauthenticated."}{ "message": "Domain conflicts detected. Use force_domain_override=true to proceed.", "warning": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior.", "conflicts": [ { "domain": "example.com", "resource_name": "My Application", "resource_uuid": "abc123-def456", "resource_type": "application", "message": "Domain example.com is already in use by application 'My Application'" } ]}{ "message": "Validation error.", "errors": { "name": [ "The name field is required." ], "api_url": [ "The api url field is required.", "The api url format is invalid." ] }}