API

Crédit, heures et budget

Comment la location à l'heure se paie, ce qu'est une heure entamée, et ce qui arrête une machine.

La location à l'heure se paie sur un crédit prépayé. Vous rechargez, vous commandez, et chaque heure entamée est prélevée au moment où elle commence. Tout le reste découle de cette phrase.

Le crédit prépayé

Il n'y a pas de facture à la fin du mois, pas de moyen de paiement à relancer, pas de dette possible : l'heure est payée à son début, et on n'ouvre une heure que si elle est payable. Votre solde ne peut donc jamais devenir négatif.

La contrepartie est qu'une machine s'arrête quand le crédit est épuisé. Elle ne disparaît pas pour autant. Voir plus bas.

Le crédit peut aussi venir d'un code de crédit (une carte cadeau, une campagne de bienvenue), saisi sur la page Crédits de la console. Ce crédit offert se dépense en premier, avant le crédit acheté, et peut porter une date limite : GET /v1/account distingue credit.paid, credit.gifted et credit.gifted_expires_at, la somme étant credit.balance. Il paie aussi les commandes et renouvellements réglés sur le crédit. Il n'est ni remboursable ni retirable.

L'heure entamée est due

Une machine créée à 14 h 05 et détruite à 14 h 20 coûte une heure. C'est la règle la plus simple à tenir des deux côtés : elle évite les remboursements au prorata de la seconde, et elle rend le coût d'un script prévisible.

Le compteur démarre à la minute de la création, pas à l'heure ronde. Un relevé heure par heure est lisible sur GET /v1/usage : une ligne par heure facturée, avec son tarif et son montant.

D'où vient le prix horaire

Il dérive du prix mensuel : ×1,5 sur 730 heures, arrondi au millième supérieur. La prime paie la souplesse : allumer pour trois heures coûte plus cher, à la journée, que de s'engager au mois.

Pour le Nano à 8,50 CAD par mois, cela donne 0,018 CAD l'heure, soit 13,14 CAD si la machine reste allumée un mois entier. Les deux chiffres sont dans GET /v1/plans, sous hourly et hourly_month_equivalent : la seconde valeur est celle qu'il faut comparer au prix mensuel.

L'avance de 24 heures

Une commande à l'heure n'est acceptée que si le solde couvre les 24 premières heures. Sans ce plancher, on livrerait des machines qui s'arrêtent dans l'heure, ce qui n'arrange personne.

dry_run vous donne le montant exact avant d'engager quoi que ce soit, et un refus rend 402 insufficient_credit avec ce qui manque, au cent près.

Autonomie et budget

GET /v1/account rend trois nombres qui suffisent à piloter une flotte : le solde, le débit horaire cumulé des machines allumées (burn_rate) et le temps que cela tiendra (runway_hours).

Un budget mensuel peut être fixé dans la console. Il déclenche des avertissements à 50, 80 et 100 % de consommation ; au-delà de 120 %, les machines sont arrêtées. Sans budget fixé, rien ne coupe : on n'arrête pas quelqu'un qui n'a rien demandé.

Il se fixe aussi par l'API, avec une clé qui porte billing.write : PUT /v1/account/budget et {"monthly": "250.00"}, ou {"monthly": null} pour le retirer. La réponse est le bloc budget de GET /v1/account ; rejouer la même requête ne change rien, un outil peut donc réappliquer sa configuration à chaque passage.

Ce qui arrête une machine

Crédit épuisé : la machine est arrêtée et son disque est conservé sept jours, sans frais. Rechargez dans ce délai et elle repart où elle en était, sans facturation rétroactive du temps passé éteinte. Passé le délai, la machine et son disque sont supprimés.

L'état est lisible sur la machine, dans le bloc suspension : le motif (credit, budget, bandwidth, admin) et la date de fin du sursis. Une machine suspendue se lit, mais n'obéit plus : toute action rend 409 service_suspended.

Le mode mensuel

Une commande billing: monthly émet une facture, et la machine n'est construite qu'une fois celle-ci réglée. Avec payment: credit, elle est soldée sur votre crédit si le solde couvre le total, en entier ou pas du tout. On ne vide pas un crédit à moitié pour une machine qui ne partira pas.

Supprimer une machine mensuelle est une résiliation : en fin de période payée par défaut, sur-le-champ avec ?when=now. Dans les deux cas sans remboursement.

Le trafic

Chaque machine inclut 1 To de trafic par mois, à l'heure, au mois ou à l'année : son trafic avec Internet, entrant et sortant additionnés. Le trafic qui passe par un réseau privé, entre machines ou avec vos bases gérées, n'est jamais compté ; celui qu'un répartiteur sert depuis Internet compte sur ses machines cibles. La carte réseau est reliée à un port de 1 Gbit/s partagé : un débit en burst, pas un débit réservé.

Le mois de trafic d'une machine au mois ou à l'année suit son échéance ; celui d'une machine à l'heure, le jour de sa création. GET /vms/{id} donne où elle en est :

json
"traffic": { "used_gb": 212.4, "limit_gb": 1000, "percent": 21.2, "overage_rate": "2.00",
             "period_ends_at": "2026-11-05T04:00:00Z" }

Au-delà du forfait, rien n'est coupé ni ralenti. À la fin du mois de trafic (period_ends_at), le dépassement est facturé au prorata, 2 CAD par To, réglé sur votre crédit s'il suffit, sinon par une facture qui attend ; le compteur repart de zéro. Supprimer une machine règle le dépassement du mois entamé. Un courriel prévient à 50, 80, 90 et 100 %.

Support & discussions

Questions techniques, retours d'incidents ou discussions d'infrastructure, l'équipe est présente sur Discord, Telegram, X, Instagram, Reddit et IRC.