API

Introducción

CLORE.AI la API se puede usar para automatizar despliegues de tus cargas de trabajo en CLORE.AI

Primero necesitas obtener una clave API alt text alt text


Respuestas de la API

Las respuestas se devuelven en formato JSON, pueden tener campos diferentes

El campo que siempre se devuelve es code, que indica el estado

campo code

código
Descripción

0

NORMAL

1

ERROR DE BASE DE DATOS

2

DATOS DE ENTRADA NO VÁLIDOS

3

TOKEN DE API NO VÁLIDO

4

ENDPOINT NO VÁLIDO

5

LÍMITE EXCEDIDO de 1 solicitud/segundo

6

Error especificado en error campo


Endpoints

1. carteras

Acerca de

Devuelve carteras y saldos

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Salida

Campo
Tipo
Descripción

código

int

Código de estado

carteras

[]string

Array de carteras

Ejemplo

Entrada:

curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/wallets'

Salida:

{
  "wallets": [
    {
      "name": "bitcoin",
      "deposit": "tb1q6erw7v02t7hakgmlcl4wfnlykzqj05alndruwr",
      "balance": 0.00153176,
      "withdrawal_fee": 0.0001
    }
  ],
  "code": 0
}

2. mis_servidores

Acerca de

Devuelve tus servidores que estás proporcionando a clore.ai mercado

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Salida

Campo
Tipo
Descripción

código

int

Código de estado

límite

int

Número máximo de servidores que puedes poseer

servidores

[]string

Array de servidores

servers[x].name

cadena

Nombre de servidor seleccionado por el usuario

servers[x].connected

cadena

Si el servidor alguna vez se conectó a clore.ai

servers[x].visibility

cadena

Visibilidad en el mercado

servers[x].pricing

[]string

Precio/día bajo demanda

servers[x].online

bool

Si el servidor está en línea

servers[x].min_spot_pricing

[]string

Precio mínimo/día para alquilar en el mercado spot

servers[x].init_token

cadena

Token de inicialización

servers[x].specs

[]string

Especificaciones del servidor

Ejemplo

Entrada:

curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/my_servers'

Salida:

{
  "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 aún no implementado

3. configuracion_servidor

Acerca de

Obtener la configuración de un servidor específico

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Content-type

cadena

Debe ser application/json

Cuerpo

Campo
Tipo
Obligatorio
Descripción

server_name

cadena

Nombre del servidor

Salida

Campo
Tipo
Descripción

código

int

Código de estado

creation_completed

bool

Si la creación del servidor está completa

config

[]string

Configuración del servidor

config.name

cadena

Nombre de servidor seleccionado por el usuario

config.connected

bool

Si el servidor alguna vez se conectó a clore.ai

config.visibility

cadena

Visibilidad en el mercado

config.pricing

[]string

Precio/día bajo demanda

config.spot_pricing

[]string

Precio mínimo/día para alquilar en el mercado spot

config.mrl

int

Duración máxima de alquiler en horas

config.online

bool

Si el servidor está en línea

config.initialized

bool

Si el servidor alguna vez se conectó a clore.ai

config.id

int

ID único del servidor

config.rental_status

int

0 - no alquilado | 1 - Alquilado en mercado spot | 2 - Alquilado bajo demanda

config.specs

[]string

Especificaciones del servidor

config.background_job

[]string

Trabajo en segundo plano cuando no está alquilado

Ejemplo

Entrada:

curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "server_name":"Jan Vykydal"
}' 'https://api.clore.ai/v1/server_config'

Salida:

{
  "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 aún no implementado

4. mercado

Acerca de

Obtener mercado

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Salida

Campo
Tipo
Descripción

código

int

Código de estado

mis_servidores

[]string

Array de IDs de servidores que estás proporcionando a clore.ai (no se puede alquilar)

servidores

[]string

Array de servidores públicos en el mercado

servers[x].id

int

ID único del servidor

servers[x].owner

int

ID único del propietario

servers[x].mrl

int

Duración máxima de alquiler en horas

servers[x].price.on_demand

[]string

Precio bajo demanda por día

servers[x].spot

[]string

Precio mínimo del mercado spot por día

servers[x].rented

bool

Si el servidor está alquilado bajo demanda

servers[x].specs

[]string

Especificaciones del servidor

Ejemplo

Obtener mercado

Entrada:

curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/marketplace'

Salida:

{
  "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. mis_pedidos

Acerca de

Obtener tus pedidos

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Cadena de consulta

Campo
Tipo
Obligatorio
Descripción

return_completed

bool

No

Devolver pedidos completados (expirados)

Salida

Campo
Tipo
Descripción

código

int

Código de estado

límite

int

Recuento máximo de pedidos activos

pedidos

[]string

Array de pedidos

orders[x].id

int

ID único del pedido

orders[x].fee

float

Tarifa (%) pagada a clore.ai

orders[x].creation_fee

float

Tarifa de creación pagada a clore.ai

orders[x].price

float

Precio del pedido (costo) por día

orders[x].mrl

int

Duración máxima de alquiler del pedido en segundos

orders[x].image

cadena

Imagen de docker utilizada

orders[x].currency

cadena

Moneda utilizada para facturación

orders[x].spend

float

Dinero gastado en el pedido

orders[x].ct

int

Hora de creación (tiempo UNIX)

orders[x].p

int

Clúster proxy actualmente usado

orders[x].specs

[]string

Especificaciones del servidor

orders[x].si

int

ID único del servidor

orders[x].pub_cluster

[]string

Puntos finales públicos con puertos reenviados

orders[x].tcp_ports

[]string

Reenvío de puertos TCP

orders[x].http_port

cadena

Puerto del contenedor reenviado a través del proxy HTTPS

orders[x].spot

bool

Indicación de que es un pedido spot

orders[x].expired

bool

Indicación de que el pedido ha expirado

Entrada:

curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/my_orders?return_completed=true'

Salida:

{
  "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. mercado_spot

Acerca de

Obtener el mercado spot para un servidor específico

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Cadena de consulta

Campo
Tipo
Obligatorio
Descripción

mercado

int

ID único del servidor

Salida

Campo
Tipo
Descripción

código

int

Código de estado

existe

bool

Verificación de que el mercado existe

mercado

objeto

Mercado

market.offers

array

Ofertas de alquiler para el servidor

market.offers[x].offer_id

int

ID único de la oferta

market.offers[x].bid

float

Precio ofertado por día

market.offers[x].active

bool

Esta oferta se está usando actualmente

market.offers[x].my

bool

Esta oferta es mía

market.server

objeto

Información del servidor

market.server.min_pricing

objeto

Precio mínimo de oferta por día

market.server.mrl

int

Duración máxima de alquiler en segundos

market.server.visibility

cadena

Solo puedes crear ofertas cuando la visibilidad es pública

market.server.online

bool

El servidor está en línea

Entrada:

curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/spot_marketplace?market=6'

Salida:

{
  "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. establecer_configuracion_servidor

Acerca de

Configurar ajustes del servidor que estás proporcionando en clore.ai mercado

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Content-type

cadena

Debe ser application/json

Cuerpo

Campo
Tipo
Obligatorio
Descripción

nombre

cadena

Nombre de servidor seleccionado por el usuario

disponibilidad

bool

Puede el servidor ser alquilado

mrl

int

Duración máxima de alquiler del servidor

on_demand

float

Precio por día para tu servidor bajo demanda

spot

float

Precio mínimo por día para oferta SPOT

Salida

Campo
Tipo
Descripción

código

int

Código de estado

Ejemplo

Vamos a crear una prueba de envío para una transacción enviada desde la cartera actual.

Entrada:

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'

Salida:

{
  "code": 0
}

8. establecer_precio_spot

Acerca de

Establecer precio por día en tu oferta de mercado SPOT

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Content-type

cadena

Debe ser application/json

Cuerpo

Campo
Tipo
Obligatorio
Descripción

order_id

int

ID único de la oferta

desired_price

float

Tu precio ofrecido por día

Ejemplo

Intentemos actualizar el precio del mercado spot

Entrada 1 (La reducción fue demasiado grande):

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'

Salida posible 1 (La reducción fue demasiado grande): Puedes bajar el precio de la oferta spot como máximo en 0.00000100 ₿

Campo
Tipo
Descripción

código

int

Código de estado

error

cadena

Campo de descripción del error

max_step

float

Valor más bajo al que actualmente puedes bajar el precio

{
    "error":"exceeded_max_step",
    "max_step":0.0000032,
    "code":6
}

Entrada 2 (Reducción de precio válida):

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'

Salida posible 2 (Reducción de precio válida):

{
    "code": 0
}

Entrada 3 (Bajar el precio aún más después de enviar la Entrada 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

Salida posible 3 (Bajar el precio aún más después de enviar la Entrada 2): Puedes bajar el precio spot una vez cada 600 segundos

Campo
Tipo
Descripción

código

int

Código de estado

error

cadena

Campo de descripción del error

time_to_lowering

float

Tiempo restante (seg) para la siguiente posibilidad de bajar el precio

{
    "error":"can_lower_every_600_seconds",
    "time_to_lowering":513,
    "code":6
}

9. cancelar_pedido

Acerca de

Establecer precio por día en tu oferta de mercado SPOT

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Content-type

cadena

Debe ser application/json

Cuerpo

Campo
Tipo
Obligatorio
Descripción

id

int

ID único de pedido/oferta

incidencia

cadena

No

Si has encontrado algún problema con el servidor puedes reportarlo al clore.ai equipo, máximo 2048 caracteres

Salida

Campo
Tipo
Descripción

código

int

Código de estado

Ejemplo

Cancelar pedido/oferta

Entrada: En este ejemplo estamos reportando problemas con la GPU #1, si no tienes problemas, no incluyas el campo issue. Puedes escribir cualquier mensaje en el campo de texto y lo investigaremos

curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "id":39,
    "issue":"GPU #1 Se sobrecalentaba y reducía rendimiento"
}' 'https://api.clore.ai/v1/cancel_order'

Salida:

{
  "code": 0
}

10. crear_pedido

Acerca de

Puedes crear una oferta spot o un pedido bajo demanda con este endpoint Este endpoint también permite sólo 1 solicitud cada 5 segundos

Encabezados

Campo
Tipo
Obligatorio
Descripción

auth

cadena

Token de API

Content-type

cadena

Debe ser application/json

Cuerpo

Campo
Tipo
Obligatorio
Descripción

moneda

cadena

Nombre de la moneda

imagen

cadena

Imagen válida en dockerhub

servidor_a_alquilar

int

ID del servidor que quieres alquilar

tipo

cadena

bajo-demanda O spot

precio_spot

float

Depende

Precio ofrecido por día en el mercado spot, requerido al crear una orden spot

puertos

objeto

No

Configuración de reenvío de puertos, máximo 5 registros

env

objeto

No

Variables de entorno, limitadas a 12000 caracteres en total cuando se convierten a cadena. Nombre de variable - máximo 128 símbolos Valor de variable - máximo 1536 símbolos

jupyter_token

cadena

No

Token de Jupyter para imágenes que tienen notebooks jupyter, máximo 32 caracteres *

ssh_key

cadena

No

Clave SSH para imágenes con SSH, máximo 3072 caracteres *

ssh_password

cadena

No

Contraseña SSH para imágenes con SSH, máximo 32 caracteres *

comando

cadena

No

El comando se ejecutará en el servidor después de la creación del pedido

precio_requerido

float

No

Especifica el precio para iniciar el pedido; si el propietario de la máquina cambia el precio, entonces el pedido no se iniciará (solo on demand)

autossh_entrypoint

bool

No

Usar el entrypoint de clore.ai, que despliega automáticamente el servidor SSH y personalizado /root/onstart.sh script

* En los campos marcados con asterisco sólo puedes introducir caracteres de este grupo regexp /^[a-zA-Z0-9\s-=.@+/]+$/

Salida

Campo
Tipo
Descripción

código

int

Código de estado

Ejemplo

Entrada 1 (Crear oferta 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'

Salida 1 (Crear oferta spot):

{
  "code":0
}

Entrada 2 (Crear pedido bajo demanda):

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'

Salida 2 (Crear pedido bajo demanda):

{
  "code":0
}

Última actualización

¿Te fue útil?