Knowledge Base · Email & advanced

FastAPI on a subdomain

Spin up a real Python 3.12 + FastAPI service in its own container on its own subdomain — a live API next to your website in about a minute.

5 min Advanced 9 steps Updated July 2026
Knowledge Base/Email & advanced/Python apps

Create an app

  1. Open Python apps

    Sidebar → Advanced → Python apps, or / then “python”.

  2. Name it

    The name becomes the subdomain: apiapi.yourdomain.com. Letters, numbers, underscores.

  3. Click Create app

    We provision a Python 3.12 container with a starter FastAPI service, route the subdomain to it with SSL, and it appears in the table with a live link.

  4. Open the URL

    The starter app answers immediately — your endpoint skeleton is already serving HTTPS.

Python apps — each runs in its own container on its own subdomain
Python apps — each runs in its own container on its own subdomain

Deploy your own code

  1. Open the file manager

    Your app lives under pyapps/<name>/main.py is the FastAPI entry point.

  2. Edit main.py (or upload your project)

    Add routes the normal FastAPI way. Drag-and-drop extra modules alongside it; add dependencies to the requirements file in the same folder.

  3. Restart the app from the Python apps page

    Restarting reinstalls requirements and reloads the service. Your table row shows the status.

Apps talk to your MariaDB at 127.0.0.1:3306 using any database and user you created on the Databases page — a real API over your site's data, in the same pod.

Remove an app

  1. Click delete on the app's row

    Confirm the prompt.

  2. Everything unwinds

    The container, its subdomain routing and its files are removed. Your websites and databases are untouched.

Which frameworks work?

Anything ASGI — FastAPI is what the starter ships, Starlette and Quart run fine too. WSGI apps (Flask/Django) can run via an ASGI adapter.

How many apps can I run?

It's per-plan — the counter at the top of the page shows used/allowed.

Where are the logs?

Runtime output is captured per app; the table shows status, and a failing app surfaces its error. Deeper debugging: open a ticket and we'll pull the container log.

Still stuck?

A human is one ticket away.

Median first response under 30 minutes during business hours — from an engineer, not a script.