Développeurs

Gérez votre infrastructure avec une seule API

Automatisez serveurs, réseaux, load balancers, bases de données et DNS avec une API REST. Commencez par les exemples ci-dessous, et utilisez des jetons aux droits limités pour donner à chaque script l'accès dont il a besoin.

Jetons d'API

Créez un jeton sous Team → API tokens dans votre tableau de bord, puis confirmez avec votre mot de passe ou votre code d'authentification. Il appartient à une seule organisation et agit avec le rôle que vous y avez.

Authorization: Bearer fst_…

Lecture, ou lecture et écriture

Un jeton en lecture ne peut que consulter. Un jeton en lecture et écriture peut faire des modifications, y compris passer des commandes s'il a les droits de facturation. Limitez chaque jeton à certaines catégories, certains projets ou des services précis, et donnez-lui une date d'expiration. Aucun jeton ne peut gérer les membres de l'équipe ni d'autres jetons.

Limites

300 requêtes par minute et par jeton. Chaque modification apparaît dans le journal d'activité de votre organisation, avec le jeton qui l'a faite.

Démarrage rapide

Vos premiers appels

  1. 1. Créez un jeton

    Tableau de bord → Team → API tokens. Copiez-le tout de suite et gardez-le hors de votre code : export FAASTIC_TOKEN=fst_… L'ID de votre organisation est affiché à côté.

  2. 2. Vérifiez le jeton

    curl https://api.faastic.com/v1/api-token \
      -H "Authorization: Bearer $FAASTIC_TOKEN"
  3. 3. Listez vos services et redémarrez un serveur

    curl https://api.faastic.com/v1/orgs/$ORG_ID/services \
      -H "Authorization: Bearer $FAASTIC_TOKEN"
    curl -X POST https://api.faastic.com/v1/orgs/$ORG_ID/services/$SERVER_ID/power \
      -H "Authorization: Bearer $FAASTIC_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"action":"reboot"}'
Référence

Référence de l'API

Chaque endpoint qu'un jeton peut appeler, généré à partir de l'API en production. Lisible par machine : openapi.json

organizations

Organizations (billing parties)

GET /

Get an organization

GET /v1/orgs/{orgId}
PATCH /

Update organization billing details

PATCH /v1/orgs/{orgId}

Corps de la requête

name string
vatNumber string nullable
countryCode string max 2 chars
billingEmail string nullable
address object
POST /billing/request-invoice-first

Request fiscal invoices BEFORE payment (instead of payment requests) - reviewed by an operator

POST /v1/orgs/{orgId}/billing/request-invoice-first

Corps de la requête

note string max 500 chars

projects

Projects within an organization

GET /projects

List projects in an organization

GET /v1/orgs/{orgId}/projects
POST /projects

Create a project (admin role or higher)

POST /v1/orgs/{orgId}/projects

Corps de la requête

name* string
GET /projects/{projectId}

Get a project

GET /v1/orgs/{orgId}/projects/{projectId}

Paramètres

  • projectId (path, required)
PATCH /projects/{projectId}

Rename a project (admin role or higher)

PATCH /v1/orgs/{orgId}/projects/{projectId}

Paramètres

  • projectId (path, required)

Corps de la requête

name* string
DELETE /projects/{projectId}

Delete a project (admin role or higher)

DELETE /v1/orgs/{orgId}/projects/{projectId}

Paramètres

  • projectId (path, required)

services

Your services: servers (power, console, snapshots, backups, firewall, volumes, ISO/rescue), hosting and add-ons

GET /services

List all services in an organization

GET /v1/orgs/{orgId}/services

Paramètres

  • includeTerminated (query)
GET /projects/{projectId}/services

List services in a project

GET /v1/orgs/{orgId}/projects/{projectId}/services

Paramètres

  • projectId (path, required)
GET /services/{serviceId}

Get a service

GET /v1/orgs/{orgId}/services/{serviceId}

Paramètres

  • serviceId (path, required)
PATCH /services/{serviceId}/protection

Delete protection (blocks cancelling) / rebuild protection (blocks reinstall, rollback, restore)

PATCH /v1/orgs/{orgId}/services/{serviceId}/protection

Paramètres

  • serviceId (path, required)

Corps de la requête

delete boolean
rebuild boolean
PUT /services/{serviceId}/labels

Replace a service's labels (key → value, max 20)

PUT /v1/orgs/{orgId}/services/{serviceId}/labels

Paramètres

  • serviceId (path, required)

Corps de la requête

labels* object
POST /services/{id}/power

Power-control your VM (start / stop / reboot) - async

POST /v1/orgs/{orgId}/services/{id}/power

Paramètres

  • id (path, required)

Corps de la requête

action* string one of "start", "stop", "reboot", "power_cycle"
GET /services/{id}/ipv6

This server's IPv6 subnet + address (if enabled)

GET /v1/orgs/{orgId}/services/{id}/ipv6

Paramètres

  • id (path, required)
PUT /services/{id}/ipv6

Enable IPv6 (assigns a subnet) or change the server's IPv6 address - applied on the next restart

PUT /v1/orgs/{orgId}/services/{id}/ipv6

Paramètres

  • id (path, required)

Corps de la requête

address string max 64 chars
DELETE /services/{id}/ipv6

Disable IPv6 and return the subnet - its traffic stops now; the server's network config is cleaned up on the next restart

DELETE /v1/orgs/{orgId}/services/{id}/ipv6

Paramètres

  • id (path, required)
POST /services/{id}/console

Open a console session for your VM (returns a websocket URL to our broker)

POST /v1/orgs/{orgId}/services/{id}/console

Paramètres

  • id (path, required)

Corps de la requête

type string one of "vnc", "term"
GET /services/{id}/credentials

Reveal the VM's initial login (decrypted from the provisioning record)

GET /v1/orgs/{orgId}/services/{id}/credentials

Paramètres

  • id (path, required)
GET /services/{id}/features

Plan entitlements (snapshots/firewall/resize) + usage - drives which controls to show

GET /v1/orgs/{orgId}/services/{id}/features

Paramètres

  • id (path, required)
GET /services/{id}/vm-status

Live VM status (running/stopped, cpu%, mem, uptime)

GET /v1/orgs/{orgId}/services/{id}/vm-status

Paramètres

  • id (path, required)
GET /services/{id}/metrics

Resource graphs (CPU/RAM/disk/net) for a timeframe

GET /v1/orgs/{orgId}/services/{id}/metrics

Paramètres

  • timeframe (query)
  • id (path, required)
GET /services/{id}/snapshots

List VM snapshots

GET /v1/orgs/{orgId}/services/{id}/snapshots

Paramètres

  • id (path, required)
POST /services/{id}/snapshots

Create a snapshot (within your plan's quota)

POST /v1/orgs/{orgId}/services/{id}/snapshots

Paramètres

  • id (path, required)

Corps de la requête

name* string
description string
POST /services/{id}/snapshots/{name}/rollback

Roll the VM back to a snapshot

POST /v1/orgs/{orgId}/services/{id}/snapshots/{name}/rollback

Paramètres

  • id (path, required)
  • name (path, required)
DELETE /services/{id}/snapshots/{name}

Delete a snapshot

DELETE /v1/orgs/{orgId}/services/{id}/snapshots/{name}

Paramètres

  • id (path, required)
  • name (path, required)
GET /services/{id}/firewall

Firewall rules + options for your VM

GET /v1/orgs/{orgId}/services/{id}/firewall

Paramètres

  • id (path, required)
POST /services/{id}/firewall/rules

Add an inbound firewall rule (e.g. open 80/443)

POST /v1/orgs/{orgId}/services/{id}/firewall/rules

Paramètres

  • id (path, required)

Corps de la requête

action* string one of "ACCEPT", "DROP", "REJECT"
proto string one of "tcp", "udp", "icmp"
dport string max 11 chars
source string max 43 chars
comment string max 64 chars
DELETE /services/{id}/firewall/rules/{pos}

Delete a firewall rule by position

DELETE /v1/orgs/{orgId}/services/{id}/firewall/rules/{pos}

Paramètres

  • id (path, required)
  • pos (path, required)
POST /services/{id}/resize

Resize the VM within your plan's limits (CPU/RAM/grow disk)

POST /v1/orgs/{orgId}/services/{id}/resize

Paramètres

  • id (path, required)

Corps de la requête

vcpu integer 1…
ramMb integer 256…
diskGb integer 1…
GET /services/{id}/network

The VM's assigned IP / gateway / PTR (null if DHCP)

GET /v1/orgs/{orgId}/services/{id}/network

Paramètres

  • id (path, required)
GET /services/{id}/backups

List VM backups

GET /v1/orgs/{orgId}/services/{id}/backups

Paramètres

  • id (path, required)
POST /services/{id}/backups

Create a backup (within your plan's quota)

POST /v1/orgs/{orgId}/services/{id}/backups

Paramètres

  • id (path, required)

Corps de la requête

note string
POST /services/{id}/backups/restore

Restore the VM from a backup (DESTRUCTIVE - overwrites the disk)

POST /v1/orgs/{orgId}/services/{id}/backups/restore

Paramètres

  • id (path, required)

Corps de la requête

volid* string
POST /services/{id}/backups/delete

Delete a backup

POST /v1/orgs/{orgId}/services/{id}/backups/delete

Paramètres

  • id (path, required)

Corps de la requête

volid* string
POST /services/{id}/reinstall

Reinstall the OS - DESTROYS all data, keeps the IP; keeps the SSH key(s) unless new ones are given (async)

POST /v1/orgs/{orgId}/services/{id}/reinstall

Paramètres

  • id (path, required)

Corps de la requête

confirm* boolean
publicKeys string max 40000 chars · OpenSSH public key(s), one per line (e.g. "ssh-ed25519 AAAA… me@laptop")
sshKeyIds string (uuid)[] Saved account SSH keys (GET /account/ssh-keys) to add
POST /services/{id}/rdns

Request reverse DNS (PTR) for the VM's IP - opens a support ticket

POST /v1/orgs/{orgId}/services/{id}/rdns

Paramètres

  • id (path, required)

Corps de la requête

ptr* string
GET /services/{id}/ssh-keys

The server's login user, its SSH keys (fingerprints) and whether SSH password login was switched on at install

GET /v1/orgs/{orgId}/services/{id}/ssh-keys

Paramètres

  • id (path, required)
PUT /services/{id}/ssh-keys

Replace the server's SSH keys (async). They're installed on the server's next restart - restart: true restarts it now. Reinstalls use them too.

PUT /v1/orgs/{orgId}/services/{id}/ssh-keys

Paramètres

  • id (path, required)

Corps de la requête

publicKeys string max 40000 chars · OpenSSH public key(s), one per line (e.g. "ssh-ed25519 AAAA… me@laptop")
sshKeyIds string (uuid)[] Saved account SSH keys (GET /account/ssh-keys) to add
restart boolean Restart the running server now so the keys apply right away
GET /services/{id}/reset-password

How a password reset works on this server: cloud-init (restarts it; its SSH host key changes) or the guest agent (in place)

GET /v1/orgs/{orgId}/services/{id}/reset-password

Paramètres

  • id (path, required)
POST /services/{id}/reset-password

Set a new password for the server's login user. Returned once. With cloud-init the server restarts and its SSH host key changes.

POST /v1/orgs/{orgId}/services/{id}/reset-password

Paramètres

  • id (path, required)
GET /services/{id}/isos

ISO library for this server + what's mounted + whether rescue mode is available

GET /v1/orgs/{orgId}/services/{id}/isos

Paramètres

  • id (path, required)
POST /services/{id}/iso

Mount an ISO from the library (boot: boot from it on the next restart)

POST /v1/orgs/{orgId}/services/{id}/iso

Paramètres

  • id (path, required)

Corps de la requête

volid* string max 255 chars
boot boolean
DELETE /services/{id}/iso

Unmount the ISO (and restore the boot order)

DELETE /v1/orgs/{orgId}/services/{id}/iso

Paramètres

  • id (path, required)
POST /services/{id}/rescue

Boot into rescue mode (enabled: true) or back into the server's own system (false). Restarts the server.

POST /v1/orgs/{orgId}/services/{id}/rescue

Paramètres

  • id (path, required)

Corps de la requête

enabled* boolean
GET /topology

Your infrastructure as a graph: services, load-balancer targets and health, private networks, current traffic

GET /v1/orgs/{orgId}/topology
GET /services/{id}/hosting

Live usage + quotas for a shared-hosting account

GET /v1/orgs/{orgId}/services/{id}/hosting

Paramètres

  • id (path, required)
GET /services/{id}/hosting/dns-check

Live DNS status for this hosting domain (delegation + A records)

GET /v1/orgs/{orgId}/services/{id}/hosting/dns-check

Paramètres

  • id (path, required)
POST /services/{id}/hosting/dns-setup

Use our DNS for this hosting domain (creates the zone, pre-populated)

POST /v1/orgs/{orgId}/services/{id}/hosting/dns-setup

Paramètres

  • id (path, required)
GET /services/{id}/storage

Storage overview (usage/quota/shares/access details)

GET /v1/orgs/{orgId}/services/{id}/storage

Paramètres

  • id (path, required)
GET /services/{id}/storage/snapshots

List your storage snapshots

GET /v1/orgs/{orgId}/services/{id}/storage/snapshots

Paramètres

  • id (path, required)
POST /services/{id}/storage/snapshots

Create a storage snapshot

POST /v1/orgs/{orgId}/services/{id}/storage/snapshots

Paramètres

  • id (path, required)

Corps de la requête

name* string
DELETE /services/{id}/storage/snapshots/{name}

Delete a storage snapshot (by name)

DELETE /v1/orgs/{orgId}/services/{id}/storage/snapshots/{name}

Paramètres

  • id (path, required)
  • name (path, required)
POST /services/{id}/storage/shares/{protocol}/{shareId}

Enable/disable one of your shares (SMB/NFS)

POST /v1/orgs/{orgId}/services/{id}/storage/shares/{protocol}/{shareId}

Paramètres

  • id (path, required)
  • protocol (path, required)
  • shareId (path, required)

Corps de la requête

enabled* boolean
PUT /services/{id}/storage/shares/{protocol}/{shareId}/allowed-ips

Set the IP addresses allowed to connect to one of your shares (SMB/NFS)

PUT /v1/orgs/{orgId}/services/{id}/storage/shares/{protocol}/{shareId}/allowed-ips

Paramètres

  • id (path, required)
  • protocol (path, required)
  • shareId (path, required)

Corps de la requête

ips* string[]
GET /services/{serviceId}/addons

Add-ons available for + attached to a service

GET /v1/orgs/{orgId}/services/{serviceId}/addons

Paramètres

  • serviceId (path, required)
POST /services/{serviceId}/addons

Attach an add-on to a service (bills on the next renewal)

POST /v1/orgs/{orgId}/services/{serviceId}/addons

Paramètres

  • serviceId (path, required)

Corps de la requête

offeringId* string (uuid)
DELETE /services/{serviceId}/addons/{addonId}

Remove an add-on (stops billing next renewal; no refund)

DELETE /v1/orgs/{orgId}/services/{serviceId}/addons/{addonId}

Paramètres

  • serviceId (path, required)
  • addonId (path, required)
POST /services/{serviceId}/addons/{addonId}/move

Move an extra IP (floating IP) to another server of this organization

POST /v1/orgs/{orgId}/services/{serviceId}/addons/{addonId}/move

Paramètres

  • serviceId (path, required)
  • addonId (path, required)

Corps de la requête

targetServiceId* string (uuid)

domains

Domains: register, transfer, renew, nameservers, transfer lock and auth codes

POST /domains/order

Order a domain - register a new one or transfer one in (→ checkout)

POST /v1/orgs/{orgId}/domains/order

Corps de la requête

domain* string
action* string one of "register", "transfer"
years integer 1…10
authCode string
projectId string
contactId string (uuid)
registrant object
couponCode string
paymentMethod string one of "card", "bancontact", "ideal", "bank_transfer"
successUrl string
cancelUrl string
GET /domains

List this org's domains

GET /v1/orgs/{orgId}/domains
GET /domains/{id}

Domain detail (live status + nameservers)

GET /v1/orgs/{orgId}/domains/{id}

Paramètres

  • id (path, required)
GET /domains/{id}/connect

What this domain can be connected to (hosting accounts, servers) and where it points now

GET /v1/orgs/{orgId}/domains/{id}/connect

Paramètres

  • id (path, required)
POST /domains/{id}/connect

Connect the domain to a service: plan the DNS changes (apply=false) or make them (apply=true). Only the records that connection needs change - e-mail settings stay unless an e-mail service is connected.

POST /v1/orgs/{orgId}/domains/{id}/connect

Paramètres

  • id (path, required)

Corps de la requête

target* string one of "hosting", "server", "website", "email"
serviceId string (uuid)
ipv4 string max 45 chars
cname string max 253 chars
verification object
mx object[]
spf string max 1024 chars
apply boolean
POST /domains/{id}/setup-dns

Point this domain's nameservers at us and create its PowerDNS zone

POST /v1/orgs/{orgId}/domains/{id}/setup-dns

Paramètres

  • id (path, required)
PUT /domains/{id}/nameservers

Set the domain's nameservers

PUT /v1/orgs/{orgId}/domains/{id}/nameservers

Paramètres

  • id (path, required)

Corps de la requête

nameservers* string[]
GET /domains/{id}/authcode

Get the EPP/auth code (to transfer the domain away)

GET /v1/orgs/{orgId}/domains/{id}/authcode

Paramètres

  • id (path, required)
PUT /domains/{id}/autorenew

Toggle automatic renewal (auto-charge the saved card on renewal)

PUT /v1/orgs/{orgId}/domains/{id}/autorenew

Paramètres

  • id (path, required)

Corps de la requête

on* boolean
PUT /domains/{id}/lock

Lock or unlock the domain (registrar transfer lock)

PUT /v1/orgs/{orgId}/domains/{id}/lock

Paramètres

  • id (path, required)

Corps de la requête

locked* boolean
POST /domains/{id}/renew

Renew the domain now (extends the registration by its term → checkout)

POST /v1/orgs/{orgId}/domains/{id}/renew

Paramètres

  • id (path, required)

Corps de la requête

successUrl string
cancelUrl string
paymentMethod string one of "card", "bancontact", "ideal", "bank_transfer"
GET /domain-contacts

List saved registry contacts

GET /v1/orgs/{orgId}/domain-contacts
POST /domain-contacts

Save a registry contact

POST /v1/orgs/{orgId}/domain-contacts

Corps de la requête

label string
firstName* string
lastName* string
email* string (email)
phone* string
companyName string
street* string
number string
zipcode* string
city* string
country* string max 2 chars
DELETE /domain-contacts/{id}

Delete a saved registry contact

DELETE /v1/orgs/{orgId}/domain-contacts/{id}

Paramètres

  • id (path, required)
GET /v1/domains/check

Public domain availability + retail price (no auth)

GET /v1/domains/check

Paramètres

  • name (query, required)
GET /v1/domains/tlds

Public TLD price book - what we sell and for how much (no auth)

GET /v1/domains/tlds

dns

DNS zones and records on our nameservers, including DNSSEC

GET /dns/zones

List this org's DNS zones

GET /v1/orgs/{orgId}/dns/zones
POST /dns/zones

Create a DNS zone under one of your projects

POST /v1/orgs/{orgId}/dns/zones

Corps de la requête

name* string
projectId string
dnssec boolean
pointNameservers boolean
GET /dns/zones/{id}/dnssec

DNSSEC status of a zone (signing + DS at the parent)

GET /v1/orgs/{orgId}/dns/zones/{id}/dnssec

Paramètres

  • id (path, required)
POST /dns/zones/{id}/dnssec

Switch DNSSEC on or off. On: sign, then publish the key once the domain points at us. Off: withdraw the DS, unsign after it's gone (≥48h).

POST /v1/orgs/{orgId}/dns/zones/{id}/dnssec

Paramètres

  • id (path, required)

Corps de la requête

enabled* boolean
GET /dns/zones/{id}

Zone detail + records

GET /v1/orgs/{orgId}/dns/zones/{id}

Paramètres

  • id (path, required)
DELETE /dns/zones/{id}

Delete a zone you own

DELETE /v1/orgs/{orgId}/dns/zones/{id}

Paramètres

  • id (path, required)
POST /dns/zones/{id}/records

Add a record (multiple values per name+type allowed, except CNAME)

POST /v1/orgs/{orgId}/dns/zones/{id}/records

Paramètres

  • id (path, required)

Corps de la requête

name* string
type* string
content* string
ttl integer 60…
priority integer
PATCH /dns/zones/{id}/records/{recordId}

Edit a record value

PATCH /v1/orgs/{orgId}/dns/zones/{id}/records/{recordId}

Paramètres

  • id (path, required)
  • recordId (path, required)

Corps de la requête

content string
ttl integer 60…
priority integer
DELETE /dns/zones/{id}/records/{recordId}

Delete a record

DELETE /v1/orgs/{orgId}/dns/zones/{id}/records/{recordId}

Paramètres

  • id (path, required)
  • recordId (path, required)

firewalls

Firewall templates: one rule set applied to many servers

GET /firewalls

Firewall templates of this organization, with the servers they're applied to

GET /v1/orgs/{orgId}/firewalls
POST /firewalls

Create a firewall template

POST /v1/orgs/{orgId}/firewalls

Corps de la requête

name* string max 60 chars
rules object[]
PUT /firewalls/{fid}

Edit a template - rule changes reach every server it's applied to

PUT /v1/orgs/{orgId}/firewalls/{fid}

Paramètres

  • fid (path, required)

Corps de la requête

name string max 60 chars
rules object[]
DELETE /firewalls/{fid}

Delete a template (its rules are removed from every server first)

DELETE /v1/orgs/{orgId}/firewalls/{fid}

Paramètres

  • fid (path, required)
POST /firewalls/{fid}/apply

Apply a template to servers

POST /v1/orgs/{orgId}/firewalls/{fid}/apply

Paramètres

  • fid (path, required)

Corps de la requête

serviceIds* string[]
POST /firewalls/{fid}/remove

Take a template off servers (its rules are removed from them)

POST /v1/orgs/{orgId}/firewalls/{fid}/remove

Paramètres

  • fid (path, required)

Corps de la requête

serviceIds* string[]

networks

Private networks between your servers

GET /networks

Private networks of this organization and their servers

GET /v1/orgs/{orgId}/networks
POST /networks

Create a private network (RFC 1918 range, /16-/28)

POST /v1/orgs/{orgId}/networks

Corps de la requête

name* string max 60 chars
cidr* string max 18 chars
DELETE /networks/{nid}

Delete a private network (detach its servers first)

DELETE /v1/orgs/{orgId}/networks/{nid}

Paramètres

  • nid (path, required)
POST /networks/{nid}/attach

Attach a server: adds a NIC on the network and assigns the next free address (cloud-init, next boot)

POST /v1/orgs/{orgId}/networks/{nid}/attach

Paramètres

  • nid (path, required)

Corps de la requête

serviceId* string (uuid)
POST /networks/{nid}/detach

Detach a server (removes its NIC on the network)

POST /v1/orgs/{orgId}/networks/{nid}/detach

Paramètres

  • nid (path, required)

Corps de la requête

serviceId* string (uuid)

cart

Ordering: check out several products in one payment

POST /cart/checkout

Check out a cart of products (services + domains) as ONE bundled invoice + checkout

POST /v1/orgs/{orgId}/cart/checkout

Corps de la requête

projectId string (uuid)
items* object[]
couponCode string
autoPay boolean
paymentMethod string one of "card", "bancontact", "ideal", "bank_transfer"
successUrl string
cancelUrl string

hosting

Web hosting orders

GET /services/{id}/hosting/overview

Account usage vs plan limits, links

GET /v1/orgs/{orgId}/services/{id}/hosting/overview

Paramètres

  • id (path, required)
GET /services/{id}/hosting/stats/history

Monthly disk + bandwidth history

GET /v1/orgs/{orgId}/services/{id}/hosting/stats/history

Paramètres

  • id (path, required)
GET /services/{id}/hosting/stats/sites

Disk + bandwidth per website

GET /v1/orgs/{orgId}/services/{id}/hosting/stats/sites

Paramètres

  • id (path, required)
GET /services/{id}/hosting/stats/traffic/{domain}

Traffic report from the recent access log

GET /v1/orgs/{orgId}/services/{id}/hosting/stats/traffic/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)
GET /services/{id}/hosting/activity

Hosting activity log

GET /v1/orgs/{orgId}/services/{id}/hosting/activity

Paramètres

  • id (path, required)
GET /services/{id}/hosting/notices

Messages from the hosting server (backup created/restored, …)

GET /v1/orgs/{orgId}/services/{id}/hosting/notices

Paramètres

  • id (path, required)
POST /services/{id}/hosting/notices/{notice}/read

Mark a server message as read

POST /v1/orgs/{orgId}/services/{id}/hosting/notices/{notice}/read

Paramètres

  • id (path, required)
  • notice (path, required)
DELETE /services/{id}/hosting/notices/{notice}

Dismiss a server message

DELETE /v1/orgs/{orgId}/services/{id}/hosting/notices/{notice}

Paramètres

  • id (path, required)
  • notice (path, required)
GET /services/{id}/hosting/logins

Panel/API sign-in history

GET /v1/orgs/{orgId}/services/{id}/hosting/logins

Paramètres

  • id (path, required)
GET /services/{id}/hosting/ssh-keys

SSH/SFTP keys

GET /v1/orgs/{orgId}/services/{id}/hosting/ssh-keys

Paramètres

  • id (path, required)
POST /services/{id}/hosting/ssh-keys

Add an SSH key

POST /v1/orgs/{orgId}/services/{id}/hosting/ssh-keys

Paramètres

  • id (path, required)

Corps de la requête

key* string OpenSSH public key, e.g. "ssh-ed25519 AAAA… me@laptop"
DELETE /services/{id}/hosting/ssh-keys/{keyId}

Remove an SSH key

DELETE /v1/orgs/{orgId}/services/{id}/hosting/ssh-keys/{keyId}

Paramètres

  • id (path, required)
  • keyId (path, required)
PUT /services/{id}/hosting/contact

Where the server's own messages (cron output, notices) are e-mailed

PUT /v1/orgs/{orgId}/services/{id}/hosting/contact

Paramètres

  • id (path, required)

Corps de la requête

email* string E-mail address for the server's messages (cron output, notices)
POST /services/{id}/hosting/password

Change the hosting account password

POST /v1/orgs/{orgId}/services/{id}/hosting/password

Paramètres

  • id (path, required)

Corps de la requête

password* string New hosting account password (min. 10 characters, letters and digits)
POST /services/{id}/hosting/panel-login

Allow or block direct sign-in to the hosting panel

POST /v1/orgs/{orgId}/services/{id}/hosting/panel-login

Paramètres

  • id (path, required)

Corps de la requête

enabled* boolean Allow signing in to the classic hosting panel directly
GET /services/{id}/hosting/web

Websites

GET /v1/orgs/{orgId}/services/{id}/hosting/web

Paramètres

  • id (path, required)
POST /services/{id}/hosting/web

Add a website

POST /v1/orgs/{orgId}/services/{id}/hosting/web

Paramètres

  • id (path, required)

Corps de la requête

domain* string Domain or subdomain to serve, e.g. "example.com" or "blog.example.com"
aliases string[] Extra host names served by the same site (www.<domain> is added automatically)
php string PHP version, e.g. "8.3" (see GET …/hosting/php-versions); default = the server's default
GET /services/{id}/hosting/web-php

PHP versions available on this server

GET /v1/orgs/{orgId}/services/{id}/hosting/web-php

Paramètres

  • id (path, required)
GET /services/{id}/hosting/web-templates

Server templates customers may pick (web, proxy), if the server's policy allows it

GET /v1/orgs/{orgId}/services/{id}/hosting/web-templates

Paramètres

  • id (path, required)
GET /services/{id}/hosting/web/{domain}

One website

GET /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)
PATCH /services/{id}/hosting/web/{domain}

Change website settings

PATCH /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

php string PHP version, e.g. "8.3"
webTemplate string Web server template (see GET …/hosting/web-templates; only when the server lets customers pick)
proxyTemplate string Proxy (nginx) template, e.g. "default", "caching", "hosting" (see GET …/hosting/web-templates)
redirect object nullable · Redirect every request (null removes it)
docroot object nullable · Serve another site's folder (null restores the default)
directoryListing boolean Show folder contents when there's no index file
cache object Page cache
stats object Visitor statistics (AWStats)
forceSsl boolean Redirect http:// to https://
hsts boolean Send Strict-Transport-Security (browsers remember to use https)
suspended boolean Take the site offline (true) or back online (false)
DELETE /services/{id}/hosting/web/{domain}

Delete a website (files, logs, SSL)

DELETE /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)
POST /services/{id}/hosting/web/{domain}/aliases

Add an alias

POST /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/aliases

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

alias* string Extra host name for this site
DELETE /services/{id}/hosting/web/{domain}/aliases/{alias}

Remove an alias

DELETE /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/aliases/{alias}

Paramètres

  • id (path, required)
  • domain (path, required)
  • alias (path, required)
GET /services/{id}/hosting/web/{domain}/ssl

Certificate details

GET /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ssl

Paramètres

  • id (path, required)
  • domain (path, required)
DELETE /services/{id}/hosting/web/{domain}/ssl

Remove SSL

DELETE /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ssl

Paramètres

  • id (path, required)
  • domain (path, required)
POST /services/{id}/hosting/web/{domain}/ssl/letsencrypt

Issue a Let's Encrypt certificate

POST /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ssl/letsencrypt

Paramètres

  • id (path, required)
  • domain (path, required)
POST /services/{id}/hosting/web/{domain}/ssl/certificate

Install your own certificate (PEM) - replaces Let's Encrypt for this website

POST /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ssl/certificate

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

certificate* string max 65536 chars · The certificate in PEM. A full chain is fine: the one matching the key is used, the rest becomes the chain.
privateKey* string max 65536 chars · Its private key in PEM, without a passphrase. Installed on the hosting server only; Faastic doesn't keep it.
chain string max 65536 chars · Intermediate certificate(s) in PEM (the CA bundle). Optional; any order.
POST /services/{id}/hosting/web/{domain}/cache/purge

Purge the page cache

POST /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/cache/purge

Paramètres

  • id (path, required)
  • domain (path, required)
POST /services/{id}/hosting/web/{domain}/http-auth

Add/update a password-protection user

POST /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/http-auth

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

user* string User name
password* string Password
DELETE /services/{id}/hosting/web/{domain}/http-auth/{user}

Remove a password-protection user

DELETE /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/http-auth/{user}

Paramètres

  • id (path, required)
  • domain (path, required)
  • user (path, required)
POST /services/{id}/hosting/web/{domain}/ftp

Add an FTP account

POST /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ftp

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

user* string FTP user name (the account prefix is added)
password* string Password
path string Folder inside the site the user is confined to (optional)
PATCH /services/{id}/hosting/web/{domain}/ftp/{ftpUser}

Change an FTP account

PATCH /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ftp/{ftpUser}

Paramètres

  • id (path, required)
  • domain (path, required)
  • ftpUser (path, required)

Corps de la requête

password string New password
path string New folder inside the site
DELETE /services/{id}/hosting/web/{domain}/ftp/{ftpUser}

Remove an FTP account

DELETE /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/ftp/{ftpUser}

Paramètres

  • id (path, required)
  • domain (path, required)
  • ftpUser (path, required)
GET /services/{id}/hosting/web/{domain}/logs/{kind}

Access or error log (recent lines)

GET /v1/orgs/{orgId}/services/{id}/hosting/web/{domain}/logs/{kind}

Paramètres

  • lines (query)
  • id (path, required)
  • domain (path, required)
  • kind (path, required)
GET /services/{id}/hosting/apps

Installable apps (Hestia's installers, filtered to this server)

GET /v1/orgs/{orgId}/services/{id}/hosting/apps

Paramètres

  • id (path, required)
GET /services/{id}/hosting/apps/jobs

Recent app installs and their status

GET /v1/orgs/{orgId}/services/{id}/hosting/apps/jobs

Paramètres

  • id (path, required)
POST /services/{id}/hosting/apps/{app}/install

Install an app on one of this account's websites (async job)

POST /v1/orgs/{orgId}/services/{id}/hosting/apps/{app}/install

Paramètres

  • id (path, required)
  • app (path, required)

Corps de la requête

domain* string Website to install on
php string PHP version to switch the site to first (optional)
options object The app's fields (see GET …/hosting/apps: e.g. full_name, email, password)
GET /services/{id}/hosting/mail

Mail domains

GET /v1/orgs/{orgId}/services/{id}/hosting/mail

Paramètres

  • id (path, required)
POST /services/{id}/hosting/mail

Add a mail domain

POST /v1/orgs/{orgId}/services/{id}/hosting/mail

Paramètres

  • id (path, required)

Corps de la requête

domain* string Mail domain, e.g. "example.com"
antispam boolean Spam filter
antivirus boolean Virus scanning
dkim boolean DKIM signing
GET /services/{id}/hosting/mail/{domain}

One mail domain

GET /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)
PATCH /services/{id}/hosting/mail/{domain}

Change mail domain settings

PATCH /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

antispam boolean Spam filter
antivirus boolean Virus scanning
dkim boolean DKIM signing
rejectSpam boolean Refuse obvious spam at the door
catchall string nullable · Deliver mail for unknown addresses here (empty string = reject)
webmail string nullable · Webmail client: "roundcube" or "snappymail" (null or empty switches webmail off)
rateLimit integer Max. messages per hour for the domain (1-10000)
suspended boolean Pause the mail domain
DELETE /services/{id}/hosting/mail/{domain}

Delete a mail domain and all its mailboxes

DELETE /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}

Paramètres

  • id (path, required)
  • domain (path, required)
GET /services/{id}/hosting/mail/{domain}/ssl

Certificate details for mail.<domain>

GET /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/ssl

Paramètres

  • id (path, required)
  • domain (path, required)
DELETE /services/{id}/hosting/mail/{domain}/ssl

Remove the mail domain's certificate (mail clients fall back to the server's host name)

DELETE /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/ssl

Paramètres

  • id (path, required)
  • domain (path, required)
POST /services/{id}/hosting/mail/{domain}/ssl/certificate

Install your own certificate for mail.<domain> (PEM) - replaces Let's Encrypt

POST /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/ssl/certificate

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

certificate* string max 65536 chars · The certificate in PEM. A full chain is fine: the one matching the key is used, the rest becomes the chain.
privateKey* string max 65536 chars · Its private key in PEM, without a passphrase. Installed on the hosting server only; Faastic doesn't keep it.
chain string max 65536 chars · Intermediate certificate(s) in PEM (the CA bundle). Optional; any order.
PUT /services/{id}/hosting/mail/{domain}/relay

Set (or clear with null) an SMTP relay

PUT /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/relay

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

host string Relay host
port integer 1…65535 · Port
username string User name
password string Password
GET /services/{id}/hosting/mail/{domain}/dns

DNS records this mail domain needs

GET /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/dns

Paramètres

  • id (path, required)
  • domain (path, required)
GET /services/{id}/hosting/mail/{domain}/accounts

Mailboxes

GET /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts

Paramètres

  • id (path, required)
  • domain (path, required)
POST /services/{id}/hosting/mail/{domain}/accounts

Create a mailbox

POST /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts

Paramètres

  • id (path, required)
  • domain (path, required)

Corps de la requête

account* string Local part, e.g. "info"
password* string Mailbox password
quotaMb integer nullable · Quota in MB (null = unlimited)
GET /services/{id}/hosting/mail/{domain}/accounts/{account}

One mailbox (+ autoreply text)

GET /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)
PATCH /services/{id}/hosting/mail/{domain}/accounts/{account}

Change a mailbox

PATCH /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)

Corps de la requête

password string New password
quotaMb integer nullable · Quota in MB (null = unlimited)
rateLimit integer Max. messages per hour
suspended boolean Pause the mailbox
forwardOnly boolean Forward without keeping a copy
DELETE /services/{id}/hosting/mail/{domain}/accounts/{account}

Delete a mailbox and its mail

DELETE /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)
POST /services/{id}/hosting/mail/{domain}/accounts/{account}/aliases

Add a mailbox alias

POST /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}/aliases

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)

Corps de la requête

alias* string Alias local part, e.g. "sales"
DELETE /services/{id}/hosting/mail/{domain}/accounts/{account}/aliases/{alias}

Remove a mailbox alias

DELETE /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}/aliases/{alias}

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)
  • alias (path, required)
POST /services/{id}/hosting/mail/{domain}/accounts/{account}/forwards

Add a forward

POST /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}/forwards

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)

Corps de la requête

to* string Address to forward to
DELETE /services/{id}/hosting/mail/{domain}/accounts/{account}/forwards/{to}

Remove a forward

DELETE /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}/forwards/{to}

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)
  • to (path, required)
PUT /services/{id}/hosting/mail/{domain}/accounts/{account}/autoreply

Set (or clear with null) the autoreply

PUT /v1/orgs/{orgId}/services/{id}/hosting/mail/{domain}/accounts/{account}/autoreply

Paramètres

  • id (path, required)
  • domain (path, required)
  • account (path, required)

Corps de la requête

message string nullable · Autoreply text; null switches it off
GET /services/{id}/hosting/databases

Databases

GET /v1/orgs/{orgId}/services/{id}/hosting/databases

Paramètres

  • id (path, required)
POST /services/{id}/hosting/databases

Create a database

POST /v1/orgs/{orgId}/services/{id}/hosting/databases

Paramètres

  • id (path, required)

Corps de la requête

name* string Database name (the account prefix is added)
user string Database user (default = the name)
password* string Database password
type string "mysql" or "pgsql" (see GET …/hosting/databases → types)
PATCH /services/{id}/hosting/databases/{db}

Change a database (password, user, suspend)

PATCH /v1/orgs/{orgId}/services/{id}/hosting/databases/{db}

Paramètres

  • id (path, required)
  • db (path, required)

Corps de la requête

password string New password
user string New user name
suspended boolean Pause the database
DELETE /services/{id}/hosting/databases/{db}

Delete a database

DELETE /v1/orgs/{orgId}/services/{id}/hosting/databases/{db}

Paramètres

  • id (path, required)
  • db (path, required)
POST /services/{id}/hosting/databases/{db}/login

Temporary phpMyAdmin login (15 min)

POST /v1/orgs/{orgId}/services/{id}/hosting/databases/{db}/login

Paramètres

  • id (path, required)
  • db (path, required)
GET /services/{id}/hosting/databases/{db}/dump

Download a SQL dump

GET /v1/orgs/{orgId}/services/{id}/hosting/databases/{db}/dump

Paramètres

  • id (path, required)
  • db (path, required)
GET /services/{id}/hosting/cron

Cron jobs

GET /v1/orgs/{orgId}/services/{id}/hosting/cron

Paramètres

  • id (path, required)
POST /services/{id}/hosting/cron

Add a cron job

POST /v1/orgs/{orgId}/services/{id}/hosting/cron

Paramètres

  • id (path, required)

Corps de la requête

min* string Minute (0-59, *, */5, 1,30 …)
hour* string Hour (0-23 …)
day* string Day of month (1-31 …)
month* string Month (1-12 …)
wday* string Day of week (0-7, 0 and 7 = Sunday …)
command* string Command, run as the hosting user
GET /services/{id}/hosting/cron-reports

Whether cron output is e-mailed, and to which address

GET /v1/orgs/{orgId}/services/{id}/hosting/cron-reports

Paramètres

  • id (path, required)
PUT /services/{id}/hosting/cron-reports

E-mail cron output on/off

PUT /v1/orgs/{orgId}/services/{id}/hosting/cron-reports

Paramètres

  • id (path, required)

Corps de la requête

enabled* boolean E-mail each job's output to the account contact
PATCH /services/{id}/hosting/cron/{job}

Change / pause a cron job

PATCH /v1/orgs/{orgId}/services/{id}/hosting/cron/{job}

Paramètres

  • id (path, required)
  • job (path, required)

Corps de la requête

min string Minute
hour string Hour
day string Day of month
month string Month
wday string Day of week
command string Command
suspended boolean Pause (true) or resume (false)
DELETE /services/{id}/hosting/cron/{job}

Delete a cron job

DELETE /v1/orgs/{orgId}/services/{id}/hosting/cron/{job}

Paramètres

  • id (path, required)
  • job (path, required)
GET /services/{id}/hosting/backups

Backups

GET /v1/orgs/{orgId}/services/{id}/hosting/backups

Paramètres

  • id (path, required)
POST /services/{id}/hosting/backups

Create a backup now (queued)

POST /v1/orgs/{orgId}/services/{id}/hosting/backups

Paramètres

  • id (path, required)
POST /services/{id}/hosting/backups/{file}/restore

Restore from a backup (queued)

POST /v1/orgs/{orgId}/services/{id}/hosting/backups/{file}/restore

Paramètres

  • id (path, required)
  • file (path, required)

Corps de la requête

web object Websites to restore: true or "*" for all, or a list of names from this backup; omit to skip
mail object Mail domains to restore: true or "*" for all, or a list of names from this backup; omit to skip
databases object Databases to restore: true or "*" for all, or a list of names from this backup; omit to skip
cron boolean Restore the cron jobs
userDirs object Home folders to restore: true or "*" for all, or a list of names from this backup; omit to skip
GET /services/{id}/hosting/backups/exclusions

What backups leave out

GET /v1/orgs/{orgId}/services/{id}/hosting/backups/exclusions

Paramètres

  • id (path, required)
PUT /services/{id}/hosting/backups/exclusions

Replace what backups leave out (a section left out = nothing excluded there)

PUT /v1/orgs/{orgId}/services/{id}/hosting/backups/exclusions

Paramètres

  • id (path, required)

Corps de la requête

web object "*" = leave out every website; or a list of { domain, folders? }: no folders = the whole site, domain "*" = those folders in every site
mail object "*" = leave out all mail; or a list of { domain, mailboxes? }: no mailboxes = the whole mail domain
databases object "*" = leave out every database; or a list of database names
cron boolean Leave out cron jobs
homeFolders object "*" = leave out every folder in the home directory; or a list, e.g. ["tmp", ".cache"]
GET /services/{id}/hosting/backups/{file}/download

Download a backup (tar archive, streamed)

GET /v1/orgs/{orgId}/services/{id}/hosting/backups/{file}/download

Paramètres

  • id (path, required)
  • file (path, required)
POST /services/{id}/hosting/backups/{file}/download

Prepare a backup for download (then GET the same path)

POST /v1/orgs/{orgId}/services/{id}/hosting/backups/{file}/download

Paramètres

  • id (path, required)
  • file (path, required)
DELETE /services/{id}/hosting/backups/{file}

Delete a backup

DELETE /v1/orgs/{orgId}/services/{id}/hosting/backups/{file}

Paramètres

  • id (path, required)
  • file (path, required)
GET /services/{id}/hosting/files

List a folder

GET /v1/orgs/{orgId}/services/{id}/hosting/files

Paramètres

  • path (query)
  • id (path, required)
GET /services/{id}/hosting/files/content

Read a text file (editor)

GET /v1/orgs/{orgId}/services/{id}/hosting/files/content

Paramètres

  • path (query, required)
  • id (path, required)
PUT /services/{id}/hosting/files/content

Save a text file (editor)

PUT /v1/orgs/{orgId}/services/{id}/hosting/files/content

Paramètres

  • id (path, required)

Corps de la requête

path* string Absolute path inside the account's home
content* string Full new file content (text, max. 2 MB)
GET /services/{id}/hosting/files/download

Download a file

GET /v1/orgs/{orgId}/services/{id}/hosting/files/download

Paramètres

  • path (query, required)
  • id (path, required)
POST /services/{id}/hosting/files/upload

Upload a file (multipart; field 'file', query 'path' = target folder)

POST /v1/orgs/{orgId}/services/{id}/hosting/files/upload

Paramètres

  • path (query, required)
  • id (path, required)
POST /services/{id}/hosting/files/folder

Create a folder

POST /v1/orgs/{orgId}/services/{id}/hosting/files/folder

Paramètres

  • id (path, required)

Corps de la requête

parent* string Folder to create it in (absolute path inside the home)
name* string Name
POST /services/{id}/hosting/files/file

Create an empty file

POST /v1/orgs/{orgId}/services/{id}/hosting/files/file

Paramètres

  • id (path, required)

Corps de la requête

parent* string Folder to create it in (absolute path inside the home)
name* string Name
POST /services/{id}/hosting/files/move

Move / rename (or copy with copy:true)

POST /v1/orgs/{orgId}/services/{id}/hosting/files/move

Paramètres

  • id (path, required)

Corps de la requête

from* string Source path
to* string Destination path
copy boolean Copy instead of move
POST /services/{id}/hosting/files/chmod

Change permissions

POST /v1/orgs/{orgId}/services/{id}/hosting/files/chmod

Paramètres

  • id (path, required)

Corps de la requête

path* string Path
mode* object Octal permissions, e.g. "644" or "755"
POST /services/{id}/hosting/files/delete

Delete files/folders

POST /v1/orgs/{orgId}/services/{id}/hosting/files/delete

Paramètres

  • id (path, required)

Corps de la requête

paths* string[] Paths inside the home
POST /services/{id}/hosting/files/archive

Compress into .tar.gz

POST /v1/orgs/{orgId}/services/{id}/hosting/files/archive

Paramètres

  • id (path, required)

Corps de la requête

paths* string[] Paths to put in the archive
name string Archive file name (.tar.gz added if missing)
POST /services/{id}/hosting/files/extract

Extract an archive

POST /v1/orgs/{orgId}/services/{id}/hosting/files/extract

Paramètres

  • id (path, required)

Corps de la requête

path* string Archive to extract (.zip, .tar.gz, .tgz, .tar)
destination* string Folder to extract into
POST /hosting/order

Order shared hosting - with an existing domain, or registering / transferring one in the same checkout

POST /v1/orgs/{orgId}/hosting/order

Corps de la requête

productId* string (uuid)
projectId string (uuid)
period* string one of "monthly", "quarterly", "semiannual", "annual"
domainMode* string one of "existing", "register", "transfer"
domain* string
domainYears integer 1…10
authCode string
registrant object
contactId string (uuid)
label string
couponCode string
autoPay boolean
paymentMethod string one of "card", "bancontact", "ideal", "bank_transfer"
successUrl string
cancelUrl string

activity

Who did what, when - the organization's activity log

GET /activity

Activity log of this organization (owner/admin)

GET /v1/orgs/{orgId}/activity

Paramètres

  • before (query)
  • limit (query)

catalog

Public storefront catalog

GET /v1/catalog

Active categories + products (with prices + availability) for this brand

GET /v1/catalog

Paramètres

  • locale (query)
GET /v1/catalog/ai-models

AI API models on sale with prices (micro-euro; excl. VAT)

GET /v1/catalog/ai-models

billing

Customer billing: invoices (view/pay) + subscriptions (view/cancel)

GET /billing/overview

Billing overview: balance, run-rate, 12-month spend, upcoming renewals

GET /v1/orgs/{orgId}/billing/overview
GET /invoices

List this organization's invoices

GET /v1/orgs/{orgId}/invoices

Paramètres

  • status (query)
  • limit (query)
  • offset (query)
GET /invoices/{id}

Get one of this org's invoices + lines

GET /v1/orgs/{orgId}/invoices/{id}

Paramètres

  • id (path, required)
GET /invoices/{id}/pdf

Download the invoice PDF (rendered by the e-invoicing service)

GET /v1/orgs/{orgId}/invoices/{id}/pdf

Paramètres

  • id (path, required)
POST /invoices/{id}/pay

Start payment for an invoice (Stripe Checkout)

POST /v1/orgs/{orgId}/invoices/{id}/pay

Paramètres

  • id (path, required)

Corps de la requête

paymentMethod string one of "card", "bancontact", "ideal", "bank_transfer"
successUrl string
cancelUrl string
POST /invoices/merge-proformas

Merge all open payment requests into one - one payment, one transaction fee

POST /v1/orgs/{orgId}/invoices/merge-proformas
GET /subscriptions

List this org's subscriptions

GET /v1/orgs/{orgId}/subscriptions
POST /subscriptions/{id}/cancel

Request cancellation of a subscription (takes effect at the end of the paid period)

POST /v1/orgs/{orgId}/subscriptions/{id}/cancel

Paramètres

  • id (path, required)

Corps de la requête

reason string
GET /subscriptions/{id}/plan-options

Plans this subscription can move to, with proration + feasibility

GET /v1/orgs/{orgId}/subscriptions/{id}/plan-options

Paramètres

  • id (path, required)
POST /subscriptions/{id}/change-plan

Move a subscription to another plan. Upgrades are prorated (→ a checkout for the delta); downgrades apply at the next renewal.

POST /v1/orgs/{orgId}/subscriptions/{id}/change-plan

Paramètres

  • id (path, required)

Corps de la requête

productId* string (uuid)
period string one of "monthly", "quarterly", "semiannual", "annual"
prorate boolean
successUrl string
cancelUrl string
DELETE /subscriptions/{id}/change-plan

Cancel a scheduled/unpaid plan change

DELETE /v1/orgs/{orgId}/subscriptions/{id}/change-plan

Paramètres

  • id (path, required)
GET /payment-method

The org's saved card for automatic payments (if any)

GET /v1/orgs/{orgId}/payment-method
DELETE /payment-method

Remove the saved card and revert automatic subscriptions to manual

DELETE /v1/orgs/{orgId}/payment-method
POST /payment-method/setup

Begin saving a card for automatic renewal payments (Stripe setup checkout)

POST /v1/orgs/{orgId}/payment-method/setup

Corps de la requête

successUrl string
cancelUrl string
PATCH /subscriptions/{id}/billing-mode

Set a subscription to pay manually each renewal or automatically (saved card)

PATCH /v1/orgs/{orgId}/subscriptions/{id}/billing-mode

Paramètres

  • id (path, required)

Corps de la requête

mode* string one of "manual", "auto"
POST /coupons/validate

Preview a promo code against a set of lines (read-only - no redemption). The final discount is recomputed at checkout.

POST /v1/orgs/{orgId}/coupons/validate

Corps de la requête

code* string
currency string
lines* object[]
POST /orders

Place an order: creates the service (pending) + finalized invoice + Stripe checkout link

POST /v1/orgs/{orgId}/orders

Corps de la requête

projectId* string (uuid)
productId* string (uuid)
period* string one of "monthly", "quarterly", "semiannual", "annual"
sshKey string
osTemplateId string (uuid)
label string A name for the new service (servers: also the host name)
zoneId string (uuid) Location to place it in (servers, load balancers, databases, S3)
version string Databases: engine major version (default: the newest offered)
mode string one of "cache", "durable" · Valkey: cache (no persistence) or durable (AOF + RDB, default)
networkId string (uuid) Databases / S3: the private network to join (recommended - private first)
restoreFromBackupId string (uuid) Databases: load this backup (of one of your own instances, same engine) into the new instance - a restore into a NEW instance, the source stays untouched
couponCode string
successUrl string
cancelUrl string
autoPay boolean
paymentMethod string one of "card", "bancontact", "ideal", "bank_transfer"
config object
GET /services/{serviceId}/status

Live order status for one service: payment + provisioning + subscription in one call

GET /v1/orgs/{orgId}/services/{serviceId}/status

Paramètres

  • serviceId (path, required)
GET /legacy-invoices

Invoices from the previous billing system (read-only history)

GET /v1/orgs/{orgId}/legacy-invoices
GET /legacy-invoices/{id}

One invoice from the previous billing system, with its lines

GET /v1/orgs/{orgId}/legacy-invoices/{id}

Paramètres

  • id (path, required)
GET /vat-quote

VAT for an order before it is placed, for this organization

GET /v1/orgs/{orgId}/vat-quote

Paramètres

  • amountCents (query, required)

support

Customer support tickets

GET /tickets

List the organization's support tickets

GET /v1/orgs/{orgId}/tickets
POST /tickets

Open a support ticket

POST /v1/orgs/{orgId}/tickets

Corps de la requête

subject* string
body* string
departmentId string
priority string one of "low", "normal", "high", "urgent"
serviceId string
invoiceId string
GET /tickets/unread-count

How many of the organization's tickets have a support reply the calling user hasn't read

GET /v1/orgs/{orgId}/tickets/unread-count
POST /tickets/{id}/read

Mark a ticket as read by the calling user

POST /v1/orgs/{orgId}/tickets/{id}/read

Paramètres

  • id (path, required)
GET /departments

List the brand's support departments

GET /v1/orgs/{orgId}/departments
GET /tickets/{id}

Get a ticket + its (customer-visible) thread

GET /v1/orgs/{orgId}/tickets/{id}

Paramètres

  • id (path, required)
POST /tickets/{id}/messages

Reply to a ticket (re-opens it)

POST /v1/orgs/{orgId}/tickets/{id}/messages

Paramètres

  • id (path, required)

Corps de la requête

body* string
POST /tickets/{id}/close

Close a ticket

POST /v1/orgs/{orgId}/tickets/{id}/close

Paramètres

  • id (path, required)
POST /tickets/{id}/reopen

Reopen a closed ticket

POST /v1/orgs/{orgId}/tickets/{id}/reopen

Paramètres

  • id (path, required)
POST /tickets/{ticketId}/messages/{messageId}/attachments

Attach a file to a ticket message (multipart 'file', ≤10 MB, safe types only)

POST /v1/orgs/{orgId}/tickets/{ticketId}/messages/{messageId}/attachments

Paramètres

  • ticketId (path, required)
  • messageId (path, required)
GET /tickets/{ticketId}/attachments/{attachmentId}

Download a ticket attachment (inert; attachment disposition)

GET /v1/orgs/{orgId}/tickets/{ticketId}/attachments/{attachmentId}

Paramètres

  • inline (query)
  • ticketId (path, required)
  • attachmentId (path, required)

load-balancers

GET /services/{id}/lb

Load balancer: settings, services, targets (with health), limits, sync state

GET /v1/orgs/{orgId}/services/{id}/lb

Paramètres

  • id (path, required)
PATCH /services/{id}/lb

Change the balancing algorithm

PATCH /v1/orgs/{orgId}/services/{id}/lb

Paramètres

  • id (path, required)

Corps de la requête

algorithm* string
POST /services/{id}/lb/services

Add a service (listener: protocol + ports + health check)

POST /v1/orgs/{orgId}/services/{id}/lb/services

Paramètres

  • id (path, required)

Corps de la requête

protocol* string one of "http", "https", "tcp" · "http", "https" or "tcp"
listenPort* integer 1…65535 · Port on the load balancer's public IP
destinationPort* integer 1…65535 · Port on the targets
httpRedirect boolean https only: also listen on :80 and redirect to https
stickySessions boolean Keep a visitor on the same target (cookie)
proxyProtocol boolean Send the PROXY protocol header to targets
healthCheck object How targets are checked
certificateIds string[] https only: certificate ids (from …/lb-certificates)
PATCH /services/{id}/lb/services/{sid}

Change a service

PATCH /v1/orgs/{orgId}/services/{id}/lb/services/{sid}

Paramètres

  • id (path, required)
  • sid (path, required)

Corps de la requête

protocol string one of "http", "https", "tcp" · "http", "https" or "tcp"
listenPort integer 1…65535 · Port on the load balancer's public IP
destinationPort integer 1…65535 · Port on the targets
httpRedirect boolean https only: also listen on :80 and redirect to https
stickySessions boolean Keep a visitor on the same target (cookie)
proxyProtocol boolean Send the PROXY protocol header to targets
healthCheck object How targets are checked
certificateIds string[] https only: certificate ids (from …/lb-certificates)
DELETE /services/{id}/lb/services/{sid}

Remove a service

DELETE /v1/orgs/{orgId}/services/{id}/lb/services/{sid}

Paramètres

  • id (path, required)
  • sid (path, required)
POST /services/{id}/lb/targets

Add a target: one of your servers, or an IP address

POST /v1/orgs/{orgId}/services/{id}/lb/targets

Paramètres

  • id (path, required)

Corps de la requête

kind* string one of "server", "ip" · "server" (one of your servers) or "ip"
serviceId string kind=server: the server's service id
address string kind=ip: IPv4/IPv6 address
weight integer Share of traffic (1-256, default 1)
enabled boolean Receive traffic (default true)
PATCH /services/{id}/lb/targets/{tid}

Change a target's weight or switch it on/off

PATCH /v1/orgs/{orgId}/services/{id}/lb/targets/{tid}

Paramètres

  • id (path, required)
  • tid (path, required)

Corps de la requête

weight integer Share of traffic (1-256)
enabled boolean Receive traffic
DELETE /services/{id}/lb/targets/{tid}

Remove a target

DELETE /v1/orgs/{orgId}/services/{id}/lb/targets/{tid}

Paramètres

  • id (path, required)
  • tid (path, required)
POST /services/{id}/lb/apply

Push the configuration to the load balancer now (waits for the result)

POST /v1/orgs/{orgId}/services/{id}/lb/apply

Paramètres

  • id (path, required)
POST /services/{id}/lb/restart

Restart the load balancer appliance

POST /v1/orgs/{orgId}/services/{id}/lb/restart

Paramètres

  • id (path, required)
GET /services/{id}/lb/metrics

Requests per second, status codes, connections and traffic

GET /v1/orgs/{orgId}/services/{id}/lb/metrics

Paramètres

  • range (query)
  • id (path, required)
GET /services/{id}/lb/logs

Recent request log lines (newest last)

GET /v1/orgs/{orgId}/services/{id}/lb/logs

Paramètres

  • since (query)
  • until (query)
  • limit (query)
  • search (query)
  • system (query)
  • id (path, required)
GET /services/{id}/lb/logs/export

Download request logs as a text file (up to 50,000 lines)

GET /v1/orgs/{orgId}/services/{id}/lb/logs/export

Paramètres

  • since (query)
  • until (query)
  • limit (query)
  • search (query)
  • system (query)
  • id (path, required)
GET /services/{id}/lb/target-candidates

Your servers that can be added as targets

GET /v1/orgs/{orgId}/services/{id}/lb/target-candidates

Paramètres

  • id (path, required)
GET /load-balancers

Your load balancers: address, sync state, target health, last-hour traffic

GET /v1/orgs/{orgId}/load-balancers
GET /lb-certificates

TLS certificates for load balancers

GET /v1/orgs/{orgId}/lb-certificates
POST /lb-certificates

Upload a certificate ({type:'uploaded', name, certificate, privateKey}) or request a free one ({type:'managed', name, domains[]})

POST /v1/orgs/{orgId}/lb-certificates

Corps de la requête

type* string one of "uploaded", "managed" · "uploaded" (your own) or "managed" (free Let's Encrypt)
name* string Label
certificate string uploaded: PEM certificate (+ chain)
privateKey string uploaded: PEM private key
domains string[] managed: domains to cover (they must point at the load balancer)
PATCH /lb-certificates/{cid}

Rename a certificate

PATCH /v1/orgs/{orgId}/lb-certificates/{cid}

Paramètres

  • cid (path, required)

Corps de la requête

name* string
DELETE /lb-certificates/{cid}

Delete a certificate (refused while a load balancer uses it)

DELETE /v1/orgs/{orgId}/lb-certificates/{cid}

Paramètres

  • cid (path, required)

databases

GET /databases

Managed databases and S3 instances: engine, version, state, plan, endpoints and health

GET /v1/orgs/{orgId}/databases
GET /services/{id}/data

Instance: engine, version, state, plan, endpoints, users, access, maintenance, backups, parameters, recent tasks

GET /v1/orgs/{orgId}/services/{id}/data

Paramètres

  • id (path, required)
GET /services/{id}/data/connection

Ready-made connection strings for the private and public endpoints (PASSWORD is a placeholder), and the CA bundle

GET /v1/orgs/{orgId}/services/{id}/data/connection

Paramètres

  • id (path, required)
GET /services/{id}/data/ca.pem

The CA bundle to verify the instance's TLS certificate (save as faastic-ca.pem)

GET /v1/orgs/{orgId}/services/{id}/data/ca.pem

Paramètres

  • id (path, required)
POST /services/{id}/data/apply

Push the configuration to the instance again now (after a failed push)

POST /v1/orgs/{orgId}/services/{id}/data/apply

Paramètres

  • id (path, required)
GET /services/{id}/data/storage

Storage: the plan's disk, extra storage added, the unit it's sold in and its price, and how much more can be added

GET /v1/orgs/{orgId}/services/{id}/data/storage

Paramètres

  • id (path, required)
POST /services/{id}/data/storage

Add storage: the disk grows online (nothing restarts) and the charge starts with the next renewal. Storage can't be given back.

POST /v1/orgs/{orgId}/services/{id}/data/storage

Paramètres

  • id (path, required)

Corps de la requête

units* integer How many units of extra storage to add (see the unit size in GET …/data/storage). Billed monthly; a disk can't shrink, so storage can't be given back
GET /services/{id}/data/instance-credentials

The admin user and its password (S3: the admin access key and secret)

GET /v1/orgs/{orgId}/services/{id}/data/instance-credentials

Paramètres

  • id (path, required)
POST /services/{id}/data/instance-credentials/rotate

New admin password (S3: new admin key) - the old one stops working

POST /v1/orgs/{orgId}/services/{id}/data/instance-credentials/rotate

Paramètres

  • id (path, required)
POST /services/{id}/data/users

Create a user from a role template (S3: an access key with bucket grants). The password/secret is returned once.

POST /v1/orgs/{orgId}/services/{id}/data/users

Paramètres

  • id (path, required)

Corps de la requête

name* string PostgreSQL/MySQL/Valkey: a user name (lowercase letters, digits, _). S3: the key's name
role* string A role template from the instance's `roles` (e.g. readwrite, readonly; S3: readwrite, readonly, owner)
scope object S3: { buckets: { "<bucket>": ["read","write","owner"] }, allowCreateBucket: true }. Valkey: { keyPrefix: "app1:" }
POST /services/{id}/data/users/{name}/rotate

New password for a user (S3: a new key with the same grants; the old key is deleted). Returned once.

POST /v1/orgs/{orgId}/services/{id}/data/users/{name}/rotate

Paramètres

  • id (path, required)
  • name (path, required)
DELETE /services/{id}/data/users/{name}

Delete a user (PostgreSQL: its objects move to the admin) or an S3 key

DELETE /v1/orgs/{orgId}/services/{id}/data/users/{name}

Paramètres

  • id (path, required)
  • name (path, required)
GET /services/{id}/data/databases

Databases with their size (S3: buckets with size and object count)

GET /v1/orgs/{orgId}/services/{id}/data/databases

Paramètres

  • id (path, required)
POST /services/{id}/data/databases

Create a database (S3: a bucket, optionally with quotas)

POST /v1/orgs/{orgId}/services/{id}/data/databases

Paramètres

  • id (path, required)

Corps de la requête

name* string Database name (lowercase letters, digits, _) - S3: bucket name (3-63 of a-z 0-9 . -)
maxSizeGb number S3 only: bucket quota in GB
maxObjects integer S3 only: bucket quota in objects
DELETE /services/{id}/data/databases/{name}

Delete a database and its data (S3: an empty bucket)

DELETE /v1/orgs/{orgId}/services/{id}/data/databases/{name}

Paramètres

  • id (path, required)
  • name (path, required)
PUT /services/{id}/data/public-access

Public access: off by default; when on, only the allowlist may connect (TLS only)

PUT /v1/orgs/{orgId}/services/{id}/data/public-access

Paramètres

  • id (path, required)

Corps de la requête

enabled* boolean Expose the service port on the instance's public address (off by default)
allowlist string[] Source addresses or ranges (IPv4/IPv6 CIDR) allowed to connect - required unless allowAnySource
allowAnySource boolean Open to any source address (must be explicit; S3 allows an empty allowlist)
PUT /services/{id}/data/maintenance

Move the weekly 60-minute maintenance window

PUT /v1/orgs/{orgId}/services/{id}/data/maintenance

Paramètres

  • id (path, required)

Corps de la requête

dayOfWeek* integer 0 = Sunday … 6 = Saturday
hour* integer Start hour 0-23, Brussels time (60-minute window)
PUT /services/{id}/data/backup-settings

Daily backup hour and how many daily backups to keep

PUT /v1/orgs/{orgId}/services/{id}/data/backup-settings

Paramètres

  • id (path, required)

Corps de la requête

hour* integer Daily backup hour 0-23, Brussels time
keepDaily* integer Daily backups kept, 1-35
PATCH /services/{id}/data/parameters

Change allow-listed engine parameters (some restart the engine - see paramSpecs)

PATCH /v1/orgs/{orgId}/services/{id}/data/parameters

Paramètres

  • id (path, required)

Corps de la requête

work_mem object PostgreSQL: MB per sort or hash
maintenance_work_mem object PostgreSQL: MB for VACUUM and CREATE INDEX
statement_timeout object PostgreSQL: ms (0 = never)
lock_timeout object PostgreSQL: ms (0 = never)
idle_in_transaction_session_timeout object PostgreSQL: ms (0 = never)
log_min_duration_statement object PostgreSQL: ms (-1 = off)
random_page_cost object PostgreSQL: planner cost of a random page read
default_statistics_target object PostgreSQL: 10-10000
max_connections object PostgreSQL: 20-1000 (restarts the engine)
jit object PostgreSQL: just-in-time compilation
wal_level object PostgreSQL: replica or logical (restarts the engine)
autovacuum_vacuum_scale_factor object PostgreSQL: see paramSpecs for the allowed values
autovacuum_analyze_scale_factor object PostgreSQL: see paramSpecs for the allowed values
timezone object PostgreSQL: e.g. Europe/Brussels
GET /services/{id}/data/backups

Backups: kind, size, when, and until when they are kept

GET /v1/orgs/{orgId}/services/{id}/data/backups

Paramètres

  • id (path, required)
POST /services/{id}/data/backups

Back up now (runs in the background; follow the returned task)

POST /v1/orgs/{orgId}/services/{id}/data/backups

Paramètres

  • id (path, required)
POST /services/{id}/data/backups/{backupId}/restore

Restore a backup in place - replaces all current data after a safety backup

POST /v1/orgs/{orgId}/services/{id}/data/backups/{backupId}/restore

Paramètres

  • id (path, required)
  • backupId (path, required)

Corps de la requête

confirm* string Must be "restore-in-place": replaces all current data (a safety backup is taken first)
GET /services/{id}/data/tasks

The instance's task history: every change, who made it, its outcome

GET /v1/orgs/{orgId}/services/{id}/data/tasks

Paramètres

  • id (path, required)
GET /services/{id}/data/tasks/{taskId}

One task with its log

GET /v1/orgs/{orgId}/services/{id}/data/tasks/{taskId}

Paramètres

  • id (path, required)
  • taskId (path, required)
GET /services/{id}/data/stats

Live engine figures: connections, size, cache hit ratio, uptime (S3: buckets, bytes, objects, free space)

GET /v1/orgs/{orgId}/services/{id}/data/stats

Paramètres

  • id (path, required)
GET /services/{id}/data/metrics

CPU, memory, disk and network of the instance VM over a timeframe (hour, day, week, month, year)

GET /v1/orgs/{orgId}/services/{id}/data/metrics

Paramètres

  • id (path, required)
GET /services/{id}/data/logs

The engine's recent log lines

GET /v1/orgs/{orgId}/services/{id}/data/logs

Paramètres

  • id (path, required)

ai

GET /ai

AI API account: status, prepaid balance, auto top-up, gateway URL, month-to-date spend

GET /v1/orgs/{orgId}/ai
POST /ai/activate

Activate the AI API (free; you pay only for usage, from prepaid credit)

POST /v1/orgs/{orgId}/ai/activate
POST /ai/close

Close the AI API: every key is revoked. Remaining credit stays on the account.

POST /v1/orgs/{orgId}/ai/close
PUT /ai/auto-topup

Automatic top-up with the saved card when the balance drops below a threshold

PUT /v1/orgs/{orgId}/ai/auto-topup

Corps de la requête

enabled* boolean
thresholdCents* integer 0…
amountCents* integer 0…
GET /ai/topups

Top-up history

GET /v1/orgs/{orgId}/ai/topups
POST /ai/topups

Buy AI credit: creates the invoice (VAT on top). Pay it via POST /orgs/{orgId}/invoices/{id}/pay; the credit lands when it is paid.

POST /v1/orgs/{orgId}/ai/topups

Corps de la requête

amountCents* integer 500…500000
GET /ai/ledger

Credit statement: top-ups, refunds and adjustments (usage is under /ai/usage)

GET /v1/orgs/{orgId}/ai/ledger
GET /ai/keys

AI API keys (never the secret)

GET /v1/orgs/{orgId}/ai/keys

Paramètres

  • includeRevoked (query)
POST /ai/keys

Create an AI API key - ready to use on return; the secret is returned ONCE. 502 ai_key_setup_failed = nothing was created, retry.

POST /v1/orgs/{orgId}/ai/keys

Corps de la requête

name* string max 80 chars
allowedModels string[] Empty = every model on sale
rpm integer 1… · nullable · Requests per minute
tpm integer 1… · nullable · Tokens per minute
monthlyCapMicros integer 0… · nullable · Spending cap per calendar month (UTC), in micro-euro (1 € = 1,000,000)
PATCH /ai/keys/{keyId}

Change a key's name, models, rate limits or monthly cap

PATCH /v1/orgs/{orgId}/ai/keys/{keyId}

Paramètres

  • keyId (path, required)

Corps de la requête

name string max 80 chars
allowedModels string[] Empty = every model on sale
rpm integer 1… · nullable · Requests per minute
tpm integer 1… · nullable · Tokens per minute
monthlyCapMicros integer 0… · nullable · Spending cap per calendar month (UTC), in micro-euro (1 € = 1,000,000)
DELETE /ai/keys/{keyId}

Revoke a key (immediate)

DELETE /v1/orgs/{orgId}/ai/keys/{keyId}

Paramètres

  • keyId (path, required)
GET /ai/models

Models on sale and their prices (micro-euro per 1M tokens / per minute / per image)

GET /v1/orgs/{orgId}/ai/models
GET /ai/usage

Usage + spend: totals, per day, per model, per key (default: last 30 days)

GET /v1/orgs/{orgId}/ai/usage

Paramètres

  • from (query)
  • to (query)
  • keyId (query)
GET /ai/requests

Request log - metadata only (time, key, model, tokens, status, latency, charge). Prompts and answers are never stored.

GET /v1/orgs/{orgId}/ai/requests

Paramètres

  • keyId (query)
  • before (query)
  • limit (query)

Questions fréquentes

Faastic propose-t-il une API publique ?

Oui. Une API REST couvre les serveurs, les load balancers, les réseaux, les bases de données, le DNS, les domaines et la facturation : tout ce que vous pouvez faire dans le portail.

Existe-t-il une spécification OpenAPI ?

Oui, générée à partir de l'API en production, à l'adresse https://api.faastic.com/v1/openapi.json.

Quelles sont les limites de débit ?

300 requêtes par minute et par jeton.

Puis-je commander des services via l'API ?

Oui, avec un jeton en lecture et écriture qui dispose des droits de facturation. La commande renvoie un lien de paiement, et rien n'est créé tant que la facture n'est pas payée.