Add capacity to a service
Buy extra ports, databases, mailboxes or automatic backups for a service you have, preview the price, remove them, and quote any order before you place it.
In the dashboard
A capacity add-on raises one limit of a service you already have, such as the number of ports on a game server, or turns on its automatic backups. Each add-on is a service of its own that renews with the service it is on, on the same date and billing cycle. You can remove it at any time. The Size and add-ons card on a server's Billing tab in App Deployment lists its add-ons, with Add… for each one you can add (Size and add-ons). Once account plans open on your account, a Cloud Compute instance and a mail service have the same card, and the Dashboard offers the add-on that raises a limit you are close to (The Dashboard). Otherwise these steps use the API. Add an add-on in the dashboard pays for it on one page.
A service billed by use has no renewal date to share, so its add-ons renew every month on their own (Add-ons on a service billed by use). You can see what an add-on costs before you add it, and the same API can price an order before you place it, with its add-ons and promo code.
What you can add
Section titled What you can add| Add-on | kind |
Goes on | One unit adds |
|---|---|---|---|
| Extra Port | container_ports |
A server on App Deployment | 1 port slot |
| Extra Database | container_databases |
A server on App Deployment whose plan limits databases | 1 database slot |
| Extra Mailbox | mail_extra_mailboxes |
The Mail Hosting service your plan includes | 1 mailbox |
Extra Port, Extra Database and Extra Mailbox take a quantity. A service takes at most 20 units of each kind, counting all its add-ons.
A server you bought from a storefront takes add-ons from that storefront, not from this page. The storefront sells extra CPU (container_cpu, one more vCPU a unit), automatic backups and Server Management (server_management), bills them on its own invoice, and lists them in its server panel (Add-ons). Extra CPU and Server Management are not sold on coritan.com.
Extra Object Storage 250 GB (object_storage_extra) is no longer sold, because pay as you go Object Storage costs less. An add-on you already have stays in its service's attached list, keeps renewing at its price and adds 250 GB-month to the storage your account uses free each month (The storage add-on). It is not in available, and adding one answers 422 (Troubleshooting).
Automatic backups are add-ons too. Each service takes one, with no quantity:
| Add-on | kind |
Goes on | What it does |
|---|---|---|---|
| Automatic Server Backups | container_auto_backups |
A server on App Deployment, when your plan does not include automatic backups | Takes a snapshot of the server every day and keeps the newest 7 (Automatic backups) |
| Weekly Instance Backups or Daily Instance Backups | vps_auto_backups |
A Cloud Compute instance | Backs up the disk every week and keeps the newest 4, or every day and keeps the newest 7 (Automatic backups) |
The instance add-ons cost a share of the instance's price. Once account plans open on your account, the Business plan pays for them on up to three instances and the Enterprise plan on every instance. On an instance your plan covers, the list shows the add-on with included_by_plan set to true and price.text set to Included with your plan.
Server access goes on your account rather than on a service, and an account needs it to run Cloud Compute instances, game servers and databases (Add Server access). More websites come from a websites pack, which goes on your account rather than on a service. Order it on its own, as Order a service describes. We no longer sell the Build Minutes Pack and the Bandwidth Pack for App Deployment. A pack your account already holds keeps its effect and renews until you cancel it (Packs). GET /products/?product_group=addons lists it with the other add-ons.
Extra Backup Slots is not on sale yet, so a server's list leaves it out. To keep copies of a server, take snapshots by hand or on a schedule, or add automatic backups (Snapshots and backups compared).
Before you begin
Section titled Before you begin- Get an access token for the API. Make your first API request shows how.
- The service must be
activeand not set to end.service_refis its service ID, or the UUID of the server behind it. - For extra mailboxes, set up the included Mail Hosting first (Set up the services your plan includes), and use its
idasservice_ref. - Adding an add-on charges the rest of the service's current period. Coritan takes the charge from your credit balance first (Add credit to your balance), and you pay what is left on the invoice.
- A team member working in your account needs the
technicaloradminrole to add or remove an add-on. Any role can list them.
See what a service can take
Section titled See what a service can takeGET /services/{service_ref}/addons lists the add-ons a service has and the ones it can take:
curl https://api.coritan.com/api/v1/services/2210/addons \
-H "Authorization: Bearer $CORITAN_TOKEN"
This answer for a server is shortened to two add-ons, and its prices may differ from today's:
{
"parent": {
"id": 2210,
"product_name": "CX2",
"module_name": "container",
"status": "active",
"billing_cycle": "monthly",
"amount": "3.99",
"next_due_date": "2026-10-14T00:00:00Z"
},
"attached": [],
"available": [
{
"product": {"id": 88, "slug": "addon-server-ports", "name": "Extra Port", "description": "One more port on one App Deployment server."},
"kind": "container_ports",
"label": "extra ports",
"adds": "+1 port",
"unit": 1,
"unit_label": "port",
"fits": ["container"],
"price": {"mode": "per_unit", "amount": "0.50", "currency": "USD", "cycle": "monthly", "setup_fee": "0.00", "percent": null, "text": "$0.50/mo each"},
"max_quantity": 20,
"addable": true,
"included_by_plan": false,
"reason_unavailable": null
},
{
"product": {"id": 89, "slug": "addon-server-databases", "name": "Extra Database", "description": "One more database on one App Deployment server."},
"kind": "container_databases",
"label": "extra databases",
"adds": "+1 database",
"unit": 1,
"unit_label": "database",
"fits": ["container"],
"price": {"mode": "per_unit", "amount": "0.50", "currency": "USD", "cycle": "monthly", "setup_fee": "0.00", "percent": null, "text": "$0.50/mo each"},
"max_quantity": 20,
"addable": true,
"included_by_plan": false,
"reason_unavailable": null
}
]
}
parent- The service, with the billing cycle and the date that every add-on on it renews on.
attached- The add-ons the service has that have not ended, each as
GET /services/{service_ref}returns a service, plus anaddonblock. A capacity add-on hasaddon.typeset tocapacity, with itsquantity, what itadds, whether you can remove it now (removable) and, once you remove it at the end of the term, the date it ends (ends_at). A product bought with the service, such as a floating IP, hasaddon.typeset toproduct, and you cancel it on its own (Cancel a service). available- Every add-on for this kind of service, priced on its billing cycle.
price.amountis for one unit whenprice.modeisper_unit, and for the whole add-on when it isfixed, in theprice.currency, such asUSD.max_quantityis the most one request can add now. Whenaddableisfalse,reason_unavailablesays why (Troubleshooting).
Add an add-on in the dashboard
Section titled Add an add-on in the dashboard- Open the card that lists the service's add-ons: Size and add-ons on a server's Billing tab, or Plan and add-ons on an instance's Console tab and on a mail service's Overview tab.
- Under Available, select Add… beside the add-on. A page opens at
/dashboard/order/add-on?addon=<slug>&service=<id>, with a heading such asAdd extra ports, a link back to the service and a summary named Your order. An add-on with noservicein the address is an account add-on. - For an add-on sold per unit, such as Extra Port, set the Quantity with the plus and minus buttons. A service takes at most 20 units of one kind. Add-ons sold one at a time have no quantity.
- Read the price in Your order. It lists what the add-on costs for the rest of the current period, any promo code as a negative line, Then, what it renews at and from which date, and Due today. It renews on the service's cycle. On a service billed by use it renews every month from today.
- Enter a code in Promo code if you have one. A code the add-on cannot use shows the reason under the field, and the button stays off until you change or clear it.
- Under Pay with, choose a saved method, a card or another way your account offers. When your balance covers the price, the page says We take it from your account credit. A new card and a bank check (3-D Secure) finish on the page, and PayPal and other hosted checkouts bring you back to it. If your credit falls short, we add the missing amount to your credit with the method you chose, then take the price from it.
- Select the button, "Pay $X and add". A message confirms the add-on and the page returns you to where you started, with the add-on under On this service.
If a payment is still settling when the add-on is ordered, the page says Your payment is still settling and links the invoice with See the invoice. The add-on applies once the payment clears. Select Cancel or the link at the top to leave without buying.
When an action fails because your plan does not allow it, such as adding a website past your plan's limit, a dialog names the limit and offers what raises it. It sells nothing itself: Add… opens the add-on's page above, and the plan and the free trial open their own pages (Change your account plan). Each page returns you to the page where the action failed, and you repeat the action by hand once you have what you need. The dialog for an order that needs Server access offers Server access and the Pro plan the same way (Add Server access).
Add an add-on with the API
Section titled Add an add-on with the APISend POST /services/{service_ref}/addons with an add-on from available:
curl -X POST https://api.coritan.com/api/v1/services/2210/addons \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id": 88, "quantity": 3}'
product_id- The add-on's
product.idfromavailable. quantity- Optional,
1when left out. How many units to add, up to the add-on'smax_quantity. An add-on sold one at a time takes only1. billing_cycle- Optional. The add-on renews on the service's cycle, so leave it out or send that cycle. A service billed by use has no cycle, and its add-ons renew monthly: leave it out or send
monthly. promo_code- Optional. A promo code for the add-on. A code it cannot use refuses the request (Use a promo code).
The first invoice charges the rest of the service's current period: the add-on's price for the whole days left before the service renews, plus any setup fee. The day in progress counts as used. This server renews on Oct 14, 2026, with 17 of its 30 days left, so 3 extra ports at $0.50/mo each cost $0.85 now. The answer is 201, shortened here:
{
"service": {
"id": 2231,
"product_name": "Extra Port",
"module_name": "addon",
"status": "pending",
"billing_cycle": "monthly",
"amount": 1.5,
"config": {"quantity": 3, "addon_of_service_id": 2210, "renews_at": "2026-10-14T00:00:00"},
"addon": {"type": "capacity", "kind": "container_ports", "label": "extra ports", "quantity": 3, "adds": "+3 ports", "removable": true, "ends_at": null, "included_by_plan": false}
},
"invoice_id": 5301,
"requires_payment": true,
"charge": "0.85",
"discount": "0.00",
"amount_due": "0.85",
"renews_at": "2026-10-14T00:00:00Z",
"renewal_amount": "1.50",
"billing_cycle": "monthly",
"message": "Pay the invoice to apply the add-on."
}
service- The add-on. Its
idis theaddon_refyou use to remove it. charge,discountandamount_due- The first invoice, what a promo code took off it, and what is left to pay after your credit.
renews_atandrenewal_amount- When the add-on renews with the service, and what it costs each cycle from then on.
The invoice has a line such as Extra Port, +3 ports (service #2231), to October 14, 2026. When requires_payment is true, pay invoice_id as Pay an invoice shows. message says what happened:
message |
Meaning |
|---|---|
Pay the invoice to apply the add-on. |
Part of the invoice is still to pay. |
Paid from your credit balance. The add-on applies in a moment. |
Your credit paid the invoice. |
Your promo code covered the charge. The add-on applies in a moment. |
The code took off the whole charge. |
Nothing is due before the next renewal. The add-on applies in a moment. |
Less than a day is left before the service renews, so there was nothing to charge. |
Result
Section titled ResultOnce the invoice is paid, the add-on's status becomes active and the limit goes up:
- Extra ports and databases raise the server's Port slots and Database slots. In the dashboard, go to App Deployment, open the server, then the Billing tab. The Size and add-ons card shows both.
- Extra mailboxes raise
mailboxesin your plan's limits, and Coritan resizes the included Mail Hosting to match (Read your limits and usage). - Automatic backups start on the server or the instance, as Automatic backups and How automatic backups run describe.
The add-on renews with the service at renewal_amount, on an invoice of its own.
Add-ons on a service billed by use
Section titled Add-ons on a service billed by useA Cloud Compute instance, a game server or a database ordered on your own account is billed by use. Its parent in the list has a billing_cycle of hourly and an amount of 0.0000, because the service has no price and no renewal date. Its add-ons work the same way, with these differences:
- Each add-on renews every month on its own, from the day you add it. The service keeps billing by use.
- The first invoice charges one whole month of the add-on, with no proration. Extra Port at $0.50/mo each costs $1.50 for 3, today, and again every month from today.
- An add-on that costs a share of the instance's price takes that share of the monthly list price of the instance's size. An RX-2 instance lists at $4.99 a month, so Weekly Instance Backups at 20% cost $1.00 a month. The instance's own use does not change it.
billing_cycle, when you send it, must bemonthly.- Removing an add-on at the end of the term keeps it until the month you paid for ends.
when=nowremoves it at once and refunds nothing.
A service billed at a flat price still charges the rest of its current period and renews with the service.
See what an add-on costs first
Section titled See what an add-on costs firstPOST /services/{service_ref}/addons/preview takes the body that adding an add-on takes and answers what it would charge, without adding or charging anything:
curl -X POST https://api.coritan.com/api/v1/services/2210/addons/preview \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id": 88, "quantity": 3}'
{
"due_now": "0.85",
"currency": "USD",
"lines": [
{"label": "Extra Port, +3 ports, to October 14, 2026", "amount": "0.85"}
],
"renews": {"amount": "1.50", "cycle": "monthly", "date": "2026-10-14T00:00:00Z"},
"promo": null
}
due_nowandlines- What the first invoice charges, and its parts: the add-on, any setup fee, and a promo code as a line with a negative
amount.due_nowis what is left after the code. Coritan takes it from your credit first, as it does when you add the add-on. renews- What the add-on costs at each renewal, and when it renews next. On a service billed by use,
dateis one month from today. promonullwhen the request has nopromo_code. A code the add-on cannot use does not refuse the preview:validisfalse, andmessagesays why. Each refused code counts towards the limit onPOST /billing/promo/validate, and a code the preview accepts counts nothing.
The preview refuses what adding the add-on refuses, with the same status and message (Troubleshooting). A team member needs the same role to preview an add-on as to add one.
Remove an add-on
Section titled Remove an add-onSend DELETE /services/{service_ref}/addons/{addon_ref}, where addon_ref is the add-on's service ID. By default the add-on stays until the service renews, and nothing more is charged for it:
curl -X DELETE https://api.coritan.com/api/v1/services/2210/addons/2231 \
-H "Authorization: Bearer $CORITAN_TOKEN"
{
"service_id": 2231,
"when": "end_of_term",
"status": "active",
"termination_date": "2026-10-14T00:00:00Z",
"message": "The add-on ends on October 14, 2026, when this server renews. It stays until then."
}
To remove it at once, add ?when=now to the address. The answer's status is then pending_termination, and its message is Add-on removed. Its limit comes off the server in a moment.
Warning
Removing an add-on with when=now refunds nothing for the rest of the period you paid for.
When the limit comes off, Coritan deletes nothing. A server with more ports or databases than its slots keeps them, but you cannot add more until it is back under the limit. Extra mailboxes that you use cannot be removed: delete what would be over the limit first. An Extra Object Storage 250 GB add-on can go whatever your buckets hold. Once it ends, your account's free storage each month goes back to the plan's amount.
An add-on whose invoice you have not paid ends at once, whichever when you send, and Coritan cancels its invoice. The message is then Add-on removed. It had not been applied yet.
A service's capacity add-ons end when the service does. When you cancel it, they end on the same date, or at once when you cancel immediately, and Coritan cancels their unpaid invoices. When a service ends for any other reason, such as an unpaid invoice, its add-ons end with it.
Add Server access
Section titled Add Server accessAn account needs Server access to order a Cloud Compute instance, a game server or a database (Server access). Pro, Business and Enterprise include it, so only a Free account adds it. It is an account add-on, so you order it on its own, as Order a service describes. Find it in the catalogue by its slug, addon-compute-paid, and order it with one of its prices:
curl "https://api.coritan.com/api/v1/products/?product_group=addons" \
-H "Authorization: Bearer $CORITAN_TOKEN"
curl -X POST https://api.coritan.com/api/v1/services/order \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id": 94, "pricing_id": 301}'
Server access includes data out only: 1,000 GB in North America and Europe and 500 GB elsewhere each month, shared by every instance and game server on the account. It includes no memory, CPU or disk. It renews monthly, quarterly or yearly, and one covers every server on the account.
A Free account does not have to order it first. Send include_paid_plan set to true with its first instance, game server or database order, and the order puts Server access on the same first invoice (Order Server access with the instance, Order Server access with the server). POST /checkout/quote takes the same field and adds a Server access line to lines and to due_now.
If Server access lapses, for example when its invoice stays unpaid, the servers the account runs keep running and bill by use without the included data out. A new instance, game server or database is refused with paid_plan_required until the account has Server access again.
The order of the add-on on its own answers 422 when the account has no use for it:
| Code | Cause |
|---|---|
included_by_plan |
Your plan already includes Server access, so there is nothing to add. The answer names the plan in plan. |
already_ordered |
You already have Server access on this account, active, pending or suspended. One covers every server. |
Each answer holds the sentence in message, and again in errors. An order of an instance, a game server or a database without Server access answers 402 with the code paid_plan_required instead, and names this add-on in upgrade.addon and the plan that includes it in upgrade.plan.
When a plan includes Server access
Section titled When a plan includes Server accessThe add-on is called Server access in the dashboard and the catalogue. When you buy Pro or Business while you hold it, the add-on ends at once, because the plan gives you the same right. Coritan adds the unused days of its current period to your account credit, so you are not charged twice. The add-on's service history says Ended because your Pro plan includes Server access. and how much went to your credit, and so does your credit ledger.
- A free trial of Pro or Business includes Server access for its 14 days, and it does not end the add-on. The add-on ends when you buy the plan, at the end of the trial or before.
- An add-on you ordered but did not pay for is cancelled with its invoice, and nothing is credited.
- The credit is the add-on's price for the whole days left in the period you paid for, rounded down to the cent. A $4.50 add-on with 10 of 30 days left credits $1.50.
POST /account/plan/previewfor Pro or Business says so before you choose, inserver_accessas{"ends": true, "credit": "1.50"}(Preview a plan).- Moving back to Free does not bring the add-on back. Your instances, game servers and databases keep running and bill by use, and a new one needs Server access again (Moving to a smaller plan).
Buy add-ons with a new server
Section titled Buy add-ons with a new serverExtra ports and databases can also go in the order that creates a server. Put each one in the order's addons, as Add-ons in the order describes, with its product_id and a quantity of up to 20:
curl -X POST https://api.coritan.com/api/v1/services/order \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product_id": 12,
"pricing_id": 34,
"hostname": "survival-smp",
"config": {"location": "fra", "name": "survival-smp", "specialization_slug": "minecraft-paper"},
"addons": [{"product_id": 88, "quantity": 3}]
}'
GET /products/?product_group=addonslists the add-on products. Each one'saddonblock has itskindfrom What you can add.- Leave out
pricing_idandconfig. The add-on takes the server's billing cycle. - List each add-on once. One service holds its whole quantity.
- The first invoice charges a whole billing cycle of the add-on, because the server starts its first cycle with it. A promo code in the order takes nothing off add-ons.
- When the order cannot take an add-on, it refuses the whole order and creates nothing.
A capacity add-on needs the service it goes on, so never order one on its own.
Price an order before you place it
Section titled Price an order before you place itPOST /checkout/quote takes the body of an order and answers what it would cost, without placing it. It works for any order, with or without add-ons and a promo code:
curl -X POST https://api.coritan.com/api/v1/checkout/quote \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product_id": 12,
"pricing_id": 34,
"hostname": "survival-smp",
"config": {"location": "fra", "name": "survival-smp", "specialization_slug": "minecraft-paper"},
"addons": [{"product_id": 88, "quantity": 3}],
"promo_code": "SPRING25"
}'
This example is the answer for an order that keeps a flat price, such as a server that a brand's customer orders. Its code gives 25% off the first 3 invoices:
{
"lines": [
{"label": "CX2", "amount": "3.99", "cycle": "monthly", "kind": "recurring"},
{"label": "Extra Port, +3 ports", "amount": "1.50", "cycle": "monthly", "kind": "addon"}
],
"subtotal": "5.49",
"discount": "1.00",
"due_now": "4.49",
"requires_payment": true,
"currency": "USD",
"renews": [
{"label": "CX2", "amount": "2.99", "cycle": "monthly"},
{"label": "Extra Port, +3 ports", "amount": "1.50", "cycle": "monthly"}
],
"promo": {
"valid": true,
"code": "SPRING25",
"message": "SPRING25 applied: 25% off the first 3 invoices.",
"reason": null,
"summary": "25% off the first 3 invoices",
"duration": "repeating",
"cycles": 3
}
}
lines- The lines of the order's first invoice.
kindisrecurringfor the product you order,setupfor its setup fee, andaddonfor anything bought with it. Each floating IP or Shield Custom Profile that your account plan would pay for has its own line, with anamountof0.00and alabelthat adds, included with your planto the product's name, such asIPv4 Address, included with your plan. This holds when it is the order itself and when it is an add-on. Coritan waives its setup fee, so the quote has no setup fee line for it. discountanddue_now- What the promo code takes off the first invoice, and what is left to pay before the order starts. When you place the order, Coritan takes that from your credit first (How the first payment works). When nothing is due first, because the order costs nothing or your account is billed in arrears,
due_nowis0.00andrequires_paymentisfalse. renews- What each renewal charges. When the code also covers renewals, the product's line shows the price after its discount. The code covers as many invoices as
promo.cyclessays, the first one included. promonullwhen the order has nopromo_code. A code the order cannot use does not refuse the quote:validisfalse, andreasonis one of the words under Use a promo code.
Each code the quote refuses counts as one check towards the limit on POST /billing/promo/validate, which is 30 checks in ten minutes. Once your account reaches it, reason is rate_limited for every code. Wait a few minutes, then quote again. A code the quote accepts counts nothing.
The quote refuses what the order would refuse, with the same status and message (Troubleshooting and Order a service). It leaves out only the checks made as an order is placed: those on an order that costs $0, the same order sent twice, and a floating IP order's idempotency_key. A quote holds nothing for you, and the order checks everything again.
Quote an order billed by use
Section titled Quote an order billed by useA Cloud Compute instance, a game server, a database or a web deployment ordered on your own account is billed by use (How usage billing works). Its quote has no line for the product, because the order has no price of its own, and it adds four fields. This answer is for a cx2 server ordered with no add-ons and no promo code, and it is shortened:
{
"lines": [],
"subtotal": "0.00",
"due_now": "0.00",
"requires_payment": false,
"billing_mode": "usage",
"estimate": {
"basis": "server",
"usage": {"hourly_idle": "0.0070", "hourly_typical": "0.0100", "hourly_max": "0.0370", "monthly_idle": "5.11", "monthly_typical": "7.30", "monthly_max": "27.01", "disk_monthly": "0.73"},
"included_monthly": {"egress_gb_na_eu": "1000", "egress_gb_oceania": "500", "egress_gb_other": "500"},
"sample": null
},
"paid_plan": {"required": false, "price": "4.50", "addon_slug": "addon-compute-paid"},
"deposit": {"required": false, "minimum": "10.00"}
}
billing_modeusagewhen the order is billed by use. It isnullfor an order that keeps a flat price.estimate- What the order is expected to cost. For a server,
basisisserverandusageholds the cost of one hour and of a 730-hour month at no CPU use, at 10% and at full use, before the included amounts. For a web deployment,basisisweb,usageisnull, andsamplegives the bill of a small workload after the free amounts (How App Deployment is billed).included_monthlylists the free amounts of the order's pool. paid_planrequiredistruewhen the order needs Server access and the account has none. The order is refused with402until it has it, unless the order sendsinclude_paid_plan, which adds Server access to the order.priceandaddon_slugname the add-on (Add Server access).depositrequiredistruewhen the order runs an instance on a prepaid account that has not added the first deposit. The order is refused with403until it has.minimumis the amount. A static site and an account billed by invoice need none.
due_now counts only what the order puts on its first invoice. The instance, server or deployment adds nothing to it.
Troubleshooting
Section titled TroubleshootingWhen a service cannot take an add-on, adding it answers 422 with {"detail": {"errors": ["<message>"]}}. The list shows the same message as the add-on's reason_unavailable, and an order or a quote gives it when the new server cannot take the add-on:
| Message | Cause |
|---|---|
Add-ons go on an active server, and this server is suspended. |
The service is not active. Add the add-on once it is. |
This server is set to end, so it takes no new add-ons. |
You cancelled the service at the end of its term. |
Extra Port goes on an App Deployment server. |
The add-on is for another kind of service. Choose one from this service's available list. |
Extra Mailbox goes on the email your plan includes. |
Extra mailboxes go only on an included service, so no order can take them either. |
Extra Object Storage 250 GB is no longer sold. Services already on it keep running and renewing. |
The storage add-on is no longer sold. One you already have keeps working, and pay as you go storage costs less (The storage add-on). |
This server's plan already has unlimited databases. |
The plan sets no limit to raise. |
This server already has the most extra ports one server takes. |
The service has 20 units of that kind. |
Extra Port has no price that renews every week, as this server does. |
The add-on is not sold on the service's billing cycle. |
Extra Port has no price that renews every hour, as this server does. |
A server billed by the hour at a flat price renews every hour, and the capacity add-ons have no hourly price. Such a server takes none. A server billed by use is different: its add-ons renew every month (Add-ons on a service billed by use). |
Extra Port has no monthly price, so it cannot be bought for this server. |
The add-on has no monthly price, and a service billed by use needs one. |
Weekly Instance Backups costs 20% of this instance's price, and this instance has none. |
The instance's size has no monthly list price to take a share of. |
Extra Backup Slots is not on sale yet. |
Extra Backup Slots cannot be added yet. Take snapshots instead, or add automatic backups. |
This server belongs to a storefront's customer. Add-ons for it are bought in that storefront's portal. |
The server was bought from a storefront. Its owner adds add-ons there. |
This server already has automatic backups. |
The server or instance has an automatic backups add-on already. |
This instance has weekly automatic backups. Remove them first to switch to daily. |
An instance takes one of the two. Remove the one it has, then add the other once the first ends. |
Your Pro plan includes automatic backups on every server. |
Your plan already takes a server's automatic backups, so it needs no add-on. |
Websites Pack goes on your account rather than on one service. Order it on its own. |
Order a websites pack with POST /services/order. |
Adding an add-on can also answer 422 for what the request asks:
| Message | Cause |
|---|---|
This server takes 3 more ports. Set quantity to a number from 1 to 3. |
quantity is more than the service has room for. |
Extra Port renews with this server, every month. Leave billing_cycle out or set it to monthly. |
billing_cycle is not the service's cycle. |
Extra Port renews every month on its own, because this server is billed by use. Leave billing_cycle out or set it to monthly. |
billing_cycle is not monthly, on a service billed by use. |
An order or a quote can also answer 422 with one of these:
| Message | Cause |
|---|---|
Extra Port goes on an App Deployment server. Add it to that service, or to the order that creates the service. |
The order is for the add-on alone. |
… goes on a server, and only a template deployment has one. Order it with a template deployment, or on its own. |
An App Deployment order of a kind other than template names a floating IP, a DDoS Shield profile or Snapshot Storage in addons. Only the order of a server or a database takes them. |
List Extra Port once and set its quantity to the number you want. |
addons names the same add-on twice. |
Extra Port renews with CX2, so it takes the price for the same billing cycle. Leave pricing_id out. |
The entry has a pricing_id for another cycle. |
Extra Port takes no config. Leave config out. |
The entry has a config. |
Other answers when you add an add-on:
404withService not found, or403withAccess denied- No service has that
service_ref, or it belongs to another account. 404withThere is no product with id 99. Choose an add-on from this service's list.product_idis wrong. Take it fromavailable.422withpromobesideerrors- The promo code cannot be used on this add-on.
promois one of thereasonwords in Use a promo code. Send the request again withoutpromo_codeto pay the full price. 429with"error": "rate_limited"- Your account added or removed add-ons 20 times in an hour.
retry_after_secondsand theRetry-Afterheader give the length of the window.
Removing an add-on can answer with one of these. A 422 holds its message in {"detail": {"errors": [...]}}, and the others hold it in detail:
| Status | Message | Cause |
|---|---|---|
404 |
This server has no add-on 2231. |
addon_ref is not an add-on of this service. Take the id from attached. |
422 |
IPv4 Address is a service of its own. Cancel it from its own page. |
A product bought with the service ends when you cancel it. |
409 |
This add-on has already been removed. |
The add-on has ended, or is ending now. |
409 |
This add-on is being applied. Remove it in a moment. |
Its invoice was just paid, and Coritan is applying it. |
409 |
This add-on already ends on October 14, 2026. Remove it now with when=now. |
You removed it at the end of the term already. |
409 |
You have 12 mailboxes, and your plan allows 10 without this add-on. Delete 2 first, then remove it. |
The mailboxes you have need the add-on. |
Related
Section titled RelatedAPI operations on this page
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/services/{service_ref}/addons | The add-ons on one of your services, and the ones you can add |
POST | /api/v1/services/{service_ref}/addons | Add a capacity add-on to one of your active services |
POST | /api/v1/services/{service_ref}/addons/preview | What adding an add-on to one of your services would charge |
DELETE | /api/v1/services/{service_ref}/addons/{addon_ref} | Remove a capacity add-on from one of your services |
POST | /api/v1/checkout/quote | What an order would cost, without placing it |