Set the company's spend limits
Sets some or all of the authenticated company’s monthly spend limits and auto-reload; anything left out keeps its value, and a null limit is no limit. Turning auto-reload on records the merchant’s consent to the authorization version sent; turning it off withdraws it.
curl --request PATCH \
--url https://api.fluid.app/api/settings/billing/usage-controls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"limits_enabled": true,
"ai_limit_cents": 150000,
"studios_limit_cents": 75000,
"ai_daily_limit_cents": 10000,
"auto_reload": true,
"reload_authorization_version": "2026-09-26",
"auto_reload_threshold_cents": 5000,
"auto_reload_amount_cents": 20000
}
'import requests
url = "https://api.fluid.app/api/settings/billing/usage-controls"
payload = {
"limits_enabled": True,
"ai_limit_cents": 150000,
"studios_limit_cents": 75000,
"ai_daily_limit_cents": 10000,
"auto_reload": True,
"reload_authorization_version": "2026-09-26",
"auto_reload_threshold_cents": 5000,
"auto_reload_amount_cents": 20000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
limits_enabled: true,
ai_limit_cents: 150000,
studios_limit_cents: 75000,
ai_daily_limit_cents: 10000,
auto_reload: true,
reload_authorization_version: '2026-09-26',
auto_reload_threshold_cents: 5000,
auto_reload_amount_cents: 20000
})
};
fetch('https://api.fluid.app/api/settings/billing/usage-controls', 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://api.fluid.app/api/settings/billing/usage-controls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'limits_enabled' => true,
'ai_limit_cents' => 150000,
'studios_limit_cents' => 75000,
'ai_daily_limit_cents' => 10000,
'auto_reload' => true,
'reload_authorization_version' => '2026-09-26',
'auto_reload_threshold_cents' => 5000,
'auto_reload_amount_cents' => 20000
]),
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://api.fluid.app/api/settings/billing/usage-controls"
payload := strings.NewReader("{\n \"limits_enabled\": true,\n \"ai_limit_cents\": 150000,\n \"studios_limit_cents\": 75000,\n \"ai_daily_limit_cents\": 10000,\n \"auto_reload\": true,\n \"reload_authorization_version\": \"2026-09-26\",\n \"auto_reload_threshold_cents\": 5000,\n \"auto_reload_amount_cents\": 20000\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.fluid.app/api/settings/billing/usage-controls")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"limits_enabled\": true,\n \"ai_limit_cents\": 150000,\n \"studios_limit_cents\": 75000,\n \"ai_daily_limit_cents\": 10000,\n \"auto_reload\": true,\n \"reload_authorization_version\": \"2026-09-26\",\n \"auto_reload_threshold_cents\": 5000,\n \"auto_reload_amount_cents\": 20000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing/usage-controls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"limits_enabled\": true,\n \"ai_limit_cents\": 150000,\n \"studios_limit_cents\": 75000,\n \"ai_daily_limit_cents\": 10000,\n \"auto_reload\": true,\n \"reload_authorization_version\": \"2026-09-26\",\n \"auto_reload_threshold_cents\": 5000,\n \"auto_reload_amount_cents\": 20000\n}"
response = http.request(request)
puts response.read_body{
"usage_controls": {
"limits_enabled": true,
"auto_reload": true,
"reload_caps": {
"daily_cents": 50000,
"monthly_cents": 500000
},
"limits": {
"orders": null,
"ai": 150000,
"hosting": null,
"studios": 75000
},
"daily_limits": {
"ai": 10000,
"studios": null
},
"reload_threshold_cents": 5000,
"reload_amount_cents": 20000,
"reload_authorized": true,
"reload_authorization": {
"version": "2026-09-26",
"text": "You authorize Fluid to charge the card or debit the bank account on file for the reload amount you set whenever your usage credits fall below your threshold, up to your daily and monthly reload limits. Each reload is a purchase of usage credits on the purchase terms. You can turn auto-reload off at any time. A declined or returned reload pauses further reloads until you change your payment method or turn auto-reload off and on again."
},
"reload_block": null
},
"status": 200,
"meta": {
"request_id": "f3b8c2d1-6a4e-4f7b-9c1d-2e5a8b7c4d90",
"timestamp": "2026-09-30T14:05:11Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer token authentication
Body
Whether the monthly spend limits are on.
Whether a low balance reloads itself; turning it on needs reload_authorization_version.
The auto-reload authorization version the merchant was shown and accepts.
Reload below this spendable balance
x >= 1What one reload buys
x >= 1Orders and checkout; notified
x >= 1Monthly ceiling on AI
x >= 1Apps
x >= 1Monthly ceiling on Fluid Studios
x >= 1Daily ceiling on AI
x >= 1Daily ceiling on Fluid Studios
x >= 1The most auto-reload tops up in a day; null is Fluid's default.
x >= 1The most auto-reload tops up in a month; null is Fluid's default.
x >= 1Response
Success
The merchant's spend limits and auto-reload.
What the merchant has set about its own usage: spend limits, and auto-reload, which buys the reload amount with the payment method on file when the spendable balance falls below the threshold, within the reload caps, and only with its authorization on record.
Show child attributes
Show child attributes
curl --request PATCH \
--url https://api.fluid.app/api/settings/billing/usage-controls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"limits_enabled": true,
"ai_limit_cents": 150000,
"studios_limit_cents": 75000,
"ai_daily_limit_cents": 10000,
"auto_reload": true,
"reload_authorization_version": "2026-09-26",
"auto_reload_threshold_cents": 5000,
"auto_reload_amount_cents": 20000
}
'import requests
url = "https://api.fluid.app/api/settings/billing/usage-controls"
payload = {
"limits_enabled": True,
"ai_limit_cents": 150000,
"studios_limit_cents": 75000,
"ai_daily_limit_cents": 10000,
"auto_reload": True,
"reload_authorization_version": "2026-09-26",
"auto_reload_threshold_cents": 5000,
"auto_reload_amount_cents": 20000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
limits_enabled: true,
ai_limit_cents: 150000,
studios_limit_cents: 75000,
ai_daily_limit_cents: 10000,
auto_reload: true,
reload_authorization_version: '2026-09-26',
auto_reload_threshold_cents: 5000,
auto_reload_amount_cents: 20000
})
};
fetch('https://api.fluid.app/api/settings/billing/usage-controls', 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://api.fluid.app/api/settings/billing/usage-controls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'limits_enabled' => true,
'ai_limit_cents' => 150000,
'studios_limit_cents' => 75000,
'ai_daily_limit_cents' => 10000,
'auto_reload' => true,
'reload_authorization_version' => '2026-09-26',
'auto_reload_threshold_cents' => 5000,
'auto_reload_amount_cents' => 20000
]),
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://api.fluid.app/api/settings/billing/usage-controls"
payload := strings.NewReader("{\n \"limits_enabled\": true,\n \"ai_limit_cents\": 150000,\n \"studios_limit_cents\": 75000,\n \"ai_daily_limit_cents\": 10000,\n \"auto_reload\": true,\n \"reload_authorization_version\": \"2026-09-26\",\n \"auto_reload_threshold_cents\": 5000,\n \"auto_reload_amount_cents\": 20000\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.fluid.app/api/settings/billing/usage-controls")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"limits_enabled\": true,\n \"ai_limit_cents\": 150000,\n \"studios_limit_cents\": 75000,\n \"ai_daily_limit_cents\": 10000,\n \"auto_reload\": true,\n \"reload_authorization_version\": \"2026-09-26\",\n \"auto_reload_threshold_cents\": 5000,\n \"auto_reload_amount_cents\": 20000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing/usage-controls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"limits_enabled\": true,\n \"ai_limit_cents\": 150000,\n \"studios_limit_cents\": 75000,\n \"ai_daily_limit_cents\": 10000,\n \"auto_reload\": true,\n \"reload_authorization_version\": \"2026-09-26\",\n \"auto_reload_threshold_cents\": 5000,\n \"auto_reload_amount_cents\": 20000\n}"
response = http.request(request)
puts response.read_body{
"usage_controls": {
"limits_enabled": true,
"auto_reload": true,
"reload_caps": {
"daily_cents": 50000,
"monthly_cents": 500000
},
"limits": {
"orders": null,
"ai": 150000,
"hosting": null,
"studios": 75000
},
"daily_limits": {
"ai": 10000,
"studios": null
},
"reload_threshold_cents": 5000,
"reload_amount_cents": 20000,
"reload_authorized": true,
"reload_authorization": {
"version": "2026-09-26",
"text": "You authorize Fluid to charge the card or debit the bank account on file for the reload amount you set whenever your usage credits fall below your threshold, up to your daily and monthly reload limits. Each reload is a purchase of usage credits on the purchase terms. You can turn auto-reload off at any time. A declined or returned reload pauses further reloads until you change your payment method or turn auto-reload off and on again."
},
"reload_block": null
},
"status": 200,
"meta": {
"request_id": "f3b8c2d1-6a4e-4f7b-9c1d-2e5a8b7c4d90",
"timestamp": "2026-09-30T14:05:11Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}