Appearance
Catalog beta
The catalog lists every product family you may order, with its orderable products (public, available, no coupon needed), their prices and - for a team - the choices for the order attributes.
| Method | Path | Query |
|---|---|---|
| GET | /catalog | ?team= (optional) and the filters |
?team= must be one of your teams (owner or member), otherwise 404. Product families and single plans that are still being rolled out (e.g. GPU containers) are only listed for the users and teams in the rollout.
Request
bash
curl "https://console.anikeen.com/api/v1/catalog?team=01JA…" \
-H "Authorization: Bearer $ANIKEEN_TOKEN" -H "Accept: application/json"php
$catalog = AnikeenConsole::withToken($token)->catalog($teamId);
$plans = $catalog->products('server');Response
json
{
"data": [{
"family": "server",
"name": "Server",
"products": [{
"id": "01JC…", "name": "VPS S", "description": "…", "unit": "hour",
"list_price": 0.02, "discount_percent": null, "price": 0.02, "gross_price": 0.0238,
"monthly_cap": 14.4, "gross_monthly_cap": 17.14,
"monthly_price": 14.4, "gross_monthly_price": 17.14,
"features": {…},
"details": {"vcores": 2, "memory_mb": 2048, "disk_gb": 40, "traffic_tb": 20}
}],
"options": null
}],
"team": null,
"vat_rate": 19.0
}Prices
| Field | Meaning |
|---|---|
unit | the billing unit: hour, day, month, … |
list_price | the list price per unit, net |
discount_percent | the discount of a reseller team, else null |
price | your price per unit, net |
gross_price | price with vat_rate |
monthly_cap, gross_monthly_cap | hourly and daily prices stop at this amount per month |
monthly_price, gross_monthly_price | what a month costs at most at the price shown (see below) |
monthly_price is net and rounded to cents:
| Billing unit | monthly_price |
|---|---|
| hourly, daily | the monthly_cap |
| monthly | the price |
| yearly | a twelfth of the price |
| weekly | price / 7 × 31 |
| one-time, per piece | the price itself |
The price filters compare this number.
With and without a team
Without ?team= | With ?team={team} | |
|---|---|---|
| Prices | list price | the team's price (a reseller team: its reseller price and discount_percent) |
vat_rate | 19 % | the VAT rate of the team owner's billing address when it can be read, else 19 % |
options | null | per family: the choices for the order attributes - locations, images, templates, networks, the team's SSH keys, servers, contacts, … |
team | null | id, name, reseller, coupons_allowed, may_order, managed_by_app |
team.may_order is true when you are the owner, or the owner allows members to order - never for a team managed by another app.
details (per product) and options (per family) are described per family on Order attributes.
Scopes
A token with console-* scopes only (an app's, or a fine-grained personal access token) lists just the families those scopes cover; :read is enough. See Scopes.
Filters
Optional query parameters narrow the products of every family:
- Products that do not match are left out, then families without products. (A family that has no products at all stays listed unless a product filter is set.)
optionsstay as they are; the response keeps its shape.- A product without the compared value (no GPU, no
vcores, …) never matches a filter on it. - Bad values answer
422with field errors.
| Parameter | Values | Keeps products |
|---|---|---|
family | alias or comma list (container, server,container) | of these families (unknown aliases: 422; families your token does not cover stay hidden) |
gpu | true / false (also 1 / 0) | with a GPU (details.gpu) / without one; families without GPUs (servers, domains, …) have none |
gpu_vendor | nvidia, amd, intel | whose details.gpu.vendor is this vendor |
gpu_model | text, max. 100 characters | whose details.gpu.model contains it (case-insensitive) |
gpu_mode | shared, exclusive | with this GPU mode |
gpu_min_vram_gb | integer ≥ 0 | with details.gpu.vram_gb at least this |
gpu_min_count | integer ≥ 0 | with at least this many GPUs (details.gpu.count) |
min_vcores | integer ≥ 0 | with details.vcores at least this |
min_memory_mb | integer ≥ 0 | with details.memory_mb at least this |
min_disk_gb | integer ≥ 0 | with details.disk_gb at least this |
min_price, max_price | number ≥ 0 | with monthly_price (net, at the team's price) within the range, both ends included |
sort | price, -price | sorted by monthly_price ascending / descending within each family (default: as listed, by price) |
With ?team= a reseller team's prices are its reseller prices, so max_price compares the discounted monthly_price; without a team, the list price.
The reseller catalog accepts the same filters.
Examples
NVIDIA GPU containers with at least 24 GB VRAM, at most 150 € net per month, cheapest first:
http
GET /v1/catalog?team=01JC…&gpu=true&gpu_vendor=nvidia&gpu_min_vram_gb=24&max_price=150&sort=priceServers with at least 4 vCores and 8 GB memory, most expensive first:
http
GET /v1/catalog?family=server&min_vcores=4&min_memory_mb=8192&sort=-priceWith the SDK:
php
$gpuPlans = $console->catalog($team, [
'gpu' => true,
'gpu_vendor' => 'nvidia',
'max_price' => 150,
'sort' => 'price',
])->products('container');