Skip to content

Pricing / Reference

Price list API

Updated · 7 min read

Reference for GET /v1/pricing, the public price list endpoint, with every response field, product family, header, and status code.

On this page6 sections

The price list endpoint returns the current list price of every billable product as JSON. It needs no authentication. For a walkthrough, see Read the price list.

Current list prices

The table below is read from this endpoint when the page is served. If the endpoint can't be reached, the table shows the copy of 13 October 2026 and says so.

As of 18 Oct 2026, excl. VAT · prices last changed 22 Sep 2026Live from GET /v1/pricing · 17 prices

ProductList price≈ per month (730 h)
Compute · compute_instance
gp1.core.2compute.gp1.core.2List price€0.0551per hour≈ per month€40.22
gp1.core.4compute.gp1.core.4List price€0.1103per hour≈ per month€80.52
gp1.core.8compute.gp1.core.8List price€0.2205per hour≈ per month€160.97
gp1.core.16compute.gp1.core.16List price€0.4410per hour≈ per month€321.93
gp1.core.32compute.gp1.core.32List price€0.8821per hour≈ per month€643.93
Storage · storage_volume, storage_snapshot
gp1 volumestorage.gp1List price€0.00009589per GiB-hour≈ per month€0.07 per GiB
io1 volumeNot on salestorage.io1List price€0.000143835per GiB-hour≈ per month€0.105 per GiB
st1 volumeNot on salestorage.st1List price€0.000057534per GiB-hour≈ per month€0.042 per GiB
Snapshotstorage.snapshotList price€0.000045644per GiB-hour≈ per month€0.033 per GiB
Network · network_floating_ip, network_nat_gateway, network_vpc_egress, network_vpc_ingress, network_vpc_internal
Floating IPnetwork.floating_ipList price€0.00009537per minute≈ per month€4.18
NAT gatewaynetwork.nat_gatewayList price€0.01945548per hour≈ per month€14.20
Egressnetwork.vpc_egressList price€0.0900per GB≈ per monthby use
IngressFreenetwork.vpc_ingressList priceFree≈ per month–
InternalFreenetwork.vpc_internalList priceFree≈ per month–
Observability · observability_custom_metric, observability_api_request, observability_ingested_sample
Custom metricobservability.custom_metricList price€0.3000per metric-month≈ per monthby use
API requestsobservability.api_requestList price€0.0100per 1,000 requests≈ per monthby use
Ingested samplesobservability.ingested_sampleList price€0.1000per million samples≈ per monthby use

Monthly figures are list price × 730 hours, rounded to the cent (storage: to the tenth of a cent per GiB). Usage-based prices have no fixed monthly figure.

Request

text
GET https://api.origincloud.eu/v1/pricing

The endpoint takes no parameters. Optional request header:

HeaderDescription
If-None-MatchAn ETag from an earlier response. If the price list is unchanged, the response is 304 Not Modified without a body. A strong form of the same tag, or *, also matches.

Response body

Example response (two families from the price list of 13 October 2026):

JSON
{
  "currency": "EUR",
  "amounts_exclude_vat": true,
  "last_changed": "2026-09-22T19:42:11.021738+00:00",
  "families": [
    {
      "family": "compute_instance",
      "prices": [
        {
          "product_key": "compute.gp1.core.2",
          "dimensions": { "instance_type": "gp1.core.2" },
          "unit_type": "seconds",
          "unit_count": 3600,
          "amount": "0.0551",
          "valid_from": "2026-08-11T08:37:24.666437+00:00",
          "valid_until": null
        }
      ]
    },
    {
      "family": "storage_snapshot",
      "prices": [
        {
          "product_key": "storage.snapshot",
          "unit_type": "gib_hours",
          "unit_count": 1,
          "amount": "0.000045644000",
          "valid_from": "2026-08-18T12:33:38.761168+00:00",
          "valid_until": null
        }
      ]
    }
  ]
}

Top-level fields:

FieldTypeDescription
currencystringAlways EUR.
amounts_exclude_vatbooleanAlways true. Every amount is net. VAT depends on your billing country and is added on the invoice.
last_changedstring or nullRFC 3339 timestamp of the most recent time a list price was set, changed, took effect, or ended. Use it for a “prices last updated” line. null only if nothing has ever been priced.
familiesarrayOne entry per product family with at least one current price, in the order of Product families. A family without a current price is left out.

Fields of each entry in families:

FieldTypeDescription
familystringThe family identifier, for example compute_instance.
pricesarrayThe current prices of the family, ordered by product key, with numbers compared as numbers. Instance types of one class run from smallest to largest.

Fields of each entry in prices:

FieldTypeDescription
product_keystringWhat the price bills, for example compute.gp1.core.2. Usage and cost reports use the same key.
dimensionsobjectThe parts of the product key, already split out: instance_type for compute_instance, storage_class for storage_volume. The field is absent when the family has no dimensions.
unit_typestringThe unit the price is per: seconds, gib_hours, gb, metric_months, requests, or samples.
unit_countintegerHow many units amount is for. 3600 seconds is an hourly rate; 730 gib_hours is a rate per GiB for 730 hours.
amountstringThe price in euro for unit_count units, as a decimal string so no rounding is introduced.
valid_fromstringRFC 3339 timestamp from which the price applies.
valid_untilstring or nullRFC 3339 timestamp at which the price is scheduled to end, or null if no end is scheduled.

The list contains only prices in effect at the time of the request. A future price appears once it takes effect. Prices agreed for a single organization never appear.

A priced product isn’t necessarily available to order. Selecting a product that is priced but not on sale fails with PRODUCT_UNAVAILABLE.

Product families

The families appear in the following order. Traffic in gb is counted in decimal gigabytes (10^9 bytes).

FamilyProduct keyDimensionsUnit type
compute_instancecompute.<instance_type>instance_typeseconds
network_floating_ipnetwork.floating_ip–seconds
network_nat_gatewaynetwork.nat_gateway–seconds
network_vpc_egressnetwork.vpc_egress–gb
network_vpc_ingressnetwork.vpc_ingress–gb
network_vpc_internalnetwork.vpc_internal–gb
storage_volumestorage.<storage_class>storage_classgib_hours
storage_snapshotstorage.snapshot–gib_hours
observability_custom_metricobservability.custom_metric–metric_months
observability_api_requestobservability.api_request–requests
observability_ingested_sampleobservability.ingested_sample–samples

compute_instance

The time an instance runs, priced per instance type. The product key is compute. followed by the instance type, for example compute.gp1.core.2. See Instance types.

network_floating_ip

The time a Floating IP is allocated to your project. See Floating IPs.

network_nat_gateway

The time a NAT gateway exists. The Floating IP that the gateway holds is billed separately under network_floating_ip. See NAT gateways.

network_vpc_egress

Traffic from a VPC to the internet, in decimal gigabytes.

network_vpc_ingress

Traffic from the internet into a VPC, in decimal gigabytes.

network_vpc_internal

Traffic routed between two subnets of the same VPC, in decimal gigabytes.

storage_volume

The provisioned size of a volume for the time it exists, priced per storage class. The product key is storage. followed by the storage class: storage.gp1, storage.st1, or storage.io1. See Storage classes.

storage_snapshot

The size of a snapshot’s source volume for the time the snapshot exists. See Snapshots.

observability_custom_metric

A metric you submit yourself, for each month it’s kept. Submitting your own metrics isn’t supported, so nothing is billed under this family.

observability_api_request

Each successful observability.metrics query, however many metrics or data points it returns. See Query metrics.

observability_ingested_sample

Each value the platform collects for your instances, volumes, and network interfaces: one per metric and resource every 30 seconds while the instance runs. See Metrics reference.

For example, an instance with one network interface and one volume reports five metrics, so 730 hours of running produce 5 × 120 × 730 = 438,000 samples. At the list price of 13 October 2026 (0.1000 EUR per 1,000,000 samples), that is about 0.04 EUR per instance-month.

Response headers

HeaderValue
ETagA weak tag for the response body, for example W/"3f9a1c2b7d4e5f60". It changes whenever the body changes.
Cache-Controlpublic, max-age=300. A client or cache may reuse a fetched list for 5 minutes. A price change can take a few minutes to appear.
Access-Control-Allow-Origin*. A web page on any origin can fetch the list from the browser.
Last-ModifiedThe time in last_changed, as an HTTP date. Absent when last_changed is null.
Content-Typeapplication/json, on 200 responses.

In a browser, let the browser’s HTTP cache revalidate the list. The ETag header isn’t exposed to page scripts, and a script that sets If-None-Match itself triggers a CORS preflight request, which the endpoint doesn’t support.

Status codes

StatusMeaningWhat to do
200 OKThe body is the current price list.–
304 Not ModifiedThe If-None-Match tag matches the current list. No body.Keep using your copy.
429 Too Many RequestsToo many requests from your client address. The limit is per client address.Wait and retry. A client that honors Cache-Control doesn’t reach the limit.
503 Service UnavailableThe price list is temporarily unavailable. The response carries Retry-After: 30 and a plain-text body.Retry after the number of seconds in Retry-After.