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

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
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
carterasAcerca de
Devuelve carteras y saldos
Encabezados
auth
cadena
Sí
Token de API
Salida
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
mis_servidoresAcerca de
Devuelve tus servidores que estás proporcionando a clore.ai mercado
Encabezados
auth
cadena
Sí
Token de API
Salida
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].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
configuracion_servidorAcerca de
Obtener la configuración de un servidor específico
Encabezados
auth
cadena
Sí
Token de API
Content-type
cadena
Sí
Debe ser application/json
Cuerpo
server_name
cadena
Sí
Nombre del servidor
Salida
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.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.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
mercadoAcerca de
Obtener mercado
Encabezados
auth
cadena
Sí
Token de API
Salida
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
mis_pedidosAcerca de
Obtener tus pedidos
Encabezados
auth
cadena
Sí
Token de API
Cadena de consulta
return_completed
bool
No
Devolver pedidos completados (expirados)
Salida
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].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
mercado_spotAcerca de
Obtener el mercado spot para un servidor específico
Encabezados
auth
cadena
Sí
Token de API
Cadena de consulta
mercado
int
Sí
ID único del servidor
Salida
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
establecer_configuracion_servidorAcerca de
Configurar ajustes del servidor que estás proporcionando en clore.ai mercado
Encabezados
auth
cadena
Sí
Token de API
Content-type
cadena
Sí
Debe ser application/json
Cuerpo
nombre
cadena
Sí
Nombre de servidor seleccionado por el usuario
disponibilidad
bool
Sí
Puede el servidor ser alquilado
mrl
int
Sí
Duración máxima de alquiler del servidor
on_demand
float
Sí
Precio por día para tu servidor bajo demanda
spot
float
Sí
Precio mínimo por día para oferta SPOT
Salida
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
establecer_precio_spotAcerca de
Establecer precio por día en tu oferta de mercado SPOT
Encabezados
auth
cadena
Sí
Token de API
Content-type
cadena
Sí
Debe ser application/json
Cuerpo
order_id
int
Sí
ID único de la oferta
desired_price
float
Sí
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 ₿
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_priceSalida 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
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
cancelar_pedidoAcerca de
Establecer precio por día en tu oferta de mercado SPOT
Encabezados
auth
cadena
Sí
Token de API
Content-type
cadena
Sí
Debe ser application/json
Cuerpo
id
int
Sí
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
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
crear_pedidoAcerca 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
auth
cadena
Sí
Token de API
Content-type
cadena
Sí
Debe ser application/json
Cuerpo
moneda
cadena
Sí
Nombre de la moneda
imagen
cadena
Sí
Imagen válida en dockerhub
servidor_a_alquilar
int
Sí
ID del servidor que quieres alquilar
tipo
cadena
Sí
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
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?