Skip to content
Coritan Docs

Client API: Features

The dashboard areas this storefront shows, and whether account plans apply to your account.

View as Markdown

The dashboard areas this storefront shows, and whether account plans apply to your account. Also what a visitor reads before signing in: the plans with their prices and limits, what can be ordered right now, and the figures the terms state. Needs no auth.

Base URL: https://api.coritan.com/api/v1. Paths below are complete.

To try these requests in the browser, open the interactive Client API reference.

Method Path Summary
GET /api/v1/availability What can be ordered right now
GET /api/v1/features The dashboard areas this storefront shows, and whether account plans apply
GET /api/v1/plans The account plans, their prices and what each allows
GET /api/v1/terms-facts The figures our terms and pricing pages state

GET /api/v1/availability

What can be ordered right now. No sign in needed.

products has an entry for each product GET /api/v1/products lists, by its slug: orderable is whether we would accept an order today, and reason says why not. It reads the same checks an order does: a plan that is not open, a server plan with no room, mail with no capacity, a region with no storage and a floating IP with no stock. deploy-usage stands for App Deployment. locations lists each place a server can be sold, with the hardware tiers that have room there now. storage_regions lists the regions with Object Storage and whether each is open. mail and relay say whether a mail cluster can take a new service, and whether we sell the product at all. performance.stock is whether any Performance plan can be ordered, and ips whether floating IP addresses are in stock, for each family. Answers are reused for 30 seconds.

Status Meaning
200 Success.

Fields of a 200 response:

Field Type Description
products Products Each product we list, by its slug. deploy-usage stands for App Deployment.
locations array of LocationState
locations[].code string The location's airport code, such as fra
locations[].name string
locations[].orderable boolean Whether at least one server plan can be ordered here now
locations[].tiers array of string The hardware tiers with a plan in stock here, such as budget or performance
storage_regions array of StorageRegionState
storage_regions[].code string
storage_regions[].name string
storage_regions[].approved boolean Whether Object Storage is open in this region. False while the region is being set up.
mail MailState
mail.cluster_active boolean Whether a mail cluster is active and can take a new service
mail.enabled boolean Whether we sell the product at all right now
relay MailState
relay.cluster_active boolean Whether a mail cluster is active and can take a new service
relay.enabled boolean Whether we sell the product at all right now
performance StockState Whether any Performance plan can be ordered now
performance.stock boolean
ips IpState
ips.stock boolean Whether any floating IP address is in stock
ips.ipv4 boolean Whether an IPv4 address is in stock
ips.ipv6 boolean Whether an IPv6 address is in stock

The dashboard areas this storefront shows, and whether account plans apply

Section titled The dashboard areas this storefront shows, and whether account plans apply

GET /api/v1/features

The dashboard areas this storefront shows, and whether account plans apply. No sign in needed.

The answer is {flags: {name: true or false}, plans_v2, gates}. flags names each area of the dashboard (vps, mail, storage and the rest) and whether it shows. plans_v2 is true when the Free, Pro and Business plans, their limits and their prompts apply: to your account when the request carries your session, and otherwise to someone who signs up now. A token that is not valid reads as no session.

gates says whether what a page may promise is there now: mail_enabled (we sell Mail Hosting and SMTP Relay), mail_cluster_active and relay_cluster_active (a mail cluster can take a new service), storage_regions (the codes of regions where Object Storage is open), ips_stock (a floating IP address is in stock), referrals (accounts get a referral link), github_app (App Deployment can connect GitHub), snapshots (Snapshot Storage is on) and leads (we email each new enquiry). A gate we cannot read is false. GET /api/v1/availability has the detail for each product.

On an organization's storefront the answer is {"flags": {}, "plans_v2": false}: those storefronts keep their own switches.

Status Meaning
200 Success.

The account plans, their prices and what each allows

Section titled The account plans, their prices and what each allows

GET /api/v1/plans

The account plans, their prices and what each allows. No sign in needed.

Free, Pro, Business and Enterprise, in that order, with the same limits as the signed-in GET /api/v1/account/plan. stage is who plans apply to (off, staff, new or all), and open whether they apply to someone who signs up now. While open is false, no plan has orderable true and no plan limit is checked. Prices are numbers in currency. A plan we sell through our sales team has no price. The answer is the same for everyone, so shared caches may keep it for a minute.

Status Meaning
200 Success.

Fields of a 200 response:

Field Type Description
stage string Who plans apply to: off, staff, new or all
open boolean Whether plans apply to someone who signs up now
plans array of PlanOut
plans[].key string free, plan-pro, plan-business or plan-enterprise
plans[].name string The plan's name: Free, Pro, Business or Enterprise
plans[].monthly_price number or null The price of one month, 0 for Free. Null for a plan we sell through our sales team.
plans[].yearly_price number or null The price of one year, 0 for Free. Null when the plan has no yearly price.
plans[].currency string The currency of both prices, such as USD
plans[].popular boolean The plan the catalogue highlights
plans[].orderable boolean Whether someone who signs up now can order the plan. False for Free, for a plan sold through sales, and while plans are not open.
plans[].limits Limits What the plan allows, by entitlement key: a number (-1 for unlimited), true or false for a feature, or a word for support_level. On Enterprise, the allowances an agreement sets are null.
plans[].features array of string The keys in limits that the plan switches on

The figures our terms and pricing pages state

Section titled The figures our terms and pricing pages state

GET /api/v1/terms-facts

The figures our terms and pricing pages state. No sign in needed.

Each is read from the setting or record that decides it, so a page that quotes it cannot disagree with how the platform behaves. hourly_unlock_deposit is the one deposit a prepaid account makes before it starts anything billed by the hour or by use. payment_methods and currencies list what we take now. support.first_response_targets is the reply target in minutes for each plan. tax_statement says whether invoices carry tax. domain_renewal_window_days is how early auto-renew renews a domain. retention holds how many days visit records are kept, and is left out when we cannot say.

Status Meaning
200 Success.

Fields of a 200 response:

Field Type Description
hourly_unlock_deposit MoneyOut What a prepaid account deposits once before it runs anything billed by the hour or by use
hourly_unlock_deposit.amount string An amount with two decimals, such as 10.00
hourly_unlock_deposit.currency string
payment_methods array of string The kinds of payment we take now: card, wallet, bank_debit, bank_transfer, bank_redirect, bnpl, voucher, real_time, paypal, crypto or other
currencies array of string The currencies a customer can pay in
support SupportOut
support.first_response_targets First Response Targets Minutes within which we aim to first reply to a support request, by plan key
tax_statement string One sentence on whether we add tax to invoices
domain_renewal_window_days integer or null How many days before a domain expires we renew it for an account with auto-renew on
retention object or null How many days we keep visit records: tracking_events_days and tracking_sessions_days