Docs
API 2026-05-27.dahlia Dashboard

API reference

6 operations, with parameters and examples.

A reserve keeps part of a store's sales back for a time to cover refunds and disputes. Reserve plans, holds and releases are read-only views of the reserves on the store's account, the same routes, lists and fields for every store. A hold is released on its release date, or earlier when Fluveo's operators release it; a hold made on its own, with no sale, stays until Fluveo releases it. A change can also come as a reserve.* event (see Events). The balance's risk_reserved shows what the reserve holds. A store whose reserve follows no plan has an empty plans list.

Send every request to https://api.fluveo.com/v1 with your secret key as a Bearer token. This page lists only what Fluveo serves; the OpenAPI file holds the same operations.

Lists the amounts held back under the store's reserve plans, newest first. Filters: reserve_plan, is_releasable, currency, source_charge, reserve_release#

GET/v1/reserve/holdsrak_reserve_read

A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.

Query parameters
  • currencystringOptional

    Only holds in this currency.

  • ending_beforestringOptional

    Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.

  • is_releasablestringOptional

    true for holds that may be released now, false for the others.

  • limitintegerOptional

    How many objects to return, from 1 to 100. Default 10.

  • reserve_planstringOptional

    Only the holds of this reserve plan.

  • reserve_releasestringOptional

    Only the holds this reserve release released money from.

  • source_chargestringOptional

    Only the holds taken from this charge (ch_...).

  • starting_afterstringOptional

    Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.

Headers
  • Fluveo-VersionenumOptional

    Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.

    One of: 2026-05-27.dahlia.

Request
curl https://api.fluveo.com/v1/reserve/holds \
  -H "Authorization: Bearer sk_test_..."
const response = await fetch("https://api.fluveo.com/v1/reserve/holds", {
  method: "GET",
  headers: {
    "Authorization": "Bearer sk_test_...",
  },
});
console.log(await response.json());
import requests

response = requests.get(
    "https://api.fluveo.com/v1/reserve/holds",
    headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())
<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/holds");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_...",
    ],
]);
echo curl_exec($ch);

Lists the reserve plans on the store's account. Filter: status#

GET/v1/reserve/plansrak_reserve_read

A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.

Query parameters
  • ending_beforestringOptional

    Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.

  • limitintegerOptional

    How many objects to return, from 1 to 100. Default 10.

  • starting_afterstringOptional

    Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.

  • statusstringOptional

    Filter by status.

Headers
  • Fluveo-VersionenumOptional

    Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.

    One of: 2026-05-27.dahlia.

Request
curl https://api.fluveo.com/v1/reserve/plans \
  -H "Authorization: Bearer sk_test_..."
const response = await fetch("https://api.fluveo.com/v1/reserve/plans", {
  method: "GET",
  headers: {
    "Authorization": "Bearer sk_test_...",
  },
});
console.log(await response.json());
import requests

response = requests.get(
    "https://api.fluveo.com/v1/reserve/plans",
    headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())
<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/plans");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_...",
    ],
]);
echo curl_exec($ch);

Lists the releases of the store's reserve holds, newest first. Filters: reserve_hold, reserve_plan, currency#

GET/v1/reserve/releasesrak_reserve_read

A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.

Query parameters
  • currencystringOptional

    Only releases in this currency.

  • ending_beforestringOptional

    Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.

  • limitintegerOptional

    How many objects to return, from 1 to 100. Default 10.

  • reserve_holdstringOptional

    Only the releases of this reserve hold.

  • reserve_planstringOptional

    Only the releases of this reserve plan's holds.

  • starting_afterstringOptional

    Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.

Headers
  • Fluveo-VersionenumOptional

    Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.

    One of: 2026-05-27.dahlia.

Request
curl https://api.fluveo.com/v1/reserve/releases \
  -H "Authorization: Bearer sk_test_..."
const response = await fetch("https://api.fluveo.com/v1/reserve/releases", {
  method: "GET",
  headers: {
    "Authorization": "Bearer sk_test_...",
  },
});
console.log(await response.json());
import requests

response = requests.get(
    "https://api.fluveo.com/v1/reserve/releases",
    headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())
<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/releases");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_...",
    ],
]);
echo curl_exec($ch);

Retrieves one reserve hold. Expand: reserve_plan, source_charge#

GET/v1/reserve/holds/{id}rak_reserve_read

A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.

Path parameters
  • idstringRequired

    The reserve hold's id.

Headers
  • Fluveo-VersionenumOptional

    Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.

    One of: 2026-05-27.dahlia.

Request
curl https://api.fluveo.com/v1/reserve/holds/reshold_123 \
  -H "Authorization: Bearer sk_test_..."
const response = await fetch("https://api.fluveo.com/v1/reserve/holds/reshold_123", {
  method: "GET",
  headers: {
    "Authorization": "Bearer sk_test_...",
  },
});
console.log(await response.json());
import requests

response = requests.get(
    "https://api.fluveo.com/v1/reserve/holds/reshold_123",
    headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())
<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/holds/reshold_123");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_...",
    ],
]);
echo curl_exec($ch);

Retrieves one reserve plan of the store's account#

GET/v1/reserve/plans/{id}rak_reserve_read

A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.

Path parameters
  • idstringRequired

    The reserve plan's id.

Headers
  • Fluveo-VersionenumOptional

    Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.

    One of: 2026-05-27.dahlia.

Request
curl https://api.fluveo.com/v1/reserve/plans/resplan_123 \
  -H "Authorization: Bearer sk_test_..."
const response = await fetch("https://api.fluveo.com/v1/reserve/plans/resplan_123", {
  method: "GET",
  headers: {
    "Authorization": "Bearer sk_test_...",
  },
});
console.log(await response.json());
import requests

response = requests.get(
    "https://api.fluveo.com/v1/reserve/plans/resplan_123",
    headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())
<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/plans/resplan_123");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_...",
    ],
]);
echo curl_exec($ch);

Retrieves one reserve release. Expand: reserve_plan, reserve_hold#

GET/v1/reserve/releases/{id}rak_reserve_read

A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.

Path parameters
  • idstringRequired

    The reserve release's id.

Headers
  • Fluveo-VersionenumOptional

    Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.

    One of: 2026-05-27.dahlia.

Request
curl https://api.fluveo.com/v1/reserve/releases/resrel_123 \
  -H "Authorization: Bearer sk_test_..."
const response = await fetch("https://api.fluveo.com/v1/reserve/releases/resrel_123", {
  method: "GET",
  headers: {
    "Authorization": "Bearer sk_test_...",
  },
});
console.log(await response.json());
import requests

response = requests.get(
    "https://api.fluveo.com/v1/reserve/releases/resrel_123",
    headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())
<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/releases/resrel_123");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_...",
    ],
]);
echo curl_exec($ch);