from meetkai_mka1 import SDK
with SDK(
bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
) as sdk:
res = sdk.sandbox.set_pricing(rates={
"standard": {
"per_hour": 0.1,
"per_gib_hour": 0.05,
},
"browser": {
"per_hour": 0.4,
"per_gib_hour": 0.05,
},
"eval-python": {
"per_hour": 0.2,
"per_gib_hour": 0.05,
},
}, allow_unpriced=False)
# Handle response
print(res)import { SDK } from "@meetkai/mka1";
const sdk = new SDK({
bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await sdk.sandbox.setPricing({
rates: {
"standard": {
perHour: 0.1,
perGibHour: 0.05,
},
"browser": {
perHour: 0.4,
perGibHour: 0.05,
},
"eval-python": {
perHour: 0.2,
perGibHour: 0.05,
},
},
});
console.log(result);
}
run();using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
using System.Collections.Generic;
var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");
SandboxPricingUpdate req = new SandboxPricingUpdate() {
Rates = new Dictionary<string, SandboxPriceRate>() {
{ "standard", new SandboxPriceRate() {
PerHour = 0.1D,
PerGibHour = 0.05D,
} },
{ "browser", new SandboxPriceRate() {
PerHour = 0.4D,
PerGibHour = 0.05D,
} },
{ "eval-python", new SandboxPriceRate() {
PerHour = 0.2D,
PerGibHour = 0.05D,
} },
},
};
var res = await sdk.Sandbox.SetPricingAsync(req);
// handle responsecurl --request PUT \
--url https://apigw.mka1.com/api/v1/sandbox/pricing \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rates": {
"standard": {
"per_hour": 0.1,
"per_gib_hour": 0.05
},
"browser": {
"per_hour": 0.4,
"per_gib_hour": 0.05
},
"eval-python": {
"per_hour": 0.2,
"per_gib_hour": 0.05
}
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
rates: {
standard: {per_hour: 0.1, per_gib_hour: 0.05},
browser: {per_hour: 0.4, per_gib_hour: 0.05},
'eval-python': {per_hour: 0.2, per_gib_hour: 0.05}
}
})
};
fetch('https://apigw.mka1.com/api/v1/sandbox/pricing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apigw.mka1.com/api/v1/sandbox/pricing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'rates' => [
'standard' => [
'per_hour' => 0.1,
'per_gib_hour' => 0.05
],
'browser' => [
'per_hour' => 0.4,
'per_gib_hour' => 0.05
],
'eval-python' => [
'per_hour' => 0.2,
'per_gib_hour' => 0.05
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apigw.mka1.com/api/v1/sandbox/pricing"
payload := strings.NewReader("{\n \"rates\": {\n \"standard\": {\n \"per_hour\": 0.1,\n \"per_gib_hour\": 0.05\n },\n \"browser\": {\n \"per_hour\": 0.4,\n \"per_gib_hour\": 0.05\n },\n \"eval-python\": {\n \"per_hour\": 0.2,\n \"per_gib_hour\": 0.05\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://apigw.mka1.com/api/v1/sandbox/pricing")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rates\": {\n \"standard\": {\n \"per_hour\": 0.1,\n \"per_gib_hour\": 0.05\n },\n \"browser\": {\n \"per_hour\": 0.4,\n \"per_gib_hour\": 0.05\n },\n \"eval-python\": {\n \"per_hour\": 0.2,\n \"per_gib_hour\": 0.05\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apigw.mka1.com/api/v1/sandbox/pricing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rates\": {\n \"standard\": {\n \"per_hour\": 0.1,\n \"per_gib_hour\": 0.05\n },\n \"browser\": {\n \"per_hour\": 0.4,\n \"per_gib_hour\": 0.05\n },\n \"eval-python\": {\n \"per_hour\": 0.2,\n \"per_gib_hour\": 0.05\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"object": "sandbox.pricing",
"rates": {
"standard": {
"per_hour": 0.1,
"per_gib_hour": 0.05
},
"browser": {
"per_hour": 0.4,
"per_gib_hour": 0.05
},
"eval-python": {
"per_hour": 0.2,
"per_gib_hour": 0.05
}
},
"updated_at": "2026-07-08T00:00:00Z",
"updated_by": "user_cluster_admin"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Establecer precios del entorno de pruebas
Reemplaza la tarjeta de tarifas de precios del sandbox. Semántica de reemplazo completo. Omitir un SKU que actualmente tiene un precio se rechaza con 422 a menos que allow_unpriced sea verdadero: un SKU sin precio no acumula gasto y su uso no puede facturarse. Una currency que difiere de la almacenada solo se guarda después de que el servicio de presupuestos la acepta como la moneda de facturación del clúster (409 cuando entra en conflicto, 503 cuando no se puede verificar). Surte efecto en la siguiente ventana del medidor sin reiniciar. Solo administradores del clúster.
from meetkai_mka1 import SDK
with SDK(
bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
) as sdk:
res = sdk.sandbox.set_pricing(rates={
"standard": {
"per_hour": 0.1,
"per_gib_hour": 0.05,
},
"browser": {
"per_hour": 0.4,
"per_gib_hour": 0.05,
},
"eval-python": {
"per_hour": 0.2,
"per_gib_hour": 0.05,
},
}, allow_unpriced=False)
# Handle response
print(res)import { SDK } from "@meetkai/mka1";
const sdk = new SDK({
bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await sdk.sandbox.setPricing({
rates: {
"standard": {
perHour: 0.1,
perGibHour: 0.05,
},
"browser": {
perHour: 0.4,
perGibHour: 0.05,
},
"eval-python": {
perHour: 0.2,
perGibHour: 0.05,
},
},
});
console.log(result);
}
run();using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
using System.Collections.Generic;
var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");
SandboxPricingUpdate req = new SandboxPricingUpdate() {
Rates = new Dictionary<string, SandboxPriceRate>() {
{ "standard", new SandboxPriceRate() {
PerHour = 0.1D,
PerGibHour = 0.05D,
} },
{ "browser", new SandboxPriceRate() {
PerHour = 0.4D,
PerGibHour = 0.05D,
} },
{ "eval-python", new SandboxPriceRate() {
PerHour = 0.2D,
PerGibHour = 0.05D,
} },
},
};
var res = await sdk.Sandbox.SetPricingAsync(req);
// handle responsecurl --request PUT \
--url https://apigw.mka1.com/api/v1/sandbox/pricing \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rates": {
"standard": {
"per_hour": 0.1,
"per_gib_hour": 0.05
},
"browser": {
"per_hour": 0.4,
"per_gib_hour": 0.05
},
"eval-python": {
"per_hour": 0.2,
"per_gib_hour": 0.05
}
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
rates: {
standard: {per_hour: 0.1, per_gib_hour: 0.05},
browser: {per_hour: 0.4, per_gib_hour: 0.05},
'eval-python': {per_hour: 0.2, per_gib_hour: 0.05}
}
})
};
fetch('https://apigw.mka1.com/api/v1/sandbox/pricing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apigw.mka1.com/api/v1/sandbox/pricing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'rates' => [
'standard' => [
'per_hour' => 0.1,
'per_gib_hour' => 0.05
],
'browser' => [
'per_hour' => 0.4,
'per_gib_hour' => 0.05
],
'eval-python' => [
'per_hour' => 0.2,
'per_gib_hour' => 0.05
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apigw.mka1.com/api/v1/sandbox/pricing"
payload := strings.NewReader("{\n \"rates\": {\n \"standard\": {\n \"per_hour\": 0.1,\n \"per_gib_hour\": 0.05\n },\n \"browser\": {\n \"per_hour\": 0.4,\n \"per_gib_hour\": 0.05\n },\n \"eval-python\": {\n \"per_hour\": 0.2,\n \"per_gib_hour\": 0.05\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://apigw.mka1.com/api/v1/sandbox/pricing")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rates\": {\n \"standard\": {\n \"per_hour\": 0.1,\n \"per_gib_hour\": 0.05\n },\n \"browser\": {\n \"per_hour\": 0.4,\n \"per_gib_hour\": 0.05\n },\n \"eval-python\": {\n \"per_hour\": 0.2,\n \"per_gib_hour\": 0.05\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apigw.mka1.com/api/v1/sandbox/pricing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rates\": {\n \"standard\": {\n \"per_hour\": 0.1,\n \"per_gib_hour\": 0.05\n },\n \"browser\": {\n \"per_hour\": 0.4,\n \"per_gib_hour\": 0.05\n },\n \"eval-python\": {\n \"per_hour\": 0.2,\n \"per_gib_hour\": 0.05\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"object": "sandbox.pricing",
"rates": {
"standard": {
"per_hour": 0.1,
"per_gib_hour": 0.05
},
"browser": {
"per_hour": 0.4,
"per_gib_hour": 0.05
},
"eval-python": {
"per_hour": 0.2,
"per_gib_hour": 0.05
}
},
"updated_at": "2026-07-08T00:00:00Z",
"updated_by": "user_cluster_admin"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Autorizaciones
Gateway auth: send Authorization: Bearer <mka1-api-key>. For multi-user server-side integrations, you can also send X-On-Behalf-Of: <external-user-id>.
Cuerpo
Actualización de la tarjeta de tarifas de reemplazo total.
Una SKU que tiene un precio y se omite aquí pasaría a no tener precio, y su
uso se registraría entonces sin costo, lo que nunca puede facturarse. Eso
se rechaza a menos que allow_unpriced indique que es intencional.
¿Esta página le ayudó?