Using the API with curl¶
Interactive API Docs
Your server hosts interactive Swagger documentation at /api with a "Try it out" console, full request/response schemas, and authentication support.
Outdated Documentation
This page predates the last major rewrite and may not be accurate. Check back weekly for updates.
API endpoint: https://manager.os.mieweb.org
Prerequisites:
- Active account, an API key,
curl, and your site ID (from the web interface).
1. List Available Templates¶
curl -X GET 'https://create-a-container.opensource.mieweb.org/api/templates' \
-H "Authorization: Bearer YOUR_API_KEY"
2. Get External Domain IDs¶
curl -X GET 'https://create-a-container.opensource.mieweb.org/api/external-domains' \
-H "Authorization: Bearer YOUR_API_KEY"
3. Create a Container¶
curl -X POST 'https://create-a-container.opensource.mieweb.org/sites/1/containers' \
-H "Authorization: Bearer YOUR_API_KEY" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'hostname=my-app' \
--data-urlencode 'template=pve1,100' \
--data-urlencode 'services[0][type]=tcp' \
--data-urlencode 'services[0][internalPort]=22' \
--data-urlencode 'services[1][type]=http' \
--data-urlencode 'services[1][internalPort]=3000' \
--data-urlencode 'services[1][externalHostname]=my-app' \
--data-urlencode 'services[1][externalDomainId]=1'
Required: hostname (letters/numbers/hyphens), template (nodeName,templateVmid).
Service Types¶
Services use a zero-indexed array (services[0], services[1], etc.):
| Type | Required Fields | Notes |
|---|---|---|
tcp |
internalPort |
External port auto-assigned |
udp |
internalPort |
External port auto-assigned (range 2000–65565) |
http |
internalPort, externalHostname, externalDomainId |
Subdomain + domain |
srv |
internalPort, dnsName |
e.g., _ldap._tcp |
4. Complete Example¶
API_KEY="your_api_key_here"
curl -X POST 'https://create-a-container.opensource.mieweb.org/sites/1/containers' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'hostname=my-web-app' \
--data-urlencode 'template=pve1,100' \
--data-urlencode 'services[0][type]=tcp' \
--data-urlencode 'services[0][internalPort]=22' \
--data-urlencode 'services[1][type]=http' \
--data-urlencode 'services[1][internalPort]=8080' \
--data-urlencode 'services[1][externalHostname]=my-web-app' \
--data-urlencode 'services[1][externalDomainId]=1' \
--data-urlencode 'services[2][type]=tcp' \
--data-urlencode 'services[2][internalPort]=5432'
Returns 302 redirect on success, error message on failure.
5. List Your Containers¶
curl -X GET 'https://create-a-container.opensource.mieweb.org/api/containers' \
-H "Authorization: Bearer YOUR_API_KEY"
6. Access Your Container¶
SSH: ssh -p <assigned-port> <username>@<hostname>.<domain>
HTTP: https://<externalHostname>.<externalDomain>
Proxmox: Navigate to https://os.mieweb.org:8006 — your container is listed with your username in the tags field.

Note
You can start, stop, and reboot through Proxmox. To delete, contact an administrator.