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 alt text alt text


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

code
Description

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

À propos

Retourne les portefeuilles et les soldes

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Sortie

Champ
Type
Description

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

À propos

Renvoie vos serveurs que vous fournissez à clore.ai place de marché

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Sortie

Champ
Type
Description

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].connected

chaîne

Le serveur a-t-il déjà été connecté à clore.ai

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

À propos

Obtenir la configuration d'un serveur spécifique

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Type de contenu

chaîne

Oui

Doit être application/json

Corps

Champ
Type
Obligatoire
Description

server_name

chaîne

Oui

Nom du serveur

Sortie

Champ
Type
Description

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.connected

bool

Le serveur a-t-il déjà été connecté à clore.ai

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.initialized

bool

Le serveur a-t-il déjà été connecté à clore.ai

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é

À propos

Obtenir la place de marché

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Sortie

Champ
Type
Description

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

À propos

Obtenir vos commandes

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Chaîne de requête

Champ
Type
Obligatoire
Description

return_completed

bool

Non

Retourner les commandes terminées (expirées)

Sortie

Champ
Type
Description

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].fee

float

Frais (%) payés à clore.ai

orders[x].creation_fee

float

Frais de création payés à clore.ai

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

À propos

Obtenir le marché spot pour un serveur spécifique

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Chaîne de requête

Champ
Type
Obligatoire
Description

marché

int

Oui

ID unique du serveur

Sortie

Champ
Type
Description

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

À propos

Configurer les paramètres du serveur que vous fournissez sur clore.ai place de marché

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Type de contenu

chaîne

Oui

Doit être application/json

Corps

Champ
Type
Obligatoire
Description

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

Champ
Type
Description

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

À propos

Définir le prix par jour sur votre offre SPOT

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Type de contenu

chaîne

Oui

Doit être application/json

Corps

Champ
Type
Obligatoire
Description

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 ₿

Champ
Type
Description

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_price

Sortie 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

Champ
Type
Description

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

À propos

Définir le prix par jour sur votre offre SPOT

En-têtes

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Type de contenu

chaîne

Oui

Doit être application/json

Corps

Champ
Type
Obligatoire
Description

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

Champ
Type
Description

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

À 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

Champ
Type
Obligatoire
Description

auth

chaîne

Oui

Jeton API

Type de contenu

chaîne

Oui

Doit être application/json

Corps

Champ
Type
Obligatoire
Description

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

Champ
Type
Description

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 ?