API

Introduction
CLORE.AI l'API peut être utilisée pour automatiser le déploiement de vos charges de travail sur CLORE.AI
Tout d'abord, vous devez obtenir une clé API

Réponses de l'API
Les réponses sont renvoyées au format JSON, peuvent avoir différents champs
Le champ toujours renvoyé est code, indiquant le statut
champ code
0
NORMAL
1
ERREUR DE BASE DE DONNÉES
2
DONNÉES D'ENTRÉE INVALIDES
3
JETON API INVALIDE
4
ENDPOINT INVALIDE
5
DÉPASSÉ la limite de 1 requête/seconde
6
Erreur spécifiée dans erreur champ
Points de terminaison
1. portefeuilles
portefeuillesÀ propos
Retourne les portefeuilles et les soldes
En-têtes
auth
chaîne
Oui
Jeton API
Sortie
code
int
Code de statut
portefeuilles
[]string
Tableau de portefeuilles
Exemple
Entrée :
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/wallets'Sortie :
{
"wallets": [
{
"name": "bitcoin",
"deposit": "tb1q6erw7v02t7hakgmlcl4wfnlykzqj05alndruwr",
"balance": 0.00153176,
"withdrawal_fee": 0.0001
}
],
"code": 0
}2. mes_serveurs
mes_serveursÀ propos
Renvoie vos serveurs que vous fournissez à clore.ai place de marché
En-têtes
auth
chaîne
Oui
Jeton API
Sortie
code
int
Code de statut
limite
int
Nombre maximal de serveurs que vous pouvez posséder
serveurs
[]string
Tableau de serveurs
servers[x].name
chaîne
Nom du serveur sélectionné par l'utilisateur
servers[x].visibility
chaîne
Visibilité sur la place de marché
servers[x].pricing
[]string
Prix/jour à la demande
servers[x].online
bool
Le serveur est-il en ligne
servers[x].min_spot_pricing
[]string
Prix minimal/jour pour la location sur le marché spot
servers[x].init_token
chaîne
Jeton d'initialisation
servers[x].specs
[]string
Spécifications du serveur
Exemple
Entrée :
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/my_servers'Sortie :
{
"servers": [
{
"name": "Michael",
"connected": false,
"visibility": "hidden",
"pricing": { "bitcoin": 0, "usd": 0 },
"online": false,
"min_spot_pricing": { "bitcoin": 0, "usd": 0 },
"init_token": "qnwVIMsZPjUWS7jw6gAbTOeoGQNgTH9XVxJaiCEbG0OlmfjF"
},
{
"name": "Jan Vykydal",
"connected": true,
"visibility": "public",
"pricing": { "bitcoin": 0.00010337, "usd": 0 },
"online": false,
"min_spot_pricing": { "bitcoin": 0.00005168, "usd": 0 },
"specs": {
"mb": "Z590 GAMING X",
"cpu": "Intel Core i9-11900",
"cpus": "8/16",
"ram": 64,
"disk": "NVMe 512GB",
"disk_speed": 2000,
"gpu": "1x GeForce GTX 1080 Ti",
"gpuram": 11,
"net": {
"down":119.61,
"up":25.24
}
}
}
],
"limit": 16,
"code": 0
}*USD non implémenté encore
3. configuration_serveur
configuration_serveurÀ propos
Obtenir la configuration d'un serveur spécifique
En-têtes
auth
chaîne
Oui
Jeton API
Type de contenu
chaîne
Oui
Doit être application/json
Corps
server_name
chaîne
Oui
Nom du serveur
Sortie
code
int
Code de statut
creation_completed
bool
La création du serveur est-elle terminée
config
[]string
Configuration du serveur
config.name
chaîne
Nom du serveur sélectionné par l'utilisateur
config.visibility
chaîne
Visibilité sur la place de marché
config.pricing
[]string
Prix/jour à la demande
config.spot_pricing
[]string
Prix minimal/jour pour la location sur le marché spot
config.mrl
int
Durée maximale de location en heures
config.online
bool
Le serveur est-il en ligne
config.id
int
ID unique du serveur
config.rental_status
int
0 - non loué | 1 - Loué sur le marché spot | 2 - Loué à la demande
config.specs
[]string
Spécifications du serveur
config.background_job
[]string
Tâche en arrière-plan lorsque non loué
Exemple
Entrée :
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
"server_name":"Jan Vykydal"
}' 'https://api.clore.ai/v1/server_config'Sortie :
{
"config": {
"name": "Jan Vykydal",
"connected": true,
"visibility": "public",
"pricing": { "bitcoin": 0.00010337, "usd": 0 },
"spot_pricing": { "bitcoin": 0.00005168, "usd": 0 },
"mrl": 72,
"online": false,
"initialized": true,
"id": 4,
"rental_status": 0,
"specs": {
"mb": "Z590 GAMING X",
"cpu": "Intel Core i9-11900",
"cpus": "8/16",
"ram": 64,
"disk": "NVMe 512GB",
"disk_speed": 2000,
"gpu": "1x GeForce GTX 1080 Ti",
"gpuram": 11,
"net": {
"down":119.61,
"up":25.24
}
},
"background_job": {
"times_updated": 1,
"image": "cloreai/ubuntu20.04-jupyter",
"command": "",
"env": []
}
},
"creation_completed": true,
"code": 0
}*USD non implémenté encore
4. place de marché
place de marchéÀ propos
Obtenir la place de marché
En-têtes
auth
chaîne
Oui
Jeton API
Sortie
code
int
Code de statut
mes_serveurs
[]string
Tableau d'identifiants de serveurs que vous fournissez à clore.ai (ne peut pas être loué)
serveurs
[]string
Tableau de serveurs publics sur la place de marché
servers[x].id
int
ID unique du serveur
servers[x].owner
int
ID unique du propriétaire
servers[x].mrl
int
Durée maximale de location en heures
servers[x].price.on_demand
[]string
Prix à la demande par jour
servers[x].spot
[]string
Prix minimal du marché spot par jour
servers[x].rented
bool
Le serveur est-il loué à la demande
servers[x].specs
[]string
Spécifications du serveur
Exemple
Obtenir la place de marché
Entrée :
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/marketplace'Sortie :
{
"servers": [
{
"id": 6,
"owner": 4,
"mrl": 73,
"price": { "on_demand": { "bitcoin": 0.00001 },
"spot": { "bitcoin": 0.000001 }},
"rented": false,
"specs": {
"mb": "Z590 GAMING X",
"cpu": "11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz",
"cpus": "8/16",
"ram": 62.67348861694336,
"disk": "NVMe disk 247.3623046875GB",
"disk_speed": 0,
"gpu": "1x NVIDIA GeForce GTX 1080 Ti",
"gpuram": 11,
"net": {
"up": 26.38,
"down": 118.42,
"cc": "CZ"
}
}
}
],
"my_servers": [1, 2, 4],
"code": 0
}5. mes_commandes
mes_commandesÀ propos
Obtenir vos commandes
En-têtes
auth
chaîne
Oui
Jeton API
Chaîne de requête
return_completed
bool
Non
Retourner les commandes terminées (expirées)
Sortie
code
int
Code de statut
limite
int
Nombre maximal de commandes actives
commandes
[]string
Tableau de commandes
orders[x].id
int
ID unique de la commande
orders[x].price
float
Prix de la commande (coût) par jour
orders[x].mrl
int
Durée maximale de location de la commande en secondes
orders[x].image
chaîne
Image docker utilisée
orders[x].currency
chaîne
Devise utilisée pour la facturation
orders[x].spend
float
Montant dépensé pour la commande
orders[x].ct
int
Heure de création (heure UNIX)
orders[x].p
int
Cluster de proxy actuellement utilisé
orders[x].specs
[]string
Spécifications du serveur
orders[x].si
int
ID unique du serveur
orders[x].pub_cluster
[]string
Points de terminaison publics avec ports redirigés
orders[x].tcp_ports
[]string
Redirection de ports TCP
orders[x].http_port
chaîne
Port du conteneur redirigé via le proxy HTTPS
orders[x].spot
bool
Indication que c'est une commande spot
orders[x].expired
bool
Indication que la commande a expiré
Entrée :
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/my_orders?return_completed=true'Sortie :
{
"orders": [
{
"id": 38,
"fee": 5,
"creation_fee": 3e-7,
"price": 0.00001,
"mrl": 262800,
"image": "cloreai/ubuntu20.04-jupyter",
"currency": "bitcoin",
"spend": 6.944444444444445e-9,
"ct": 1667401396,
"p": 1,
"specs": {
"mb": "Z590 GAMING X",
"cpu": "11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz",
"cpus": "8/16",
"ram": 62.67348861694336,
"disk": "NVMe disk 247.3623046875GB",
"disk_speed": 2000,
"gpu": "1x NVIDIA GeForce GTX 1080 Ti",
"gpuram": 11,
"net": {
"up": 26.38,
"down": 118.42,
}
},
"si": 6,
"pub_cluster": [ "n1.c1.clorecloud.net", "n2.c1.clorecloud.net" ],
"tcp_ports": [ "22:10000" ],
"http_port": "8888"
},{
"id": 36,
"fee": 2.5,
"creation_fee": 1e-7,
"price": 0.00001,
"mrl": 262800,
"image": "cloreai/ubuntu20.04-jupyter",
"currency": "bitcoin",
"spend": 1.3888888888888888e-7,
"ct": 1667248597,
"specs": {
"mb": "Z590 GAMING X",
"cpu": "11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz",
"cpus": "8/16",
"ram": 62.67348861694336,
"disk": "NVMe disk 247.3623046875GB",
"disk_speed": 2000,
"gpu": "1x NVIDIA GeForce GTX 1080 Ti",
"gpuram": 11,
"net": {
"up": 26.38,
"down": 118.42,
}
},
"si": 6,
"spot": true,
"expired": true,
"tcp_ports": []
}
],
"limit": 13,
"code": 0
}6. marché_spot
marché_spotÀ propos
Obtenir le marché spot pour un serveur spécifique
En-têtes
auth
chaîne
Oui
Jeton API
Chaîne de requête
marché
int
Oui
ID unique du serveur
Sortie
code
int
Code de statut
existe
bool
Vérification que le marché existe
marché
objet
Place de marché
market.offers
tableau
Offres de location pour le serveur
market.offers[x].offer_id
int
ID unique de l'offre
market.offers[x].bid
float
Prix proposé par jour
market.offers[x].active
bool
Cette offre est actuellement utilisée
market.offers[x].my
bool
Cette offre m'appartient
market.server
objet
Informations sur le serveur
market.server.min_pricing
objet
Prix minimal de l'offre par jour
market.server.mrl
int
Durée maximale de location en secondes
market.server.visibility
chaîne
Vous ne pouvez créer des offres que lorsque la visibilité est publique
market.server.online
bool
Le serveur est en ligne
Entrée :
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/spot_marketplace?market=6'Sortie :
{
"market": {
"offers": [
{
"offer_id": 39,
"bid": 0.0000042,
"active": true,
"my": true
}
],
"server": {
"min_pricing": {
"bitcoin": 0.000001
},
"mrl": 262800,
"visibility": "public",
"online": true
}
},
"exists": true,
"code": 0
}7. configurer_parametres_serveur
configurer_parametres_serveurÀ propos
Configurer les paramètres du serveur que vous fournissez sur clore.ai place de marché
En-têtes
auth
chaîne
Oui
Jeton API
Type de contenu
chaîne
Oui
Doit être application/json
Corps
nom
chaîne
Oui
Nom du serveur sélectionné par l'utilisateur
disponibilité
bool
Oui
Le serveur peut-il être loué
mrl
int
Oui
Durée maximale de location du serveur
à_la_demande
float
Oui
Prix par jour pour votre serveur à la demande
spot
float
Oui
Prix minimum par jour pour une offre SPOT
Sortie
code
int
Code de statut
Exemple
Créons une preuve d'envoi pour une transaction envoyée depuis le portefeuille actuel.
Entrée :
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
"name": "Jan Vykydal",
"availability":true,
"mrl":96,
"on_demand":0.0001,
"spot":0.00000113
}' 'https://api.clore.ai/v1/set_server_settings'Sortie :
{
"code": 0
}8. definir_prix_spot
definir_prix_spotÀ propos
Définir le prix par jour sur votre offre SPOT
En-têtes
auth
chaîne
Oui
Jeton API
Type de contenu
chaîne
Oui
Doit être application/json
Corps
order_id
int
Oui
ID unique de l'offre
prix_desiré
float
Oui
Votre prix proposé par jour
Exemple
Essayons de mettre à jour le prix du marché spot
Entrée 1 (La diminution était trop importante) :
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
"order_id":39,
"desired_price":0.00000200
}' 'https://api.clore.ai/v1/set_spot_price'Sortie possible 1 (La diminution était trop importante) : Vous pouvez diminuer le prix de l'offre spot au maximum de 0.00000100 ₿
code
int
Code de statut
erreur
chaîne
Champ de description de l'erreur
max_step
float
Valeur la plus basse à laquelle vous pouvez actuellement abaisser le prix
{
"error":"exceeded_max_step",
"max_step":0.0000032,
"code":6
}Entrée 2 (Diminution valide du prix) :
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
"order_id":39,
"desired_price":0.00000320
}' 'https://api.clore.ai/v1/set_spot_price'Sortie possible 2 (Diminution valide du prix) :
{
"code": 0
}Entrée 3 (Baisser le prix encore plus après l'envoi de l'Entrée 2) :
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
"order_id":39,
"desired_price":0.00000220
}' 'https://api.clore.ai/v1/set_spot_priceSortie possible 3 (Baisser le prix encore plus après l'envoi de l'Entrée 2) : Vous pouvez baisser le prix spot une fois toutes les 600 secondes
code
int
Code de statut
erreur
chaîne
Champ de description de l'erreur
time_to_lowering
float
Temps restant (sec) avant la prochaine possibilité de baisser le prix
{
"error":"can_lower_every_600_seconds",
"time_to_lowering":513,
"code":6
}9. annuler_commande
annuler_commandeÀ propos
Définir le prix par jour sur votre offre SPOT
En-têtes
auth
chaîne
Oui
Jeton API
Type de contenu
chaîne
Oui
Doit être application/json
Corps
id
int
Oui
ID unique de la commande/offre
problème
chaîne
Non
Si vous avez rencontré des problèmes avec le serveur, vous pouvez les signaler à clore.ai l'équipe, maximum 2048 caractères
Sortie
code
int
Code de statut
Exemple
Annuler commande/offre
Entrée : Dans cet exemple, nous signalons des problèmes avec le GPU n°1, si vous n'avez pas de problèmes, n'incluez pas le champ issue. Vous pouvez écrire n'importe quel message dans le champ texte et nous l'examinerons
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
"id":39,
"issue":"GPU #1 Surchauffait et réduisait sa fréquence"
}' 'https://api.clore.ai/v1/cancel_order'Sortie :
{
"code": 0
}10. creer_commande
creer_commandeÀ propos
Vous pouvez créer une offre spot ou une commande à la demande avec ce point de terminaison Ce point de terminaison permet également seulement 1 requête toutes les 5 secondes
En-têtes
auth
chaîne
Oui
Jeton API
Type de contenu
chaîne
Oui
Doit être application/json
Corps
devise
chaîne
Oui
Nom de la devise
image
chaîne
Oui
Image valide depuis Docker Hub
server_a_louer
int
Oui
ID du serveur que vous souhaitez louer
type
chaîne
Oui
à_la_demande OU spot
spotprice
float
Dépend
Prix offert par jour sur le marché spot, requis lors de la création d'une commande spot
ports
objet
Non
Configuration de redirection de ports, maximum 5 enregistrements
env
objet
Non
Variables d'environnement, limitées à 12000 caractères au total une fois converties en chaîne. Nom de la variable - 128 caractères max Valeur de la variable - 1536 caractères max
jupyter_token
chaîne
Non
Jeton Jupyter pour les images contenant des notebooks Jupyter, maximum 32 caractères *
ssh_key
chaîne
Non
Clé SSH pour les images avec SSH, maximum 3072 caractères *
ssh_password
chaîne
Non
Mot de passe SSH pour les images avec SSH, maximum 32 caractères *
commande
chaîne
Non
La commande sera exécutée sur le serveur après la création de la commande
prix_requis
float
Non
Spécifiez le prix pour lequel vous souhaitez démarrer la commande, si le propriétaire de la machine change le prix, alors la commande ne démarrera pas (uniquement à la demande)
autossh_entrypoint
bool
Non
Utiliser le point d'entrée clore.ai, qui déploie automatiquement un serveur SSH et personnalisé /root/onstart.sh script
* Pour les champs marqués d'une étoile, vous ne pouvez saisir que des caractères appartenant à ce groupe d'expressions rationnelles /^[a-zA-Z0-9\s-=.@+/]+$/
Sortie
code
int
Code de statut
Exemple
Entrée 1 (Créer une offre spot) :
curl -XPOST -H 'auth: 6FcuR7ibcwKR1Z32lEFoSotzUUtzKO2H' -H "Content-type: application/json" -d '
{
"currency":"bitcoin",
"image":"cloreai/ubuntu20.04-jupyter",
"renting_server":6,
"type":"spot",
"spotprice":0.000001,
"ports":{
"22":"tcp",
"8888":"http"
},
"env":{
"VARIABLE_NAME":"VARIABLE_VALUE",
},
"jupyter_token":"hoZluOjbCOQ5D5yH7R",
"ssh_password":"Hpcj08ZaOpCbTmn1Eu",
"command":"#!/bin/sh\napt update -y && apt install htop"
}' 'https://api.clore.ai/v1/create_order'Sortie 1 (Créer une offre spot) :
{
"code":0
}Entrée 2 (Créer une commande à la demande) :
curl -XPOST -H 'auth: 6FcuR7ibcwKR1Z32lEFoSotzUUtzKO2H' -H "Content-type: application/json" -d '
{
"currency":"bitcoin",
"image":"cloreai/ubuntu20.04-jupyter",
"renting_server":6,
"type":"on-demand",
"ports":{
"22":"tcp",
"8888":"http"
},
"env":{
"VARIABLE_NAME":"VARIABLE_VALUE",
},
"jupyter_token":"hoZluOjbCOQ5D5yH7R",
"ssh_password":"Hpcj08ZaOpCbTmn1Eu",
"command":"#!/bin/sh\napt update -y && apt install htop"
}' 'https://api.clore.ai/v1/create_order'Sortie 2 (Créer une commande à la demande) :
{
"code":0
}Mis à jour
Ce contenu vous a-t-il été utile ?