{
  "info": {
    "_postman_id": "eb99d0a9-e9a8-8add-afa4-e6b3700b71a5",
    "name": "Bullion API",
    "description": "Official Bullion API Postman collection. Explore the API at https://api.bullionapi.dev.\nDocumentation and the latest collection: https://bullionapi.dev/docs#postman.\n\nGetting started:\n1. Create an account, verify your email and create an API key at https://bullionapi.dev/dashboard.\n2. Set apiKey to your own key locally in Postman. Keep credentials private; do not share or publish a collection or environment containing your key.\n3. Leave baseUrl set to https://api.bullionapi.dev. Run Service health, then Production-serviceable metals and currencies or Latest cached gold price.\n4. Choose requests supported by your key permissions. Update dates, filters and identifiers for the data you want.\n\nRequests send your API key in the X-API-Key header. The optional account folder requires a dashboard session cookie configured in Postman instead.\nPrice, derived, macro, reserve and central-bank-gold reads consume monthly quota. Every plan can call every endpoint.\nQuota headers include x-ratelimit-limit and x-ratelimit-remaining where supported. Portfolio requests need the corresponding read or write key permissions.\nFree and Pro plans are for non-commercial Service use only; Business includes commercial display and integration.\nIndependent source-granted reuse rights in public statistics remain subject to the source terms, regardless of plan. See https://bullionapi.dev/terms.\n\nPortfolio writes are disabled by default. Only set enableWrites to exactly \"true\" when you intend to change your account data.\nReview the body before each write. Replace sample transaction and lot IDs with your own IDs, and use the current version for If-Match.\nA fresh Idempotency-Key is generated for each new purchase or sale; use the same key when retrying the same transaction to avoid duplicates.\nLeave enableWrites empty when browsing or running the whole collection. Disabled writes are skipped.\n\nRead-only requests: Service health → Production-serviceable metals and currencies → Countries and their datasets → Datasets for one country → Latest cached gold price → Latest cached silver price → Latest cached palladium price → Latest cached copper price → Latest cached platinum price → Daily gold weekday closes → Gold price change over a period → Silver price change over a period → Palladium price change over a period → Copper price change over a period → Platinum price change over a period → Gold karat prices per gram → Gold-to-silver ratio → Gold moving average of 50 daily closes → Gold realised volatility over 30 daily returns → Gold drawdown from its running peak → Policy rates for one country → Latest policy rates for every covered country → Inflation for one country → Latest inflation for every covered country → Bond yields for one country → Latest bond yields for every covered country → Government debt for one country → Latest government debt for every covered country → Government borrowing for one country → Latest government borrowing for every covered country → Government debt interest for one country → Latest government debt interest for every covered country → Latest central-bank reserve values for every country → Annual central-bank reserve values and gold share → Latest central-bank gold holdings for every country → Reported central-bank gold holdings for one country → Read portfolio settings and summary → Browse portfolio transactions → List open purchase lots → Summarise realised gains.\nSaved response examples are synthetic placeholders, not live observations. Sample dates and identifiers must be replaced where appropriate.\nPortfolio quantities and money use decimal strings, for example \"1.005\" and \"2500.125\". Keep these values quoted in request bodies.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "id": "7f55b766-29ee-6682-d8a4-62d3384c9395",
      "name": "meta",
      "description": "Service metadata (public, no authentication). Start here with Service health.",
      "item": [
        {
          "id": "4983edef-8613-3206-6a70-d7f914dd9b1b",
          "name": "Service health",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "health"
              ],
              "query": [],
              "variable": []
            },
            "description": "Public, no auth. Reports database reachability, metal-cache freshness and enabled projected-currency FX snapshot readiness. Returns 503 when the metal cache is stale or an enabled FX snapshot is unavailable or stale. Metal-cache age runs from the later of the last refresh and one hour before the next refresh due after it. A gap with no refresh due (the weekend market close apart from the daily 06:00 UTC refresh, and weekdays at 22:00 UTC) therefore does not age the cache until a due refresh is missed; after that, every hour counts.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "id": "729963bf-6a70-ed8a-ef68-c975f301f523",
              "name": "Service health — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "health"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"ok\",\n  \"db_reachable\": true,\n  \"last_refresh_at\": \"2026-01-15T12:00:00.000Z\",\n  \"currencies_with_data\": [\n    \"USD\"\n  ],\n  \"fx_snapshot_status\": \"disabled\",\n  \"last_fx_snapshot_at\": null,\n  \"projected_currencies_with_data\": []\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('ok');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "50375431-cfd7-0253-ae1a-bdc57926800d",
      "name": "symbols",
      "description": "Production-serviceable symbols (API key required). Authenticated GET /v1/symbols is the authoritative runtime catalogue. Informational quota headers are returned without consuming monthly quota.",
      "item": [
        {
          "id": "564d9b60-4708-b9d8-5e71-804153dc01b1",
          "name": "Production-serviceable metals and currencies",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "symbols"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the authoritative runtime catalogue of reviewed, configured currencies that have materialised production price data. Static documentation reflects deployment configuration but cannot verify materialised rows. The route never reads FX observations, constructs an upstream provider or makes an upstream request. It authenticates and retains the rolling per-key limit, but does not increment monthly quota, deny an account whose monthly quota is exhausted or record product activation. Monthly quota headers report the unchanged account state and successful calls are written to the request log.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "2b3a9366-e37d-c009-0f09-9ebd8b8de5c0",
              "name": "Production-serviceable metals and currencies — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "symbols"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metals\": {\n    \"gold\": \"Gold (troy ounce)\",\n    \"silver\": \"Silver (troy ounce)\",\n    \"palladium\": \"Palladium (troy ounce)\",\n    \"copper\": \"Copper (troy ounce)\",\n    \"platinum\": \"Platinum (troy ounce)\"\n  },\n  \"currencies\": {\n    \"USD\": \"US Dollar\",\n    \"EUR\": \"Euro\",\n    \"GBP\": \"Pound Sterling\"\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "8a76e3cc-340a-0368-11c3-1e6de728da5d",
      "name": "countries",
      "description": "Country coverage (API key required). GET /v1/countries lists each country with the datasets it has; GET /v1/countries/{country} returns one. Reads consume monthly quota.",
      "item": [
        {
          "id": "23279131-1f14-7138-304b-716afd8bdd2a",
          "name": "Countries and their datasets",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "countries"
              ],
              "query": [],
              "variable": []
            },
            "description": "Lists every country or aggregate with at least one per-country dataset, sorted by code. Each dataset names its metric and the path of that country on the metric endpoint. Coverage is derived from the registered series and the stored central-bank data, so a dataset is listed only where its endpoint can answer. `aliases` lists accepted lower-case path aliases.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "c6dc294a-e1b9-8354-fea6-2464abdbc98f",
              "name": "Countries and their datasets — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "countries"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"countries\": [\n    {\n      \"country\": \"GB\",\n      \"country_name\": \"United Kingdom\",\n      \"aliases\": [\n        \"uk\"\n      ],\n      \"datasets\": [\n        {\n          \"metric\": \"inflation\",\n          \"path\": \"/v1/inflation/gb\"\n        },\n        {\n          \"metric\": \"central_bank_reserves\",\n          \"path\": \"/v1/central-bank-reserves/gb\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('countries list their datasets', function () {",
                  "    pm.expect(pm.response.json().countries).to.be.an('array');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "6ff5867d-c578-9032-e291-da707e9ea274",
          "name": "Datasets for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "countries",
                ":country"
              ],
              "query": [],
              "variable": [
                {
                  "key": "country",
                  "value": "gb",
                  "description": "ISO 3166-1 alpha-2 code or ea, case-insensitive; uk and eu are accepted aliases."
                }
              ]
            },
            "description": "Returns one country with its datasets. An unknown code is rejected with `invalid_country`; a valid code without any dataset returns `no_data`.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "045f47ee-8912-4883-e0e8-8c4e4796b916",
              "name": "Datasets for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "countries",
                    ":country"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "key": "country",
                      "value": "gb",
                      "description": "ISO 3166-1 alpha-2 code or ea, case-insensitive; uk and eu are accepted aliases."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"country\": \"GB\",\n  \"country_name\": \"United Kingdom\",\n  \"aliases\": [\n    \"uk\"\n  ],\n  \"datasets\": [\n    {\n      \"metric\": \"inflation\",\n      \"path\": \"/v1/inflation/gb\"\n    },\n    {\n      \"metric\": \"central_bank_reserves\",\n      \"path\": \"/v1/central-bank-reserves/gb\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "9ed3bdd4-e3f6-dbb4-7fa7-dae694a78b8f",
      "name": "prices",
      "description": "Metal price data (API key required). GET /v1/{metal}/price and GET /v1/{metal}/change serve gold, silver, palladium, copper, and platinum; GET /v1/gold/carat serves karat prices as eight-place decimal strings. Price reads return the latest value, or daily weekday closes with start and end. Every read consumes monthly quota after API-key and quota checks. Values are decimal strings; prices default to troy ounces; pass unit=gram, unit=kilogram, or unit=troy_oz.",
      "item": [
        {
          "id": "f7d4b288-76e6-4ce7-e4cc-582a45c5b554",
          "name": "Latest cached gold price",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "price"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "EUR"
                },
                {
                  "key": "unit",
                  "value": "gram"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-01-31",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the gold spot price as one `gold_price` series. The route reads the local cache and never calls an upstream provider. Without start and end, the series holds the latest cached price with its full UTC observation timestamp (`frequency: hourly`, `method: latest`). With a range of at most five years, it holds one final close per UTC weekday dated YYYY-MM-DD (`frequency: daily`, `method: weekday_close`); Saturday and Sunday UTC observations, including the Sunday-evening market reopen, are excluded. Values are decimal strings in the requested unit, rounded to eight decimal places; pass unit=gram, unit=kilogram, or unit=troy_oz (including documented aliases). For a configured projected currency the series carries `conversion`, the daily Bullion API conversion snapshot provenance; it is omitted for native currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "bccf9df5-e513-0b81-ded2-8009ab1b53cf",
              "name": "Latest cached gold price — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "price"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "EUR"
                    },
                    {
                      "key": "unit",
                      "value": "gram"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"price\",\n  \"metal\": \"gold\",\n  \"currency\": \"EUR\",\n  \"unit\": \"gram\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"gold_price\",\n      \"label\": \"Synthetic spot price\",\n      \"unit\": \"gram\",\n      \"frequency\": \"hourly\",\n      \"method\": \"latest\",\n      \"conversion\": {\n        \"snapshot_at\": \"2026-01-15T12:00:00.000Z\",\n        \"stale\": false,\n        \"attribution\": \"Exchange Rates By UniRateAPI\",\n        \"attribution_url\": \"https://unirateapi.com/\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15T12:00:00.000Z\",\n          \"value\": \"145.62\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('price observations stay decimal strings', function () {",
                  "    var series = pm.response.json().series;",
                  "    pm.expect(series).to.be.an('array').with.lengthOf(1);",
                  "    series[0].observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "639d02cf-823f-17d1-333b-bd6fa2d40499",
          "name": "Latest cached silver price",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "silver",
                "price"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "EUR"
                },
                {
                  "key": "unit",
                  "value": "gram"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-01-31",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the silver spot price as one `silver_price` series. The route reads the local cache and never calls an upstream provider. Without start and end, the series holds the latest cached price with its full UTC observation timestamp (`frequency: hourly`, `method: latest`). With a range of at most five years, it holds one final close per UTC weekday dated YYYY-MM-DD (`frequency: daily`, `method: weekday_close`); Saturday and Sunday UTC observations, including the Sunday-evening market reopen, are excluded. Values are decimal strings in the requested unit, rounded to eight decimal places; pass unit=gram, unit=kilogram, or unit=troy_oz (including documented aliases). For a configured projected currency the series carries `conversion`, the daily Bullion API conversion snapshot provenance; it is omitted for native currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "03994973-f363-292c-10c0-f2b5e257e00e",
              "name": "Latest cached silver price — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "silver",
                    "price"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "EUR"
                    },
                    {
                      "key": "unit",
                      "value": "gram"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"price\",\n  \"metal\": \"silver\",\n  \"currency\": \"EUR\",\n  \"unit\": \"gram\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"silver_price\",\n      \"label\": \"Synthetic spot price\",\n      \"unit\": \"gram\",\n      \"frequency\": \"hourly\",\n      \"method\": \"latest\",\n      \"conversion\": {\n        \"snapshot_at\": \"2026-01-15T12:00:00.000Z\",\n        \"stale\": false,\n        \"attribution\": \"Exchange Rates By UniRateAPI\",\n        \"attribution_url\": \"https://unirateapi.com/\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15T12:00:00.000Z\",\n          \"value\": \"145.62\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('price observations stay decimal strings', function () {",
                  "    var series = pm.response.json().series;",
                  "    pm.expect(series).to.be.an('array').with.lengthOf(1);",
                  "    series[0].observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "a0781389-fd50-0d27-a456-8589eaf14d38",
          "name": "Latest cached palladium price",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "palladium",
                "price"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "EUR"
                },
                {
                  "key": "unit",
                  "value": "gram"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-01-31",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the palladium spot price as one `palladium_price` series. The route reads the local cache and never calls an upstream provider. Without start and end, the series holds the latest cached price with its full UTC observation timestamp (`frequency: hourly`, `method: latest`). With a range of at most five years, it holds one final close per UTC weekday dated YYYY-MM-DD (`frequency: daily`, `method: weekday_close`); Saturday and Sunday UTC observations, including the Sunday-evening market reopen, are excluded. Values are decimal strings in the requested unit, rounded to eight decimal places; pass unit=gram, unit=kilogram, or unit=troy_oz (including documented aliases). For a configured projected currency the series carries `conversion`, the daily Bullion API conversion snapshot provenance; it is omitted for native currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "9376170e-71b8-bed9-d003-16633a384a28",
              "name": "Latest cached palladium price — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "palladium",
                    "price"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "EUR"
                    },
                    {
                      "key": "unit",
                      "value": "gram"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"price\",\n  \"metal\": \"palladium\",\n  \"currency\": \"EUR\",\n  \"unit\": \"gram\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"palladium_price\",\n      \"label\": \"Synthetic spot price\",\n      \"unit\": \"gram\",\n      \"frequency\": \"hourly\",\n      \"method\": \"latest\",\n      \"conversion\": {\n        \"snapshot_at\": \"2026-01-15T12:00:00.000Z\",\n        \"stale\": false,\n        \"attribution\": \"Exchange Rates By UniRateAPI\",\n        \"attribution_url\": \"https://unirateapi.com/\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15T12:00:00.000Z\",\n          \"value\": \"145.62\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('price observations stay decimal strings', function () {",
                  "    var series = pm.response.json().series;",
                  "    pm.expect(series).to.be.an('array').with.lengthOf(1);",
                  "    series[0].observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "ee0de39e-f595-93eb-0c72-c39d82f3c95e",
          "name": "Latest cached copper price",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "copper",
                "price"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "EUR"
                },
                {
                  "key": "unit",
                  "value": "gram"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-01-31",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the copper spot price as one `copper_price` series. The route reads the local cache and never calls an upstream provider. Without start and end, the series holds the latest cached price with its full UTC observation timestamp (`frequency: hourly`, `method: latest`). With a range of at most five years, it holds one final close per UTC weekday dated YYYY-MM-DD (`frequency: daily`, `method: weekday_close`); Saturday and Sunday UTC observations, including the Sunday-evening market reopen, are excluded. Values are decimal strings in the requested unit, rounded to eight decimal places; pass unit=gram, unit=kilogram, or unit=troy_oz (including documented aliases). For a configured projected currency the series carries `conversion`, the daily Bullion API conversion snapshot provenance; it is omitted for native currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "9f5c4dfd-6785-f797-d8f8-dd991a196886",
              "name": "Latest cached copper price — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "copper",
                    "price"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "EUR"
                    },
                    {
                      "key": "unit",
                      "value": "gram"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"price\",\n  \"metal\": \"copper\",\n  \"currency\": \"EUR\",\n  \"unit\": \"gram\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"copper_price\",\n      \"label\": \"Synthetic spot price\",\n      \"unit\": \"gram\",\n      \"frequency\": \"hourly\",\n      \"method\": \"latest\",\n      \"conversion\": {\n        \"snapshot_at\": \"2026-01-15T12:00:00.000Z\",\n        \"stale\": false,\n        \"attribution\": \"Exchange Rates By UniRateAPI\",\n        \"attribution_url\": \"https://unirateapi.com/\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15T12:00:00.000Z\",\n          \"value\": \"145.62\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('price observations stay decimal strings', function () {",
                  "    var series = pm.response.json().series;",
                  "    pm.expect(series).to.be.an('array').with.lengthOf(1);",
                  "    series[0].observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "218ce502-a60c-0292-4dcf-bf4f4d994cdd",
          "name": "Latest cached platinum price",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "platinum",
                "price"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "EUR"
                },
                {
                  "key": "unit",
                  "value": "gram"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-01-31",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the platinum spot price as one `platinum_price` series. The route reads the local cache and never calls an upstream provider. Without start and end, the series holds the latest cached price with its full UTC observation timestamp (`frequency: hourly`, `method: latest`). With a range of at most five years, it holds one final close per UTC weekday dated YYYY-MM-DD (`frequency: daily`, `method: weekday_close`); Saturday and Sunday UTC observations, including the Sunday-evening market reopen, are excluded. Values are decimal strings in the requested unit, rounded to eight decimal places; pass unit=gram, unit=kilogram, or unit=troy_oz (including documented aliases). For a configured projected currency the series carries `conversion`, the daily Bullion API conversion snapshot provenance; it is omitted for native currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "ec0d26b3-2259-79c6-2196-341f7be55543",
              "name": "Latest cached platinum price — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "platinum",
                    "price"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "EUR"
                    },
                    {
                      "key": "unit",
                      "value": "gram"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"price\",\n  \"metal\": \"platinum\",\n  \"currency\": \"EUR\",\n  \"unit\": \"gram\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"platinum_price\",\n      \"label\": \"Synthetic spot price\",\n      \"unit\": \"gram\",\n      \"frequency\": \"hourly\",\n      \"method\": \"latest\",\n      \"conversion\": {\n        \"snapshot_at\": \"2026-01-15T12:00:00.000Z\",\n        \"stale\": false,\n        \"attribution\": \"Exchange Rates By UniRateAPI\",\n        \"attribution_url\": \"https://unirateapi.com/\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15T12:00:00.000Z\",\n          \"value\": \"145.62\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('price observations stay decimal strings', function () {",
                  "    var series = pm.response.json().series;",
                  "    pm.expect(series).to.be.an('array').with.lengthOf(1);",
                  "    series[0].observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "2632218c-1f24-7796-145e-2cd884d2ad22",
          "name": "Daily gold weekday closes",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "price"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "unit",
                  "value": "troy_oz"
                },
                {
                  "key": "start",
                  "value": "2026-01-01"
                },
                {
                  "key": "end",
                  "value": "2026-01-31"
                }
              ],
              "variable": []
            },
            "description": "Returns the gold spot price as one `gold_price` series. The route reads the local cache and never calls an upstream provider. Without start and end, the series holds the latest cached price with its full UTC observation timestamp (`frequency: hourly`, `method: latest`). With a range of at most five years, it holds one final close per UTC weekday dated YYYY-MM-DD (`frequency: daily`, `method: weekday_close`); Saturday and Sunday UTC observations, including the Sunday-evening market reopen, are excluded. Values are decimal strings in the requested unit, rounded to eight decimal places; pass unit=gram, unit=kilogram, or unit=troy_oz (including documented aliases). For a configured projected currency the series carries `conversion`, the daily Bullion API conversion snapshot provenance; it is omitted for native currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "c6fbaa0f-5ae6-e02f-45a2-883854a522ce",
              "name": "Daily gold weekday closes — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "price"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "unit",
                      "value": "troy_oz"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01"
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31"
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"price\",\n  \"metal\": \"gold\",\n  \"currency\": \"USD\",\n  \"unit\": \"troy_oz\",\n  \"start\": \"2026-01-01\",\n  \"end\": \"2026-01-31\",\n  \"series\": [\n    {\n      \"id\": \"gold_price\",\n      \"label\": \"Gold spot price\",\n      \"unit\": \"troy_oz\",\n      \"frequency\": \"daily\",\n      \"method\": \"weekday_close\",\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15\",\n          \"value\": \"4527.86\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('price observations stay decimal strings', function () {",
                  "    var series = pm.response.json().series;",
                  "    pm.expect(series).to.be.an('array').with.lengthOf(1);",
                  "    series[0].observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "5e6fdd4c-1bcf-5fa2-c047-3435833c8329",
          "name": "Gold price change over a period",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "change"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "period",
                  "value": "1w"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-02-01",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the absolute and percentage change in the gold price between the final cached observation of two UTC days. Use either start and end (at most 365 days apart; start alone runs to today) or one rolling period: 1d, 1w, 1m or 1y (1, 7, 30 or 365 days back from today). Values are decimal strings: `change` is in the requested unit and `change_percent` is relative to the start price, rounded to four decimal places. Gram and kilogram start and end values are rounded to eight decimal places before `change` is taken. A zero start price returns invalid_change_baseline. The endpoint is a database-only reader and never calls upstream providers.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "cd1e65bc-0086-32f4-3ec2-97bf5aee643d",
              "name": "Gold price change over a period — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "change"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "period",
                      "value": "1w"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-02-01",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"change\",\n  \"metal\": \"gold\",\n  \"currency\": \"USD\",\n  \"unit\": \"troy_oz\",\n  \"start\": {\n    \"date\": \"2026-01-08\",\n    \"value\": \"4400\"\n  },\n  \"end\": {\n    \"date\": \"2026-01-15\",\n    \"value\": \"4527.86\"\n  },\n  \"change\": \"127.86\",\n  \"change_percent\": \"2.9059\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('change values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    pm.expect(body.start.value).to.be.a('string');",
                  "    pm.expect(body.end.value).to.be.a('string');",
                  "    pm.expect(body.change).to.be.a('string');",
                  "    pm.expect(body.change_percent).to.be.a('string');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "62d3679e-5b06-105e-4f86-4e731f36b695",
          "name": "Silver price change over a period",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "silver",
                "change"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "period",
                  "value": "1w"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-02-01",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the absolute and percentage change in the silver price between the final cached observation of two UTC days. Use either start and end (at most 365 days apart; start alone runs to today) or one rolling period: 1d, 1w, 1m or 1y (1, 7, 30 or 365 days back from today). Values are decimal strings: `change` is in the requested unit and `change_percent` is relative to the start price, rounded to four decimal places. Gram and kilogram start and end values are rounded to eight decimal places before `change` is taken. A zero start price returns invalid_change_baseline. The endpoint is a database-only reader and never calls upstream providers.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "99f63a6c-1005-ece1-5b7b-4cd85ffa0872",
              "name": "Silver price change over a period — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "silver",
                    "change"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "period",
                      "value": "1w"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-02-01",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"change\",\n  \"metal\": \"silver\",\n  \"currency\": \"USD\",\n  \"unit\": \"troy_oz\",\n  \"start\": {\n    \"date\": \"2026-01-08\",\n    \"value\": \"4400\"\n  },\n  \"end\": {\n    \"date\": \"2026-01-15\",\n    \"value\": \"4527.86\"\n  },\n  \"change\": \"127.86\",\n  \"change_percent\": \"2.9059\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('change values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    pm.expect(body.start.value).to.be.a('string');",
                  "    pm.expect(body.end.value).to.be.a('string');",
                  "    pm.expect(body.change).to.be.a('string');",
                  "    pm.expect(body.change_percent).to.be.a('string');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "bf3f89cb-c274-49ba-77ce-7be18027b5de",
          "name": "Palladium price change over a period",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "palladium",
                "change"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "period",
                  "value": "1w"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-02-01",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the absolute and percentage change in the palladium price between the final cached observation of two UTC days. Use either start and end (at most 365 days apart; start alone runs to today) or one rolling period: 1d, 1w, 1m or 1y (1, 7, 30 or 365 days back from today). Values are decimal strings: `change` is in the requested unit and `change_percent` is relative to the start price, rounded to four decimal places. Gram and kilogram start and end values are rounded to eight decimal places before `change` is taken. A zero start price returns invalid_change_baseline. The endpoint is a database-only reader and never calls upstream providers.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "9eb93f41-1533-c408-412d-6813bd9060fa",
              "name": "Palladium price change over a period — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "palladium",
                    "change"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "period",
                      "value": "1w"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-02-01",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"change\",\n  \"metal\": \"palladium\",\n  \"currency\": \"USD\",\n  \"unit\": \"troy_oz\",\n  \"start\": {\n    \"date\": \"2026-01-08\",\n    \"value\": \"4400\"\n  },\n  \"end\": {\n    \"date\": \"2026-01-15\",\n    \"value\": \"4527.86\"\n  },\n  \"change\": \"127.86\",\n  \"change_percent\": \"2.9059\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('change values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    pm.expect(body.start.value).to.be.a('string');",
                  "    pm.expect(body.end.value).to.be.a('string');",
                  "    pm.expect(body.change).to.be.a('string');",
                  "    pm.expect(body.change_percent).to.be.a('string');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "27e23a12-7868-6e6d-480b-068dfa8d0a26",
          "name": "Copper price change over a period",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "copper",
                "change"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "period",
                  "value": "1w"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-02-01",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the absolute and percentage change in the copper price between the final cached observation of two UTC days. Use either start and end (at most 365 days apart; start alone runs to today) or one rolling period: 1d, 1w, 1m or 1y (1, 7, 30 or 365 days back from today). Values are decimal strings: `change` is in the requested unit and `change_percent` is relative to the start price, rounded to four decimal places. Gram and kilogram start and end values are rounded to eight decimal places before `change` is taken. A zero start price returns invalid_change_baseline. The endpoint is a database-only reader and never calls upstream providers.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "f31f99c6-2a6b-24a3-68a4-577ad95ea9e6",
              "name": "Copper price change over a period — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "copper",
                    "change"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "period",
                      "value": "1w"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-02-01",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"change\",\n  \"metal\": \"copper\",\n  \"currency\": \"USD\",\n  \"unit\": \"troy_oz\",\n  \"start\": {\n    \"date\": \"2026-01-08\",\n    \"value\": \"4400\"\n  },\n  \"end\": {\n    \"date\": \"2026-01-15\",\n    \"value\": \"4527.86\"\n  },\n  \"change\": \"127.86\",\n  \"change_percent\": \"2.9059\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('change values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    pm.expect(body.start.value).to.be.a('string');",
                  "    pm.expect(body.end.value).to.be.a('string');",
                  "    pm.expect(body.change).to.be.a('string');",
                  "    pm.expect(body.change_percent).to.be.a('string');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "31aa0504-8685-bb41-aecf-aebe4a904f63",
          "name": "Platinum price change over a period",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "platinum",
                "change"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "period",
                  "value": "1w"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-02-01",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the absolute and percentage change in the platinum price between the final cached observation of two UTC days. Use either start and end (at most 365 days apart; start alone runs to today) or one rolling period: 1d, 1w, 1m or 1y (1, 7, 30 or 365 days back from today). Values are decimal strings: `change` is in the requested unit and `change_percent` is relative to the start price, rounded to four decimal places. Gram and kilogram start and end values are rounded to eight decimal places before `change` is taken. A zero start price returns invalid_change_baseline. The endpoint is a database-only reader and never calls upstream providers.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "f8e3545a-3423-b9e4-3db7-6ba080cf87a4",
              "name": "Platinum price change over a period — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "platinum",
                    "change"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "period",
                      "value": "1w"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-02-01",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"change\",\n  \"metal\": \"platinum\",\n  \"currency\": \"USD\",\n  \"unit\": \"troy_oz\",\n  \"start\": {\n    \"date\": \"2026-01-08\",\n    \"value\": \"4400\"\n  },\n  \"end\": {\n    \"date\": \"2026-01-15\",\n    \"value\": \"4527.86\"\n  },\n  \"change\": \"127.86\",\n  \"change_percent\": \"2.9059\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('change values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    pm.expect(body.start.value).to.be.a('string');",
                  "    pm.expect(body.end.value).to.be.a('string');",
                  "    pm.expect(body.change).to.be.a('string');",
                  "    pm.expect(body.change_percent).to.be.a('string');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "8a056de2-b7f6-e668-f6a9-3b935f6b9b16",
          "name": "Gold karat prices per gram",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "carat"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "date",
                  "value": "2026-01-15",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns cached gold prices per gram for the approved karat keys. Without date, the current cached gold row is used. With date=YYYY-MM-DD, the final cached gold observation within that UTC day is used. Each karat price is an eight-place decimal string; this is a response-type compatibility change from the earlier JSON-number values. This database-only reader never calls an upstream provider or bridges currencies.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "e2327d9c-5a78-a869-544c-1258aeb8929e",
              "name": "Gold karat prices per gram — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "carat"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "date",
                      "value": "2026-01-15",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"currency\": \"USD\",\n  \"unit\": \"gram\",\n  \"as_of\": \"2026-01-15T12:00:00.000Z\",\n  \"karats\": {\n    \"24k\": \"145.57407936\",\n    \"23k\": \"139.50849272\",\n    \"22k\": \"133.44290608\",\n    \"21.6k\": \"131.01667142\",\n    \"21k\": \"127.37731944\",\n    \"18k\": \"109.18055952\",\n    \"16k\": \"97.04938624\",\n    \"14k\": \"84.91821296\",\n    \"12k\": \"72.78703968\",\n    \"10k\": \"60.65586640\",\n    \"9k\": \"54.59027976\",\n    \"8k\": \"48.52469312\",\n    \"6k\": \"36.39351984\"\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('karat prices stay exact decimal strings', function () {",
                  "    var karats = pm.response.json().karats;",
                  "    Object.keys(karats).forEach(function (key) { pm.expect(karats[key]).to.be.a('string').and.match(/^\\d+\\.\\d{8}$/); });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "67bb6adc-a275-64c6-7ac7-1c5da49acf2f",
      "name": "derived",
      "description": "Cache-backed derived market metrics, one endpoint per metric (API key required; consumes monthly quota). GET /v1/gold-silver-ratio returns the latest or historical UTC-day gold-to-silver ratio; GET /v1/gold/moving-average, /v1/gold/volatility and /v1/gold/drawdown return gold technical indicators for a required date range.",
      "item": [
        {
          "id": "e6b68e97-1d3f-a707-7129-902076ae3c2b",
          "name": "Gold-to-silver ratio",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold-silver-ratio"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "start",
                  "value": "2026-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2026-01-31",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the gold-to-silver ratio from stored observations. With no start and end dates, the route uses the latest cached gold and silver rows and returns one point. With both dates, it uses the final stored gold and silver observation in each UTC day within the inclusive range. Missing dates are omitted and missing or invalid input never triggers an upstream request. The query is calculated in SQL and cached in memory for five minutes per currency and range. Derived values remain subject to the plan commercial-use terms; all plans receive the same data contract and differ only in monthly quota.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "3613aeb8-5658-fe28-626a-5cad273692b1",
              "name": "Gold-to-silver ratio — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold-silver-ratio"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2026-01-31",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"currency\": \"USD\",\n  \"start_date\": null,\n  \"end_date\": null,\n  \"points\": [\n    {\n      \"date\": \"2026-01-15\",\n      \"value\": \"68.40312345\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "d54bb59e-3644-6973-d9f0-e4c0f528da17",
          "name": "Gold moving average of 50 daily closes",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "moving-average"
              ],
              "query": [
                {
                  "key": "window",
                  "value": "50"
                },
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "start",
                  "value": "2026-01-01"
                },
                {
                  "key": "end",
                  "value": "2026-12-31"
                }
              ],
              "variable": []
            },
            "description": "Returns the simple moving average of daily gold closes over the requested window. Each value uses up to 50 or 200 valid stored daily closes including the current close and is a partial warm-up average when fewer closes exist. Uses the final stored gold observation in each UTC weekday (Saturday and Sunday UTC rows are excluded) within the inclusive start/end range, which is required. Missing dates are omitted and no request triggers an upstream call. The derived series is cached in memory for five minutes per currency and range. All plans receive the same data contract and differ only in monthly quota. Moving-average values are decimal strings rounded half-up to eight decimal places.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "ebdfe61a-3de9-5be5-d78e-e6ea001a2672",
              "name": "Gold moving average of 50 daily closes — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "moving-average"
                  ],
                  "query": [
                    {
                      "key": "window",
                      "value": "50"
                    },
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01"
                    },
                    {
                      "key": "end",
                      "value": "2026-12-31"
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"currency\": \"USD\",\n  \"window\": 50,\n  \"unit\": \"toz\",\n  \"start_date\": \"2026-01-01\",\n  \"end_date\": \"2026-12-31\",\n  \"points\": [\n    {\n      \"date\": \"2026-01-15\",\n      \"value\": \"5100.00000000\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "0db2dc71-a741-68a0-ef4c-a501b811c15d",
          "name": "Gold realised volatility over 30 daily returns",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "volatility"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "start",
                  "value": "2026-01-01"
                },
                {
                  "key": "end",
                  "value": "2026-12-31"
                }
              ],
              "variable": []
            },
            "description": "Returns annualised sample volatility of 30 daily gold returns (standard deviation × √252) as a fraction. Days before 30 returns exist are omitted, so a short range can return an empty points array. Uses the final stored gold observation in each UTC weekday (Saturday and Sunday UTC rows are excluded) within the inclusive start/end range, which is required. Missing dates are omitted and no request triggers an upstream call. The query is calculated in SQL and cached in memory for five minutes per currency and range. All plans receive the same data contract and differ only in monthly quota.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "9ad5f29e-3556-637c-e094-bbb1a8e59bba",
              "name": "Gold realised volatility over 30 daily returns — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "volatility"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01"
                    },
                    {
                      "key": "end",
                      "value": "2026-12-31"
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"currency\": \"USD\",\n  \"window\": 30,\n  \"start_date\": \"2026-01-01\",\n  \"end_date\": \"2026-12-31\",\n  \"points\": [\n    {\n      \"date\": \"2026-01-15\",\n      \"value\": \"0.15000000\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "47e1927d-b860-a7aa-4dec-a7eb98f45679",
          "name": "Gold drawdown from its running peak",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "gold",
                "drawdown"
              ],
              "query": [
                {
                  "key": "currency",
                  "value": "USD"
                },
                {
                  "key": "start",
                  "value": "2026-01-01"
                },
                {
                  "key": "end",
                  "value": "2026-12-31"
                }
              ],
              "variable": []
            },
            "description": "Returns the decline of each trading-day gold close from its running peak over up to 1,260 trading-day observations, as a fraction that is zero or negative. Values are partial warm-up drawdowns when fewer observations exist. Uses the final stored gold observation in each UTC weekday (Saturday and Sunday UTC rows are excluded) within the inclusive start/end range, which is required. Missing dates are omitted and no request triggers an upstream call. The query is calculated in SQL and cached in memory for five minutes per currency and range. All plans receive the same data contract and differ only in monthly quota.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "e4b94bdb-003d-b66a-354d-f9cc76cc52ff",
              "name": "Gold drawdown from its running peak — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "gold",
                    "drawdown"
                  ],
                  "query": [
                    {
                      "key": "currency",
                      "value": "USD"
                    },
                    {
                      "key": "start",
                      "value": "2026-01-01"
                    },
                    {
                      "key": "end",
                      "value": "2026-12-31"
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"currency\": \"USD\",\n  \"lookback_observations\": 1260,\n  \"start_date\": \"2026-01-01\",\n  \"end_date\": \"2026-12-31\",\n  \"points\": [\n    {\n      \"date\": \"2026-01-15\",\n      \"value\": \"-0.05000000\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "0abcf79f-6b92-99b5-f16c-7e6a43295d15",
      "name": "macro",
      "description": "Macroeconomic time series by country (API key required). GET /v1/policy-rates, /v1/inflation and /v1/bond-yields take a country in the path (US, GB or EA; uk and eu aliases) with optional inclusive start and end dates; the bare path returns the latest value for every covered country. Values are decimal strings. GET /v1/government-debt, /v1/government-borrowing and /v1/debt-interest follow the same country and date rules and include Iceland (IS) annual Statistics Iceland series at full PX precision, plus EU member states; Iceland debt includes pension liabilities and payables, not Maastricht debt. Peru (PE, path pe) has BCRPData debt and a reported debt-to-GDP ratio, but no borrowing or interest series. Singapore serves annual central-government Total Government Debt (M130071) and a derived nominal-GDP ratio (M015731), which is derived rather than published. No SG or PE borrowing data. Debt interest has no US, CH, SG or PE data. GET /v1/money-supply and /v1/central-bank-balance-sheet expose only registered series with stored observations; valid countries with no matching data return no_data. Monetary Postman response examples are synthetic contract fixtures and do not imply live coverage. Reads consume monthly quota.",
      "item": [
        {
          "id": "5b052dcd-ce65-65cb-5995-1a9796271a4c",
          "name": "Policy rates for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "policy-rates",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "US",
                  "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                }
              ]
            },
            "description": "Returns the central-bank policy rate series of one country. Without start and end each series holds its latest observation; with a range it holds every observation whose period end is in range, in chronological order. Series without observations in the range are left out. Covered countries are `US`, `GB` and `EA` (euro area); any other valid country code returns 404 `no_data`. Values are decimal strings. Each series carries its label, unit, frequency, method and source attribution with the upstream series id. Requests read stored observations and never call upstream sources; every plan receives the same data contract and differs only in monthly quota. Policy rates are stored per daily source observation. United States series are the effective federal funds rate and the target range bounds from New York Fed Markets Data (EFFR). Euro-area series are the ECB deposit facility, main refinancing operations and marginal lending facility rates. United Kingdom policy uses Bank of England IUDBEDR Bank Rate observations; BoE data is attributed under the Open Government Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. European Central Bank statistics are freely available for reuse when accurately reproduced and cited.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "fb530499-59c4-cfd1-dcd8-e1c576f494bb",
              "name": "Policy rates for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "policy-rates",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "US",
                      "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"policy_rates\",\n  \"country\": \"US\",\n  \"country_name\": \"United States\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"effective_federal_funds_rate\",\n      \"label\": \"Effective federal funds rate\",\n      \"unit\": \"percent\",\n      \"frequency\": \"daily\",\n      \"method\": \"latest\",\n      \"source\": {\n        \"id\": \"ny_fed\",\n        \"series_id\": \"EFFR.percentRate\",\n        \"attribution\": \"Federal Reserve Bank of New York\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-01-15\",\n          \"value\": \"3.63\",\n          \"status\": \"actual\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "8be9356d-d457-9ea7-10e8-0507425ab95a",
          "name": "Latest policy rates for every covered country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "policy-rates"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each central-bank policy rate series for every covered country in the order US, GB, EA, as one quota-counted request. Countries without any matching observation are left out. This route always returns latest values and ignores `start` and `end`; use the per-country route for history. Covered countries are `US`, `GB` and `EA` (euro area); any other valid country code returns 404 `no_data`. Values are decimal strings. Each series carries its label, unit, frequency, method and source attribution with the upstream series id. Requests read stored observations and never call upstream sources; every plan receives the same data contract and differs only in monthly quota. Policy rates are stored per daily source observation. United States series are the effective federal funds rate and the target range bounds from New York Fed Markets Data (EFFR). Euro-area series are the ECB deposit facility, main refinancing operations and marginal lending facility rates. United Kingdom policy uses Bank of England IUDBEDR Bank Rate observations; BoE data is attributed under the Open Government Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. European Central Bank statistics are freely available for reuse when accurately reproduced and cited.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "b10b1308-530c-bf9e-284e-9fdb3878a1f3",
              "name": "Latest policy rates for every covered country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "policy-rates"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"policy_rates\",\n  \"countries\": [\n    {\n      \"country\": \"US\",\n      \"country_name\": \"United States\",\n      \"series\": [\n        {\n          \"id\": \"effective_federal_funds_rate\",\n          \"label\": \"Effective federal funds rate\",\n          \"unit\": \"percent\",\n          \"frequency\": \"daily\",\n          \"method\": \"latest\",\n          \"source\": {\n            \"id\": \"ny_fed\",\n            \"series_id\": \"EFFR.percentRate\",\n            \"attribution\": \"Federal Reserve Bank of New York\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2026-01-15\",\n              \"value\": \"3.63\",\n              \"status\": \"actual\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "f53d5c8a-1001-ee77-829b-fc52a0022823",
          "name": "Inflation for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "inflation",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "year_over_year",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "US",
                  "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                }
              ]
            },
            "description": "Returns the inflation series of one country. Without start and end each series holds its latest observation; with a range it holds every observation whose period end is in range, in chronological order. Series without observations in the range are left out. Covered countries are `US`, `GB` and `EA` (euro area); any other valid country code returns 404 `no_data`. Values are decimal strings. Each series carries its label, unit, frequency, method and source attribution with the upstream series id. Requests read stored observations and never call upstream sources; every plan receives the same data contract and differs only in monthly quota. Realised inflation is monthly and year on year: BLS CPI-U is the not-seasonally-adjusted CUUR0000SA0 series, euro-area HICP uses the metadata-verified all-items annual-rate series and UK inflation uses the Office for National Statistics D7G7 CPI annual rate. U.S. Treasury breakevens (basis breakeven) are monthly averages derived from matched nominal and real yield dates. UK RPI-linked implied inflation (basis implied) comes from Bank of England yield curves at 2y, 5y, 10y and 30y tenors using official month-end archive dates and method month_end. ECB Consumer Expectations Survey values (basis expectation, 12m and 5y horizons) are weighted-median survey expectations, not market-implied. BoE and ONS data are attributed under the Open Government Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. European Central Bank statistics are freely available for reuse when accurately reproduced and cited.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "bebf0cb9-85a9-9d30-7986-4de1e9446a4d",
              "name": "Inflation for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "inflation",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    },
                    {
                      "key": "basis",
                      "value": "year_over_year",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "US",
                      "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"inflation\",\n  \"country\": \"US\",\n  \"country_name\": \"United States\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"cpi_u_yoy\",\n      \"label\": \"CPI-U, year on year\",\n      \"basis\": \"year_over_year\",\n      \"unit\": \"percent\",\n      \"frequency\": \"monthly\",\n      \"method\": \"latest\",\n      \"source\": {\n        \"id\": \"bls\",\n        \"series_id\": \"CUUR0000SA0\",\n        \"attribution\": \"U.S. Bureau of Labor Statistics\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"2.7\",\n          \"status\": \"provisional\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "3976f6ea-5bd0-8a9a-12f7-3970070aad2b",
          "name": "Latest inflation for every covered country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "inflation"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "year_over_year",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the latest observation of each inflation series for every covered country in the order US, GB, EA, as one quota-counted request. Countries without any matching observation are left out. This route always returns latest values and ignores `start` and `end`; use the per-country route for history. Covered countries are `US`, `GB` and `EA` (euro area); any other valid country code returns 404 `no_data`. Values are decimal strings. Each series carries its label, unit, frequency, method and source attribution with the upstream series id. Requests read stored observations and never call upstream sources; every plan receives the same data contract and differs only in monthly quota. Realised inflation is monthly and year on year: BLS CPI-U is the not-seasonally-adjusted CUUR0000SA0 series, euro-area HICP uses the metadata-verified all-items annual-rate series and UK inflation uses the Office for National Statistics D7G7 CPI annual rate. U.S. Treasury breakevens (basis breakeven) are monthly averages derived from matched nominal and real yield dates. UK RPI-linked implied inflation (basis implied) comes from Bank of England yield curves at 2y, 5y, 10y and 30y tenors using official month-end archive dates and method month_end. ECB Consumer Expectations Survey values (basis expectation, 12m and 5y horizons) are weighted-median survey expectations, not market-implied. BoE and ONS data are attributed under the Open Government Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. European Central Bank statistics are freely available for reuse when accurately reproduced and cited.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "5c71e630-5c82-e95c-9622-54f150c15a4c",
              "name": "Latest inflation for every covered country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "inflation"
                  ],
                  "query": [
                    {
                      "key": "basis",
                      "value": "year_over_year",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"inflation\",\n  \"countries\": [\n    {\n      \"country\": \"US\",\n      \"country_name\": \"United States\",\n      \"series\": [\n        {\n          \"id\": \"cpi_u_yoy\",\n          \"label\": \"CPI-U, year on year\",\n          \"basis\": \"year_over_year\",\n          \"unit\": \"percent\",\n          \"frequency\": \"monthly\",\n          \"method\": \"latest\",\n          \"source\": {\n            \"id\": \"bls\",\n            \"series_id\": \"CUUR0000SA0\",\n            \"attribution\": \"U.S. Bureau of Labor Statistics\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"2.7\",\n              \"status\": \"provisional\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "efe15bc4-d82d-af8b-611f-df9d889ea373",
          "name": "Bond yields for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bond-yields",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                },
                {
                  "key": "tenor",
                  "value": "10y"
                },
                {
                  "key": "basis",
                  "value": "nominal",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "US",
                  "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                }
              ]
            },
            "description": "Returns the government bond yield series of one country. Without start and end each series holds its latest observation; with a range it holds every observation whose period end is in range, in chronological order. Series without observations in the range are left out. Covered countries are `US`, `GB` and `EA` (euro area); any other valid country code returns 404 `no_data`. Values are decimal strings. Each series carries its label, unit, frequency, method and source attribution with the upstream series id. Requests read stored observations and never call upstream sources; every plan receives the same data contract and differs only in monthly quota. Yields are monthly. U.S. Treasury nominal and real yields and European Central Bank AAA euro-area government bond yields are monthly averages of valid daily observations from complete calendar months; the euro area has no real-yield series. UK gilt yields are Bank of England nominal and real zero-coupon spot yields at 2y, 5y, 10y and 30y tenors using official month-end archive dates and method month_end. BoE data is attributed under the Open Government Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. European Central Bank statistics are freely available for reuse when accurately reproduced and cited.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "ad02925d-0193-7901-30ff-39c8f3065318",
              "name": "Bond yields for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "bond-yields",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    },
                    {
                      "key": "tenor",
                      "value": "10y"
                    },
                    {
                      "key": "basis",
                      "value": "nominal",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "US",
                      "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"bond_yields\",\n  \"country\": \"US\",\n  \"country_name\": \"United States\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"treasury_nominal_yield_10y\",\n      \"label\": \"10-year Treasury yield (nominal)\",\n      \"basis\": \"nominal\",\n      \"tenor\": \"10y\",\n      \"unit\": \"percent\",\n      \"frequency\": \"monthly\",\n      \"method\": \"monthly_average\",\n      \"source\": {\n        \"id\": \"us_treasury\",\n        \"series_id\": \"daily_treasury_yield_curve.BC_10YEAR\",\n        \"attribution\": \"U.S. Department of the Treasury\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"4.14\",\n          \"status\": \"revised\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "f3011e74-2b99-da96-9650-b938b5c89167",
          "name": "Latest bond yields for every covered country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bond-yields"
              ],
              "query": [
                {
                  "key": "tenor",
                  "value": "10y"
                },
                {
                  "key": "basis",
                  "value": "nominal",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the latest observation of each government bond yield series for every covered country in the order US, GB, EA, as one quota-counted request. Countries without any matching observation are left out. This route always returns latest values and ignores `start` and `end`; use the per-country route for history. Covered countries are `US`, `GB` and `EA` (euro area); any other valid country code returns 404 `no_data`. Values are decimal strings. Each series carries its label, unit, frequency, method and source attribution with the upstream series id. Requests read stored observations and never call upstream sources; every plan receives the same data contract and differs only in monthly quota. Yields are monthly. U.S. Treasury nominal and real yields and European Central Bank AAA euro-area government bond yields are monthly averages of valid daily observations from complete calendar months; the euro area has no real-yield series. UK gilt yields are Bank of England nominal and real zero-coupon spot yields at 2y, 5y, 10y and 30y tenors using official month-end archive dates and method month_end. BoE data is attributed under the Open Government Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. European Central Bank statistics are freely available for reuse when accurately reproduced and cited.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "d3f7f139-696b-41b7-3110-2352da0b9c53",
              "name": "Latest bond yields for every covered country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "bond-yields"
                  ],
                  "query": [
                    {
                      "key": "tenor",
                      "value": "10y"
                    },
                    {
                      "key": "basis",
                      "value": "nominal",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"bond_yields\",\n  \"countries\": [\n    {\n      \"country\": \"US\",\n      \"country_name\": \"United States\",\n      \"series\": [\n        {\n          \"id\": \"treasury_nominal_yield_10y\",\n          \"label\": \"10-year Treasury yield (nominal)\",\n          \"basis\": \"nominal\",\n          \"tenor\": \"10y\",\n          \"unit\": \"percent\",\n          \"frequency\": \"monthly\",\n          \"method\": \"monthly_average\",\n          \"source\": {\n            \"id\": \"us_treasury\",\n            \"series_id\": \"daily_treasury_yield_curve.BC_10YEAR\",\n            \"attribution\": \"U.S. Department of the Treasury\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"4.14\",\n              \"status\": \"revised\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "0b64560e-fd88-f20b-3090-3e45f9096635",
          "name": "Government debt for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "government-debt",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "qa",
                  "description": "Covered for debt: US, GB (or uk), AU, IS, EA (or eu), SG, AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, NO, CA, CH, QA, JP, PE."
                }
              ]
            },
            "description": "Returns the stored government debt series for one country: `US`, `GB` (alias `uk`), `AU`, `IS`, `EA` (alias `eu`, the euro-area aggregate), `SG`, `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `ES`, `FI`, `FR`, `GR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `NO`, `CA`, `CH`, `QA`, `JP`, or `PE`. Any other valid country code returns 404 `no_data`. Without `start` and `end` each series carries its latest observation; with a range it carries every observation whose period end falls inside it, in chronological order. Each series declares its government `scope`, accounting `basis`, `unit`, `frequency`, `period_type`, `method`, and a plain-language `definition` including its sign convention; unlike measures are not normalised into a common definition, so compare series only when their scope and basis match. Values are decimal strings and `date` is the period end. `status` is included when a publisher provides actual, provisional or revised status. United States series are U.S. Treasury Fiscal Service data distributed by FRED: total public debt outstanding (GFDEBTN) and debt held by the public (FYGFDPUN) at the end of each calendar quarter, in millions of U.S. dollars with central-government scope, plus `treasury_federal_debt_to_gdp`, a quarterly Bullion API ratio (`derived_ratio`, with its formula and inputs in `derivation`) of quarter-end total public debt outstanding to BEA nominal GDP (NIPA Table 1.1.5, seasonally adjusted annual rate). This product uses the Bureau of Economic Analysis (BEA) Data API but is not endorsed or certified by BEA. This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. Peru series come from BCRPData: quarterly non-financial-public-sector debt outstanding in millions of Peruvian soles (PN03371FQ) and the separately published percentage-of-PBI ratio (PN03432FQ). Both are reported measures with public-sector scope; Bullion API does not derive the ratio. BCRPData metadata credits the Ministry of Economy and Finance, Banco de la Nación, Ministry of Transportation and Communications, ONP and Cofide as source institutions. Its terms permit reproduction with source attribution, do not identify a Creative Commons licence, and state that responsibility for externally sourced statistics rests with the original provider. United Kingdom series come from the Office for National Statistics Public sector finances time series (dataset PUSF), not seasonally adjusted: month-end public sector net debt excluding public sector banks (KSE6, millions of pounds, public-sector scope) and as a percentage of GDP (HF6X, whose ONS denominator is GDP for the 12 months centred on the month, including projected GDP, so it is revised as outturn GDP arrives). Euro-area series come from Eurostat for the Eurostat EA21 aggregate (the fixed composition of the 21 member states in the euro area from 2026, back-calculated for earlier periods) and general-government scope (sector S13): consolidated gross debt in millions of euro and as a Eurostat-published percentage of GDP, annual at 31 December from the Excessive Deficit Procedure data (`gov_10dd_edpt1`) and quarterly at the quarter end from `gov_10q_ggdebt`; annual and quarterly vintages are separate series. Norway series come from Statistics Norway (SSB) StatBank for the national-accounts general-government sector: gross public debt at nominal value in millions of Norwegian kroner, annual at 31 December (table 08753) and quarterly at the quarter end (table 11559, not seasonally adjusted), plus `ssb_gross_debt_to_gdp_annual` and `ssb_gross_debt_to_gdp_quarterly`, Bullion API ratios (`derived_ratio`, with formula and inputs in `derivation`) of that debt to GDP at current market prices including petroleum (table 09189; quarterly debt over the sum of the last four quarters of table 09190). Statistics Norway publishes no such ratio. Canada series come from Statistics Canada for the national-accounts general-government sector, quarterly only: gross debt in millions of Canadian dollars at the quarter end (table 36-10-0467-01) and gross debt to GDP as a percentage published by Statistics Canada (table 38-10-0237-01, whose gross debt is defined more widely than the debt table). Switzerland series come from the Swiss Federal Finance Administration (GFS model, whole-state general government), annual accounts years only, in millions of Swiss francs at 31 December: gross debt excluding financial derivatives as defined by the IMF, the Maastricht-style debt, and the debt ratio the Administration publishes for that debt (in percent). The two debt measures are different and neither is verified as comparable with the Eurostat series. Qatar series come from official Ministry of Finance and National Planning Council datasets: national central-government public debt in millions of Qatari riyals at 31 December (dataset MOF-OD-C0-00004) through 2025, and a Bullion API debt-to-GDP calculation from same-year nominal GDP (dataset NPC-OD-C0-01288) only for matched years through 2024. No 2025 GDP or ratio is inferred. Debt values are positive positions at the period end, so observations have no `period_start`. Singapore serves annual central-government Total Government Debt (M130071, SGD millions) at 31 December and a Bullion API derived_ratio using the same calendar year’s nominal GDP (M015731). Includes non-spending-purpose instruments whose proceeds are invested and cannot be spent, not net or consolidated general-government debt. No Singapore borrowing, servicing, quarterly data or forecasts are served. Iceland series come from Statistics Iceland THJ05181: annual total liabilities including pension/insurance liabilities and payables (not Maastricht debt), in millions of ISK and as a published percentage of GDP, preserving full PX decimal precision. Australian series are ABS general-government gross L2 debt at 30 June from Government Finance Statistics, Annual Table 14 (row Equals L2, column All Australia general government), valued at current market value under the ABS creditor approach, in AUD millions. The Bullion API derived ratio uses original current-price GDP for the matching July-to-June financial year from ABS SDMX flow ANA_AGG version 1.0.0, key M3.GPM.10.AUS.Q; it is not an ABS-published ratio or the net L2 ratio in Table 16. ABS general-government gross L2 debt is valued at current market value using the ABS creditor approach, not at nominal or face value (methodology §§13.4–13.6 and 13.9: https://www.abs.gov.au/statistics/detailed-methodology-information/concepts-sources-methods/australian-system-government-finance-statistics-concepts-sources-and-methods/2015/13-treatment-selected-items/part-b-treatment-debt-australian-gfs). The ratio denominator is the sum of the four original, current-price GDP quarters for the matching July-to-June financial year. Iceland data: Source: Statistics Iceland, THJ05181 and THJ05121, CC BY 4.0 (https://www.statice.is/publications/open-data-access/). Modifications are not attributed to Statistics Iceland. U.S. Treasury Fiscal Service data is a U.S. federal government work, distributed by FRED, Federal Reserve Bank of St. Louis. United Kingdom data: Source: Office for National Statistics, Public Sector Finances. Contains public sector information licensed under the Open Government Licence v3.0: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. Euro-area and EU member-state data: Source: Eurostat, government finance statistics; reuse is authorised provided the source is acknowledged. Australian data: Source: Australian Bureau of Statistics, Government Finance Statistics, Annual and Australian National Accounts. ABS website material is licensed under Creative Commons Attribution 4.0 International, subject to the exclusions and third-party rights identified in the ABS copyright terms. Those terms require attribution to the ABS for material obtained from its website; do not imply ABS endorsement. The ABS Data API is Beta and may change or be unavailable. Singapore annual debt and GDP: Singapore Open Data Licence v1.0: https://data.gov.sg/open-data-licence. Commercial use and distribution permitted with source acknowledgement and licence link; no official endorsement. Sublicensing is limited to enabling application/website use; downstream sub-licensees receive no rights. Customers needing additional rights must obtain the original licence directly at data.gov.sg. Debt catalogue: https://data.gov.sg/datasets/d_d4f7c9d15692b3c08aa9bc8bc56c0a72/view. GDP catalogue: https://data.gov.sg/datasets/d_d0db56a7c201c9a1e42c846d4fe6da8f/view. Norway data: Source: Statistics Norway (SSB), www.ssb.no, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made (Bullion API calculates the debt-to-GDP ratios), and Statistics Norway does not endorse Bullion API. Canada data: Source: Statistics Canada, tables 36-10-0467-01, 38-10-0237-01 and 36-10-0477-01, reference date shown on each observation. Reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada (Statistics Canada Open Licence, https://www.statcan.gc.ca/en/terms-conditions/open-licence). This does not constitute an endorsement by Statistics Canada of this product. Switzerland data: Source: Swiss Federal Finance Administration (EFV/FFA), \"Main aggregates and forecasts with FS- and GFS-Model\", https://opendata.swiss/en/dataset/hauptaggregate-und-prognosen-im-fs-und-gfs-modell, published as open government data under the opendata.swiss \"Open use\" terms (commercial use permitted, source recommended); provided without verification of the derived series, and not endorsed by the Federal Finance Administration. Qatar data: Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product). Both datasets identify CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made because Bullion API calculates matched-year debt-to-GDP ratios. Qatar Open Data Portal metadata observed 2026-09-30 reports the generic data-trust-index.ready-for-publication=false flag; this is not a publisher certification, data withdrawal or deprecation. Japan data: Source: Economic and Social Research Institute, Cabinet Office, Government of Japan, General Government Gross Debt (https://www.esri.cao.go.jp/en/sna/sddsplus/tables/ggd.xlsx) and Quarterly Estimates of GDP (https://www.esri.cao.go.jp/en/sna/sokuhou/sokuhou_top.html). The Cabinet Office notice (https://www.cao.go.jp/en/notice-e.html) states that numerical data and simple tables are not protected by copyright and may be used freely; the website Terms of Use govern website content and do not apply to those data. Source attribution and disclosure of the Bullion API debt-to-GDP calculation are Bullion API policy, not conditions imposed on those numerical data. This is not a claim of rights to separate third-party copyrighted material. The Cabinet Office does not endorse this product. A derived series is attributed as a Bullion API calculation naming every input source, never an input source alone; for a derived series `source.id` is the collecting or deriving source, not the sole provenance, so read `source.attribution` and `derivation` for every input. Forecasts, projections, and editorial classifications are never returned. Every plan can call this endpoint; API requests read the database and never call upstream sources.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "b71661d8-5ae3-9d6c-7e44-3c375ddf0a52",
              "name": "Government debt for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "government-debt",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "qa",
                      "description": "Covered for debt: US, GB (or uk), AU, IS, EA (or eu), SG, AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, NO, CA, CH, QA, JP, PE."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"government_debt\",\n  \"country\": \"QA\",\n  \"country_name\": \"Qatar\",\n  \"series\": [\n    {\n      \"id\": \"qatar_public_debt_annual\",\n      \"label\": \"National central-government debt (annual)\",\n      \"scope\": \"central_government\",\n      \"basis\": \"gross_debt\",\n      \"unit\": \"qar_millions\",\n      \"frequency\": \"annual\",\n      \"period_type\": \"point_in_time\",\n      \"method\": \"reported\",\n      \"definition\": \"Qatar: national central-government public debt outstanding at 31 December, in millions of Qatari riyals, the Ministry of Finance's reported total public-debt amount. Domestic and external components are checked against the reported total but are not added as separate observations.\",\n      \"source\": {\n        \"id\": \"qatar\",\n        \"series_id\": \"MOF-OD-C0-00004:public-debt/Total Public Debt\",\n        \"attribution\": \"Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product).\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"338600\"\n        }\n      ]\n    }\n  ],\n  \"start\": null,\n  \"end\": null\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "6f250080-a524-ad23-1b12-058d3d5aa29b",
          "name": "Latest government debt for every covered country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "government-debt"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each government debt series for every covered country, in the order `US`, `GB`, `AU`, `IS`, `EA`, `SG`, `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `ES`, `FI`, `FR`, `GR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `NO`, `CA`, `CH`, `QA`, `JP`, then `PE`, as one quota-counted request. Each series declares its government `scope`, accounting `basis`, `unit`, `frequency`, `period_type`, `method`, and a plain-language `definition` including its sign convention; unlike measures are not normalised into a common definition, so compare series only when their scope and basis match. Values are decimal strings and `date` is the period end. `status` is included when a publisher provides actual, provisional or revised status. United States series are U.S. Treasury Fiscal Service data distributed by FRED: total public debt outstanding (GFDEBTN) and debt held by the public (FYGFDPUN) at the end of each calendar quarter, in millions of U.S. dollars with central-government scope, plus `treasury_federal_debt_to_gdp`, a quarterly Bullion API ratio (`derived_ratio`, with its formula and inputs in `derivation`) of quarter-end total public debt outstanding to BEA nominal GDP (NIPA Table 1.1.5, seasonally adjusted annual rate). This product uses the Bureau of Economic Analysis (BEA) Data API but is not endorsed or certified by BEA. This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. Peru series come from BCRPData: quarterly non-financial-public-sector debt outstanding in millions of Peruvian soles (PN03371FQ) and the separately published percentage-of-PBI ratio (PN03432FQ). Both are reported measures with public-sector scope; Bullion API does not derive the ratio. BCRPData metadata credits the Ministry of Economy and Finance, Banco de la Nación, Ministry of Transportation and Communications, ONP and Cofide as source institutions. Its terms permit reproduction with source attribution, do not identify a Creative Commons licence, and state that responsibility for externally sourced statistics rests with the original provider. United Kingdom series come from the Office for National Statistics Public sector finances time series (dataset PUSF), not seasonally adjusted: month-end public sector net debt excluding public sector banks (KSE6, millions of pounds, public-sector scope) and as a percentage of GDP (HF6X, whose ONS denominator is GDP for the 12 months centred on the month, including projected GDP, so it is revised as outturn GDP arrives). Euro-area series come from Eurostat for the Eurostat EA21 aggregate (the fixed composition of the 21 member states in the euro area from 2026, back-calculated for earlier periods) and general-government scope (sector S13): consolidated gross debt in millions of euro and as a Eurostat-published percentage of GDP, annual at 31 December from the Excessive Deficit Procedure data (`gov_10dd_edpt1`) and quarterly at the quarter end from `gov_10q_ggdebt`; annual and quarterly vintages are separate series. Norway series come from Statistics Norway (SSB) StatBank for the national-accounts general-government sector: gross public debt at nominal value in millions of Norwegian kroner, annual at 31 December (table 08753) and quarterly at the quarter end (table 11559, not seasonally adjusted), plus `ssb_gross_debt_to_gdp_annual` and `ssb_gross_debt_to_gdp_quarterly`, Bullion API ratios (`derived_ratio`, with formula and inputs in `derivation`) of that debt to GDP at current market prices including petroleum (table 09189; quarterly debt over the sum of the last four quarters of table 09190). Statistics Norway publishes no such ratio. Canada series come from Statistics Canada for the national-accounts general-government sector, quarterly only: gross debt in millions of Canadian dollars at the quarter end (table 36-10-0467-01) and gross debt to GDP as a percentage published by Statistics Canada (table 38-10-0237-01, whose gross debt is defined more widely than the debt table). Switzerland series come from the Swiss Federal Finance Administration (GFS model, whole-state general government), annual accounts years only, in millions of Swiss francs at 31 December: gross debt excluding financial derivatives as defined by the IMF, the Maastricht-style debt, and the debt ratio the Administration publishes for that debt (in percent). The two debt measures are different and neither is verified as comparable with the Eurostat series. Qatar series come from official Ministry of Finance and National Planning Council datasets: national central-government public debt in millions of Qatari riyals at 31 December (dataset MOF-OD-C0-00004) through 2025, and a Bullion API debt-to-GDP calculation from same-year nominal GDP (dataset NPC-OD-C0-01288) only for matched years through 2024. No 2025 GDP or ratio is inferred. Debt values are positive positions at the period end, so observations have no `period_start`. Singapore serves annual central-government Total Government Debt (M130071, SGD millions) at 31 December and a Bullion API derived_ratio using the same calendar year’s nominal GDP (M015731). Includes non-spending-purpose instruments whose proceeds are invested and cannot be spent, not net or consolidated general-government debt. No Singapore borrowing, servicing, quarterly data or forecasts are served. Iceland series come from Statistics Iceland THJ05181: annual total liabilities including pension/insurance liabilities and payables (not Maastricht debt), in millions of ISK and as a published percentage of GDP, preserving full PX decimal precision. Australian series are ABS general-government gross L2 debt at 30 June from Government Finance Statistics, Annual Table 14 (row Equals L2, column All Australia general government), valued at current market value under the ABS creditor approach, in AUD millions. The Bullion API derived ratio uses original current-price GDP for the matching July-to-June financial year from ABS SDMX flow ANA_AGG version 1.0.0, key M3.GPM.10.AUS.Q; it is not an ABS-published ratio or the net L2 ratio in Table 16. ABS general-government gross L2 debt is valued at current market value using the ABS creditor approach, not at nominal or face value (methodology §§13.4–13.6 and 13.9: https://www.abs.gov.au/statistics/detailed-methodology-information/concepts-sources-methods/australian-system-government-finance-statistics-concepts-sources-and-methods/2015/13-treatment-selected-items/part-b-treatment-debt-australian-gfs). The ratio denominator is the sum of the four original, current-price GDP quarters for the matching July-to-June financial year. Iceland data: Source: Statistics Iceland, THJ05181 and THJ05121, CC BY 4.0 (https://www.statice.is/publications/open-data-access/). Modifications are not attributed to Statistics Iceland. U.S. Treasury Fiscal Service data is a U.S. federal government work, distributed by FRED, Federal Reserve Bank of St. Louis. United Kingdom data: Source: Office for National Statistics, Public Sector Finances. Contains public sector information licensed under the Open Government Licence v3.0: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. Euro-area and EU member-state data: Source: Eurostat, government finance statistics; reuse is authorised provided the source is acknowledged. Australian data: Source: Australian Bureau of Statistics, Government Finance Statistics, Annual and Australian National Accounts. ABS website material is licensed under Creative Commons Attribution 4.0 International, subject to the exclusions and third-party rights identified in the ABS copyright terms. Those terms require attribution to the ABS for material obtained from its website; do not imply ABS endorsement. The ABS Data API is Beta and may change or be unavailable. Singapore annual debt and GDP: Singapore Open Data Licence v1.0: https://data.gov.sg/open-data-licence. Commercial use and distribution permitted with source acknowledgement and licence link; no official endorsement. Sublicensing is limited to enabling application/website use; downstream sub-licensees receive no rights. Customers needing additional rights must obtain the original licence directly at data.gov.sg. Debt catalogue: https://data.gov.sg/datasets/d_d4f7c9d15692b3c08aa9bc8bc56c0a72/view. GDP catalogue: https://data.gov.sg/datasets/d_d0db56a7c201c9a1e42c846d4fe6da8f/view. Norway data: Source: Statistics Norway (SSB), www.ssb.no, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made (Bullion API calculates the debt-to-GDP ratios), and Statistics Norway does not endorse Bullion API. Canada data: Source: Statistics Canada, tables 36-10-0467-01, 38-10-0237-01 and 36-10-0477-01, reference date shown on each observation. Reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada (Statistics Canada Open Licence, https://www.statcan.gc.ca/en/terms-conditions/open-licence). This does not constitute an endorsement by Statistics Canada of this product. Switzerland data: Source: Swiss Federal Finance Administration (EFV/FFA), \"Main aggregates and forecasts with FS- and GFS-Model\", https://opendata.swiss/en/dataset/hauptaggregate-und-prognosen-im-fs-und-gfs-modell, published as open government data under the opendata.swiss \"Open use\" terms (commercial use permitted, source recommended); provided without verification of the derived series, and not endorsed by the Federal Finance Administration. Qatar data: Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product). Both datasets identify CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made because Bullion API calculates matched-year debt-to-GDP ratios. Qatar Open Data Portal metadata observed 2026-09-30 reports the generic data-trust-index.ready-for-publication=false flag; this is not a publisher certification, data withdrawal or deprecation. Japan data: Source: Economic and Social Research Institute, Cabinet Office, Government of Japan, General Government Gross Debt (https://www.esri.cao.go.jp/en/sna/sddsplus/tables/ggd.xlsx) and Quarterly Estimates of GDP (https://www.esri.cao.go.jp/en/sna/sokuhou/sokuhou_top.html). The Cabinet Office notice (https://www.cao.go.jp/en/notice-e.html) states that numerical data and simple tables are not protected by copyright and may be used freely; the website Terms of Use govern website content and do not apply to those data. Source attribution and disclosure of the Bullion API debt-to-GDP calculation are Bullion API policy, not conditions imposed on those numerical data. This is not a claim of rights to separate third-party copyrighted material. The Cabinet Office does not endorse this product. A derived series is attributed as a Bullion API calculation naming every input source, never an input source alone; for a derived series `source.id` is the collecting or deriving source, not the sole provenance, so read `source.attribution` and `derivation` for every input. Forecasts, projections, and editorial classifications are never returned. Every plan can call this endpoint; API requests read the database and never call upstream sources.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "1fb4673c-d828-8d4c-f033-d2f3a980c7cd",
              "name": "Latest government debt for every covered country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "government-debt"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"government_debt\",\n  \"countries\": [\n    {\n      \"country\": \"QA\",\n      \"country_name\": \"Qatar\",\n      \"series\": [\n        {\n          \"id\": \"qatar_public_debt_annual\",\n          \"label\": \"National central-government debt (annual)\",\n          \"scope\": \"central_government\",\n          \"basis\": \"gross_debt\",\n          \"unit\": \"qar_millions\",\n          \"frequency\": \"annual\",\n          \"period_type\": \"point_in_time\",\n          \"method\": \"reported\",\n          \"definition\": \"Qatar: national central-government public debt outstanding at 31 December, in millions of Qatari riyals, the Ministry of Finance's reported total public-debt amount. Domestic and external components are checked against the reported total but are not added as separate observations.\",\n          \"source\": {\n            \"id\": \"qatar\",\n            \"series_id\": \"MOF-OD-C0-00004:public-debt/Total Public Debt\",\n            \"attribution\": \"Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product).\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"338600\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"country\": \"PE\",\n      \"country_name\": \"Peru\",\n      \"series\": [\n        {\n          \"id\": \"peru_nonfinancial_public_sector_debt_to_gdp\",\n          \"label\": \"Non-financial public-sector debt to GDP (BCRP-published)\",\n          \"scope\": \"public_sector\",\n          \"basis\": \"nonfinancial_public_sector_debt\",\n          \"unit\": \"percent_of_gdp\",\n          \"frequency\": \"quarterly\",\n          \"period_type\": \"point_in_time\",\n          \"method\": \"reported\",\n          \"definition\": \"Peru: the BCRPData-published percentage of gross domestic product (PBI) for the non-financial-public-sector debt balance at each calendar quarter end, series PN03432FQ. BCRPData metadata identifies the Ministry of Economy and Finance, Banco de la Nación, Ministry of Transportation and Communications, ONP and Cofide as source institutions. The API publishes this ratio separately; Bullion API stores it as reported and does not calculate it or infer a different GDP denominator method.\",\n          \"source\": {\n            \"id\": \"bcrp_peru\",\n            \"series_id\": \"PN03432FQ\",\n            \"attribution\": \"Source: Banco Central de Reserva del Perú (BCRPData); metadata credits the Ministry of Economy and Finance, Banco de la Nación, Ministry of Transportation and Communications, ONP and Cofide as source institutions.\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2026-06-30\",\n              \"value\": \"28.2502269822259\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "6a4c7663-52ac-a31a-f20d-feebf907206f",
          "name": "Government borrowing for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "government-borrowing",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "us",
                  "description": "Covered for borrowing: US, GB (or uk), IS, EA (or eu), AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, NO, CA, CH."
                }
              ]
            },
            "description": "Returns the stored government borrowing series for one country: `US`, `GB` (alias `uk`), `IS`, `EA` (alias `eu`, the euro-area aggregate), `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `ES`, `FI`, `FR`, `GR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `NO`, `CA`, or `CH`. Any other valid country code returns 404 `no_data`. Without `start` and `end` each series carries its latest observation; with a range it carries every observation whose period end falls inside it, in chronological order. Each series declares its government `scope`, accounting `basis`, `unit`, `frequency`, `period_type`, `method`, and a plain-language `definition` including its sign convention; unlike measures are not normalised into a common definition, so compare series only when their scope and basis match. Values are decimal strings and `date` is the period end. `status` is included when a publisher provides actual, provisional or revised status. Sign conventions differ by source and are stated in each `definition`. United States series come from the Monthly Treasury Statement as distributed by FRED (MTSDS133FMS): the federal budget surplus (+) or deficit (-) for the calendar month, and fiscal year to date from 1 October as a Bullion API `derived_cumulative` sum of the monthly values, in millions of U.S. dollars with central-government scope; a negative value is a deficit. This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. United Kingdom series come from the Office for National Statistics Public sector finances time series (dataset PUSF), not seasonally adjusted: monthly public sector net borrowing excluding public sector banks (DZLS, millions of pounds), where a positive value is borrowing and a negative value a surplus, and fiscal-year-to-date net borrowing from 1 April as a Bullion API `derived_cumulative` sum of DZLS (not an ONS-published series). Euro-area series come from Eurostat for the Eurostat EA21 aggregate (the fixed composition of the 21 member states in the euro area from 2026, back-calculated for earlier periods) and general-government scope (sector S13): net lending (+) or net borrowing (-) (ESA 2010 B9) in millions of euro, where a negative value is net borrowing, annual for the calendar year (`fiscal_year`) from `gov_10dd_edpt1` and quarterly, not seasonally adjusted, from `gov_10q_ggnfa`. Borrowing is a flow, so observations carry `period_start`. Norway series come from Statistics Norway (SSB) for the national-accounts general-government sector: net lending (+) or net borrowing (-) in millions of Norwegian kroner at current prices, annual for the calendar year (table 14668) and quarterly, not seasonally adjusted (table 14667); a negative value is net borrowing. Canada series come from Statistics Canada: general-governments net lending (+) or net borrowing (-) in millions of Canadian dollars at current prices for the calendar quarter, unadjusted (table 36-10-0477-01); a negative value is net borrowing. Switzerland series come from the Swiss Federal Finance Administration: net lending (+) or net borrowing (-) in the GFS model in millions of Swiss francs for the calendar year (variable `saldo`); a negative value is net borrowing. Iceland reports annual financial balance (surplus positive, deficit negative) from Statistics Iceland THJ05121, in millions of ISK at current prices, at full PX decimal precision. ABS general-government gross L2 debt is valued at current market value using the ABS creditor approach, not at nominal or face value (methodology §§13.4–13.6 and 13.9: https://www.abs.gov.au/statistics/detailed-methodology-information/concepts-sources-methods/australian-system-government-finance-statistics-concepts-sources-and-methods/2015/13-treatment-selected-items/part-b-treatment-debt-australian-gfs). The ratio denominator is the sum of the four original, current-price GDP quarters for the matching July-to-June financial year. Iceland data: Source: Statistics Iceland, THJ05181 and THJ05121, CC BY 4.0 (https://www.statice.is/publications/open-data-access/). Modifications are not attributed to Statistics Iceland. U.S. Treasury Fiscal Service data is a U.S. federal government work, distributed by FRED, Federal Reserve Bank of St. Louis. United Kingdom data: Source: Office for National Statistics, Public Sector Finances. Contains public sector information licensed under the Open Government Licence v3.0: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. Euro-area and EU member-state data: Source: Eurostat, government finance statistics; reuse is authorised provided the source is acknowledged. Australian data: Source: Australian Bureau of Statistics, Government Finance Statistics, Annual and Australian National Accounts. ABS website material is licensed under Creative Commons Attribution 4.0 International, subject to the exclusions and third-party rights identified in the ABS copyright terms. Those terms require attribution to the ABS for material obtained from its website; do not imply ABS endorsement. The ABS Data API is Beta and may change or be unavailable. Singapore annual debt and GDP: Singapore Open Data Licence v1.0: https://data.gov.sg/open-data-licence. Commercial use and distribution permitted with source acknowledgement and licence link; no official endorsement. Sublicensing is limited to enabling application/website use; downstream sub-licensees receive no rights. Customers needing additional rights must obtain the original licence directly at data.gov.sg. Debt catalogue: https://data.gov.sg/datasets/d_d4f7c9d15692b3c08aa9bc8bc56c0a72/view. GDP catalogue: https://data.gov.sg/datasets/d_d0db56a7c201c9a1e42c846d4fe6da8f/view. Norway data: Source: Statistics Norway (SSB), www.ssb.no, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made (Bullion API calculates the debt-to-GDP ratios), and Statistics Norway does not endorse Bullion API. Canada data: Source: Statistics Canada, tables 36-10-0467-01, 38-10-0237-01 and 36-10-0477-01, reference date shown on each observation. Reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada (Statistics Canada Open Licence, https://www.statcan.gc.ca/en/terms-conditions/open-licence). This does not constitute an endorsement by Statistics Canada of this product. Switzerland data: Source: Swiss Federal Finance Administration (EFV/FFA), \"Main aggregates and forecasts with FS- and GFS-Model\", https://opendata.swiss/en/dataset/hauptaggregate-und-prognosen-im-fs-und-gfs-modell, published as open government data under the opendata.swiss \"Open use\" terms (commercial use permitted, source recommended); provided without verification of the derived series, and not endorsed by the Federal Finance Administration. Qatar data: Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product). Both datasets identify CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made because Bullion API calculates matched-year debt-to-GDP ratios. Qatar Open Data Portal metadata observed 2026-09-30 reports the generic data-trust-index.ready-for-publication=false flag; this is not a publisher certification, data withdrawal or deprecation. Japan data: Source: Economic and Social Research Institute, Cabinet Office, Government of Japan, General Government Gross Debt (https://www.esri.cao.go.jp/en/sna/sddsplus/tables/ggd.xlsx) and Quarterly Estimates of GDP (https://www.esri.cao.go.jp/en/sna/sokuhou/sokuhou_top.html). The Cabinet Office notice (https://www.cao.go.jp/en/notice-e.html) states that numerical data and simple tables are not protected by copyright and may be used freely; the website Terms of Use govern website content and do not apply to those data. Source attribution and disclosure of the Bullion API debt-to-GDP calculation are Bullion API policy, not conditions imposed on those numerical data. This is not a claim of rights to separate third-party copyrighted material. The Cabinet Office does not endorse this product. A derived series is attributed as a Bullion API calculation naming every input source, never an input source alone; for a derived series `source.id` is the collecting or deriving source, not the sole provenance, so read `source.attribution` and `derivation` for every input. Forecasts, projections, and editorial classifications are never returned. Every plan can call this endpoint; API requests read the database and never call upstream sources.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "b3eae0ae-1fcb-a6e9-53ea-b1213828fa9e",
              "name": "Government borrowing for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "government-borrowing",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "us",
                      "description": "Covered for borrowing: US, GB (or uk), IS, EA (or eu), AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, NO, CA, CH."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"government_borrowing\",\n  \"country\": \"US\",\n  \"country_name\": \"United States\",\n  \"series\": [\n    {\n      \"id\": \"treasury_surplus_or_deficit_monthly\",\n      \"label\": \"Federal budget surplus or deficit (month)\",\n      \"scope\": \"central_government\",\n      \"basis\": \"surplus_or_deficit\",\n      \"unit\": \"usd_millions\",\n      \"frequency\": \"monthly\",\n      \"period_type\": \"month\",\n      \"method\": \"reported\",\n      \"definition\": \"Federal budget surplus (+) or deficit (-) for the calendar month, in millions of U.S. dollars, from the Monthly Treasury Statement as distributed by FRED (series MTSDS133FMS). A negative value is a deficit.\",\n      \"source\": {\n        \"id\": \"fred\",\n        \"series_id\": \"MTSDS133FMS\",\n        \"attribution\": \"U.S. Department of the Treasury, Bureau of the Fiscal Service, via FRED, Federal Reserve Bank of St. Louis\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"-86733.12345678\",\n          \"period_start\": \"2025-12-01\"\n        }\n      ]\n    }\n  ],\n  \"start\": null,\n  \"end\": null\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "6a21495f-5652-5c9c-db72-4d682312ffd7",
          "name": "Latest government borrowing for every covered country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "government-borrowing"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each government borrowing series for every covered country, in the order `US`, `GB`, `IS`, `EA`, `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `ES`, `FI`, `FR`, `GR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `NO`, `CA`, then `CH`, as one quota-counted request. Each series declares its government `scope`, accounting `basis`, `unit`, `frequency`, `period_type`, `method`, and a plain-language `definition` including its sign convention; unlike measures are not normalised into a common definition, so compare series only when their scope and basis match. Values are decimal strings and `date` is the period end. `status` is included when a publisher provides actual, provisional or revised status. Sign conventions differ by source and are stated in each `definition`. United States series come from the Monthly Treasury Statement as distributed by FRED (MTSDS133FMS): the federal budget surplus (+) or deficit (-) for the calendar month, and fiscal year to date from 1 October as a Bullion API `derived_cumulative` sum of the monthly values, in millions of U.S. dollars with central-government scope; a negative value is a deficit. This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. United Kingdom series come from the Office for National Statistics Public sector finances time series (dataset PUSF), not seasonally adjusted: monthly public sector net borrowing excluding public sector banks (DZLS, millions of pounds), where a positive value is borrowing and a negative value a surplus, and fiscal-year-to-date net borrowing from 1 April as a Bullion API `derived_cumulative` sum of DZLS (not an ONS-published series). Euro-area series come from Eurostat for the Eurostat EA21 aggregate (the fixed composition of the 21 member states in the euro area from 2026, back-calculated for earlier periods) and general-government scope (sector S13): net lending (+) or net borrowing (-) (ESA 2010 B9) in millions of euro, where a negative value is net borrowing, annual for the calendar year (`fiscal_year`) from `gov_10dd_edpt1` and quarterly, not seasonally adjusted, from `gov_10q_ggnfa`. Borrowing is a flow, so observations carry `period_start`. Norway series come from Statistics Norway (SSB) for the national-accounts general-government sector: net lending (+) or net borrowing (-) in millions of Norwegian kroner at current prices, annual for the calendar year (table 14668) and quarterly, not seasonally adjusted (table 14667); a negative value is net borrowing. Canada series come from Statistics Canada: general-governments net lending (+) or net borrowing (-) in millions of Canadian dollars at current prices for the calendar quarter, unadjusted (table 36-10-0477-01); a negative value is net borrowing. Switzerland series come from the Swiss Federal Finance Administration: net lending (+) or net borrowing (-) in the GFS model in millions of Swiss francs for the calendar year (variable `saldo`); a negative value is net borrowing. Iceland reports annual financial balance (surplus positive, deficit negative) from Statistics Iceland THJ05121, in millions of ISK at current prices, at full PX decimal precision. ABS general-government gross L2 debt is valued at current market value using the ABS creditor approach, not at nominal or face value (methodology §§13.4–13.6 and 13.9: https://www.abs.gov.au/statistics/detailed-methodology-information/concepts-sources-methods/australian-system-government-finance-statistics-concepts-sources-and-methods/2015/13-treatment-selected-items/part-b-treatment-debt-australian-gfs). The ratio denominator is the sum of the four original, current-price GDP quarters for the matching July-to-June financial year. Iceland data: Source: Statistics Iceland, THJ05181 and THJ05121, CC BY 4.0 (https://www.statice.is/publications/open-data-access/). Modifications are not attributed to Statistics Iceland. U.S. Treasury Fiscal Service data is a U.S. federal government work, distributed by FRED, Federal Reserve Bank of St. Louis. United Kingdom data: Source: Office for National Statistics, Public Sector Finances. Contains public sector information licensed under the Open Government Licence v3.0: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. Euro-area and EU member-state data: Source: Eurostat, government finance statistics; reuse is authorised provided the source is acknowledged. Australian data: Source: Australian Bureau of Statistics, Government Finance Statistics, Annual and Australian National Accounts. ABS website material is licensed under Creative Commons Attribution 4.0 International, subject to the exclusions and third-party rights identified in the ABS copyright terms. Those terms require attribution to the ABS for material obtained from its website; do not imply ABS endorsement. The ABS Data API is Beta and may change or be unavailable. Singapore annual debt and GDP: Singapore Open Data Licence v1.0: https://data.gov.sg/open-data-licence. Commercial use and distribution permitted with source acknowledgement and licence link; no official endorsement. Sublicensing is limited to enabling application/website use; downstream sub-licensees receive no rights. Customers needing additional rights must obtain the original licence directly at data.gov.sg. Debt catalogue: https://data.gov.sg/datasets/d_d4f7c9d15692b3c08aa9bc8bc56c0a72/view. GDP catalogue: https://data.gov.sg/datasets/d_d0db56a7c201c9a1e42c846d4fe6da8f/view. Norway data: Source: Statistics Norway (SSB), www.ssb.no, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made (Bullion API calculates the debt-to-GDP ratios), and Statistics Norway does not endorse Bullion API. Canada data: Source: Statistics Canada, tables 36-10-0467-01, 38-10-0237-01 and 36-10-0477-01, reference date shown on each observation. Reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada (Statistics Canada Open Licence, https://www.statcan.gc.ca/en/terms-conditions/open-licence). This does not constitute an endorsement by Statistics Canada of this product. Switzerland data: Source: Swiss Federal Finance Administration (EFV/FFA), \"Main aggregates and forecasts with FS- and GFS-Model\", https://opendata.swiss/en/dataset/hauptaggregate-und-prognosen-im-fs-und-gfs-modell, published as open government data under the opendata.swiss \"Open use\" terms (commercial use permitted, source recommended); provided without verification of the derived series, and not endorsed by the Federal Finance Administration. Qatar data: Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product). Both datasets identify CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made because Bullion API calculates matched-year debt-to-GDP ratios. Qatar Open Data Portal metadata observed 2026-09-30 reports the generic data-trust-index.ready-for-publication=false flag; this is not a publisher certification, data withdrawal or deprecation. Japan data: Source: Economic and Social Research Institute, Cabinet Office, Government of Japan, General Government Gross Debt (https://www.esri.cao.go.jp/en/sna/sddsplus/tables/ggd.xlsx) and Quarterly Estimates of GDP (https://www.esri.cao.go.jp/en/sna/sokuhou/sokuhou_top.html). The Cabinet Office notice (https://www.cao.go.jp/en/notice-e.html) states that numerical data and simple tables are not protected by copyright and may be used freely; the website Terms of Use govern website content and do not apply to those data. Source attribution and disclosure of the Bullion API debt-to-GDP calculation are Bullion API policy, not conditions imposed on those numerical data. This is not a claim of rights to separate third-party copyrighted material. The Cabinet Office does not endorse this product. A derived series is attributed as a Bullion API calculation naming every input source, never an input source alone; for a derived series `source.id` is the collecting or deriving source, not the sole provenance, so read `source.attribution` and `derivation` for every input. Forecasts, projections, and editorial classifications are never returned. Every plan can call this endpoint; API requests read the database and never call upstream sources.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "957e1356-c941-2291-6a77-069fafeff062",
              "name": "Latest government borrowing for every covered country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "government-borrowing"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"government_borrowing\",\n  \"countries\": [\n    {\n      \"country\": \"US\",\n      \"country_name\": \"United States\",\n      \"series\": [\n        {\n          \"id\": \"treasury_surplus_or_deficit_monthly\",\n          \"label\": \"Federal budget surplus or deficit (month)\",\n          \"scope\": \"central_government\",\n          \"basis\": \"surplus_or_deficit\",\n          \"unit\": \"usd_millions\",\n          \"frequency\": \"monthly\",\n          \"period_type\": \"month\",\n          \"method\": \"reported\",\n          \"definition\": \"Federal budget surplus (+) or deficit (-) for the calendar month, in millions of U.S. dollars, from the Monthly Treasury Statement as distributed by FRED (series MTSDS133FMS). A negative value is a deficit.\",\n          \"source\": {\n            \"id\": \"fred\",\n            \"series_id\": \"MTSDS133FMS\",\n            \"attribution\": \"U.S. Department of the Treasury, Bureau of the Fiscal Service, via FRED, Federal Reserve Bank of St. Louis\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"-86733.12345678\",\n              \"period_start\": \"2025-12-01\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "3132d1cd-f052-97cd-614b-45c666b11dce",
          "name": "Government debt interest for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "debt-interest",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "gb",
                  "description": "Covered for interest: GB (or uk), IS, EA (or eu), AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, NO, CA."
                }
              ]
            },
            "description": "Returns the stored government debt interest series for one country: `GB` (alias `uk`), `IS`, `EA` (alias `eu`, the euro-area aggregate), `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `ES`, `FI`, `FR`, `GR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `NO`, or `CA`. Any other valid country code returns 404 `no_data`. Without `start` and `end` each series carries its latest observation; with a range it carries every observation whose period end falls inside it, in chronological order. Each series declares its government `scope`, accounting `basis`, `unit`, `frequency`, `period_type`, `method`, and a plain-language `definition` including its sign convention; unlike measures are not normalised into a common definition, so compare series only when their scope and basis match. Values are decimal strings and `date` is the period end. `status` is included when a publisher provides actual, provisional or revised status. United States debt interest is not currently available, so `US` returns 404 `no_data` and is omitted from the collection. United Kingdom series come from the Office for National Statistics Public sector finances time series (dataset PUSF), not seasonally adjusted: central government debt interest payable for the calendar month (NMFX, millions of pounds, central-government scope), including the capital uplift on index-linked gilts. Euro-area series come from Eurostat for the Eurostat EA21 aggregate (the fixed composition of the 21 member states in the euro area from 2026, back-calculated for earlier periods) and general-government scope (sector S13): interest expenditure (ESA 2010 D.41 payable, accrual basis) in millions of euro, annual for the calendar year (`fiscal_year`) from `gov_10dd_edpt1` and quarterly, not seasonally adjusted, from `gov_10q_ggnfa`. Norway series come from Statistics Norway (SSB): general-government interest expense (national accounts item B41) in millions of Norwegian kroner at current prices, annual for the calendar year only (table 14668), because Statistics Norway publishes no quarterly interest item. Canada series come from Statistics Canada: general-governments interest on debt in millions of Canadian dollars at current prices for the calendar quarter, unadjusted, quarterly only (table 36-10-0477-01). Interest is reported as a positive amount. Interest is a flow, so observations carry `period_start`. Switzerland has no debt interest series (the Swiss Federal Finance Administration publishes general-government interest expense only in a very large detailed file), so `CH` is omitted from this endpoint. Iceland reports annual general-government interest payments from Statistics Iceland THJ05121, in millions of ISK at current prices, at full PX decimal precision. ABS general-government gross L2 debt is valued at current market value using the ABS creditor approach, not at nominal or face value (methodology §§13.4–13.6 and 13.9: https://www.abs.gov.au/statistics/detailed-methodology-information/concepts-sources-methods/australian-system-government-finance-statistics-concepts-sources-and-methods/2015/13-treatment-selected-items/part-b-treatment-debt-australian-gfs). The ratio denominator is the sum of the four original, current-price GDP quarters for the matching July-to-June financial year. Iceland data: Source: Statistics Iceland, THJ05181 and THJ05121, CC BY 4.0 (https://www.statice.is/publications/open-data-access/). Modifications are not attributed to Statistics Iceland. U.S. Treasury Fiscal Service data is a U.S. federal government work, distributed by FRED, Federal Reserve Bank of St. Louis. United Kingdom data: Source: Office for National Statistics, Public Sector Finances. Contains public sector information licensed under the Open Government Licence v3.0: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. Euro-area and EU member-state data: Source: Eurostat, government finance statistics; reuse is authorised provided the source is acknowledged. Australian data: Source: Australian Bureau of Statistics, Government Finance Statistics, Annual and Australian National Accounts. ABS website material is licensed under Creative Commons Attribution 4.0 International, subject to the exclusions and third-party rights identified in the ABS copyright terms. Those terms require attribution to the ABS for material obtained from its website; do not imply ABS endorsement. The ABS Data API is Beta and may change or be unavailable. Singapore annual debt and GDP: Singapore Open Data Licence v1.0: https://data.gov.sg/open-data-licence. Commercial use and distribution permitted with source acknowledgement and licence link; no official endorsement. Sublicensing is limited to enabling application/website use; downstream sub-licensees receive no rights. Customers needing additional rights must obtain the original licence directly at data.gov.sg. Debt catalogue: https://data.gov.sg/datasets/d_d4f7c9d15692b3c08aa9bc8bc56c0a72/view. GDP catalogue: https://data.gov.sg/datasets/d_d0db56a7c201c9a1e42c846d4fe6da8f/view. Norway data: Source: Statistics Norway (SSB), www.ssb.no, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made (Bullion API calculates the debt-to-GDP ratios), and Statistics Norway does not endorse Bullion API. Canada data: Source: Statistics Canada, tables 36-10-0467-01, 38-10-0237-01 and 36-10-0477-01, reference date shown on each observation. Reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada (Statistics Canada Open Licence, https://www.statcan.gc.ca/en/terms-conditions/open-licence). This does not constitute an endorsement by Statistics Canada of this product. Switzerland data: Source: Swiss Federal Finance Administration (EFV/FFA), \"Main aggregates and forecasts with FS- and GFS-Model\", https://opendata.swiss/en/dataset/hauptaggregate-und-prognosen-im-fs-und-gfs-modell, published as open government data under the opendata.swiss \"Open use\" terms (commercial use permitted, source recommended); provided without verification of the derived series, and not endorsed by the Federal Finance Administration. Qatar data: Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product). Both datasets identify CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made because Bullion API calculates matched-year debt-to-GDP ratios. Qatar Open Data Portal metadata observed 2026-09-30 reports the generic data-trust-index.ready-for-publication=false flag; this is not a publisher certification, data withdrawal or deprecation. Japan data: Source: Economic and Social Research Institute, Cabinet Office, Government of Japan, General Government Gross Debt (https://www.esri.cao.go.jp/en/sna/sddsplus/tables/ggd.xlsx) and Quarterly Estimates of GDP (https://www.esri.cao.go.jp/en/sna/sokuhou/sokuhou_top.html). The Cabinet Office notice (https://www.cao.go.jp/en/notice-e.html) states that numerical data and simple tables are not protected by copyright and may be used freely; the website Terms of Use govern website content and do not apply to those data. Source attribution and disclosure of the Bullion API debt-to-GDP calculation are Bullion API policy, not conditions imposed on those numerical data. This is not a claim of rights to separate third-party copyrighted material. The Cabinet Office does not endorse this product. A derived series is attributed as a Bullion API calculation naming every input source, never an input source alone; for a derived series `source.id` is the collecting or deriving source, not the sole provenance, so read `source.attribution` and `derivation` for every input. Forecasts, projections, and editorial classifications are never returned. Every plan can call this endpoint; API requests read the database and never call upstream sources.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "61d54006-fcf8-8dbc-4e55-29de74d5aaf9",
              "name": "Government debt interest for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "debt-interest",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "gb",
                      "description": "Covered for interest: GB (or uk), IS, EA (or eu), AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, NO, CA."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"debt_interest\",\n  \"country\": \"GB\",\n  \"country_name\": \"United Kingdom\",\n  \"series\": [\n    {\n      \"id\": \"ons_central_government_debt_interest\",\n      \"label\": \"Central government debt interest payable\",\n      \"scope\": \"central_government\",\n      \"basis\": \"interest_payable\",\n      \"unit\": \"gbp_millions\",\n      \"frequency\": \"monthly\",\n      \"period_type\": \"month\",\n      \"method\": \"reported\",\n      \"definition\": \"UK central government debt interest payable in the calendar month, in millions of pounds at current prices, not seasonally adjusted, as published by the ONS in Public sector finances (series NMFX, central government current expenditure: net interest payable). Includes the capital uplift on index-linked gilts, which moves with the Retail Prices Index. A positive value is interest payable.\",\n      \"source\": {\n        \"id\": \"ons_psf\",\n        \"series_id\": \"PUSF.NMFX\",\n        \"attribution\": \"Source: Office for National Statistics, Public Sector Finances.\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"10512.12345678\",\n          \"period_start\": \"2025-12-01\"\n        }\n      ]\n    }\n  ],\n  \"start\": null,\n  \"end\": null\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "89c69d9c-2bce-75bf-cfbb-fae4da737318",
          "name": "Latest government debt interest for every covered country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "debt-interest"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each government debt interest series for every covered country, in the order `GB`, `IS`, `EA`, `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `ES`, `FI`, `FR`, `GR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `NO`, then `CA`, as one quota-counted request. Each series declares its government `scope`, accounting `basis`, `unit`, `frequency`, `period_type`, `method`, and a plain-language `definition` including its sign convention; unlike measures are not normalised into a common definition, so compare series only when their scope and basis match. Values are decimal strings and `date` is the period end. `status` is included when a publisher provides actual, provisional or revised status. United States debt interest is not currently available, so `US` returns 404 `no_data` and is omitted from the collection. United Kingdom series come from the Office for National Statistics Public sector finances time series (dataset PUSF), not seasonally adjusted: central government debt interest payable for the calendar month (NMFX, millions of pounds, central-government scope), including the capital uplift on index-linked gilts. Euro-area series come from Eurostat for the Eurostat EA21 aggregate (the fixed composition of the 21 member states in the euro area from 2026, back-calculated for earlier periods) and general-government scope (sector S13): interest expenditure (ESA 2010 D.41 payable, accrual basis) in millions of euro, annual for the calendar year (`fiscal_year`) from `gov_10dd_edpt1` and quarterly, not seasonally adjusted, from `gov_10q_ggnfa`. Norway series come from Statistics Norway (SSB): general-government interest expense (national accounts item B41) in millions of Norwegian kroner at current prices, annual for the calendar year only (table 14668), because Statistics Norway publishes no quarterly interest item. Canada series come from Statistics Canada: general-governments interest on debt in millions of Canadian dollars at current prices for the calendar quarter, unadjusted, quarterly only (table 36-10-0477-01). Interest is reported as a positive amount. Interest is a flow, so observations carry `period_start`. Switzerland has no debt interest series (the Swiss Federal Finance Administration publishes general-government interest expense only in a very large detailed file), so `CH` is omitted from this endpoint. Iceland reports annual general-government interest payments from Statistics Iceland THJ05121, in millions of ISK at current prices, at full PX decimal precision. ABS general-government gross L2 debt is valued at current market value using the ABS creditor approach, not at nominal or face value (methodology §§13.4–13.6 and 13.9: https://www.abs.gov.au/statistics/detailed-methodology-information/concepts-sources-methods/australian-system-government-finance-statistics-concepts-sources-and-methods/2015/13-treatment-selected-items/part-b-treatment-debt-australian-gfs). The ratio denominator is the sum of the four original, current-price GDP quarters for the matching July-to-June financial year. Iceland data: Source: Statistics Iceland, THJ05181 and THJ05121, CC BY 4.0 (https://www.statice.is/publications/open-data-access/). Modifications are not attributed to Statistics Iceland. U.S. Treasury Fiscal Service data is a U.S. federal government work, distributed by FRED, Federal Reserve Bank of St. Louis. United Kingdom data: Source: Office for National Statistics, Public Sector Finances. Contains public sector information licensed under the Open Government Licence v3.0: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/. Euro-area and EU member-state data: Source: Eurostat, government finance statistics; reuse is authorised provided the source is acknowledged. Australian data: Source: Australian Bureau of Statistics, Government Finance Statistics, Annual and Australian National Accounts. ABS website material is licensed under Creative Commons Attribution 4.0 International, subject to the exclusions and third-party rights identified in the ABS copyright terms. Those terms require attribution to the ABS for material obtained from its website; do not imply ABS endorsement. The ABS Data API is Beta and may change or be unavailable. Singapore annual debt and GDP: Singapore Open Data Licence v1.0: https://data.gov.sg/open-data-licence. Commercial use and distribution permitted with source acknowledgement and licence link; no official endorsement. Sublicensing is limited to enabling application/website use; downstream sub-licensees receive no rights. Customers needing additional rights must obtain the original licence directly at data.gov.sg. Debt catalogue: https://data.gov.sg/datasets/d_d4f7c9d15692b3c08aa9bc8bc56c0a72/view. GDP catalogue: https://data.gov.sg/datasets/d_d0db56a7c201c9a1e42c846d4fe6da8f/view. Norway data: Source: Statistics Norway (SSB), www.ssb.no, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made (Bullion API calculates the debt-to-GDP ratios), and Statistics Norway does not endorse Bullion API. Canada data: Source: Statistics Canada, tables 36-10-0467-01, 38-10-0237-01 and 36-10-0477-01, reference date shown on each observation. Reproduced and distributed on an \"as is\" basis with the permission of Statistics Canada (Statistics Canada Open Licence, https://www.statcan.gc.ca/en/terms-conditions/open-licence). This does not constitute an endorsement by Statistics Canada of this product. Switzerland data: Source: Swiss Federal Finance Administration (EFV/FFA), \"Main aggregates and forecasts with FS- and GFS-Model\", https://opendata.swiss/en/dataset/hauptaggregate-und-prognosen-im-fs-und-gfs-modell, published as open government data under the opendata.swiss \"Open use\" terms (commercial use permitted, source recommended); provided without verification of the derived series, and not endorsed by the Federal Finance Administration. Qatar data: Source: Qatar Ministry of Finance, dataset MOF-OD-C0-00004 (public debt); Qatar National Planning Council, dataset NPC-OD-C0-01288 (gross domestic product). Both datasets identify CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); changes were made because Bullion API calculates matched-year debt-to-GDP ratios. Qatar Open Data Portal metadata observed 2026-09-30 reports the generic data-trust-index.ready-for-publication=false flag; this is not a publisher certification, data withdrawal or deprecation. Japan data: Source: Economic and Social Research Institute, Cabinet Office, Government of Japan, General Government Gross Debt (https://www.esri.cao.go.jp/en/sna/sddsplus/tables/ggd.xlsx) and Quarterly Estimates of GDP (https://www.esri.cao.go.jp/en/sna/sokuhou/sokuhou_top.html). The Cabinet Office notice (https://www.cao.go.jp/en/notice-e.html) states that numerical data and simple tables are not protected by copyright and may be used freely; the website Terms of Use govern website content and do not apply to those data. Source attribution and disclosure of the Bullion API debt-to-GDP calculation are Bullion API policy, not conditions imposed on those numerical data. This is not a claim of rights to separate third-party copyrighted material. The Cabinet Office does not endorse this product. A derived series is attributed as a Bullion API calculation naming every input source, never an input source alone; for a derived series `source.id` is the collecting or deriving source, not the sole provenance, so read `source.attribution` and `derivation` for every input. Forecasts, projections, and editorial classifications are never returned. Every plan can call this endpoint; API requests read the database and never call upstream sources.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "c255e929-6dfb-0e93-d150-970f11c974b0",
              "name": "Latest government debt interest for every covered country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "debt-interest"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"debt_interest\",\n  \"countries\": [\n    {\n      \"country\": \"GB\",\n      \"country_name\": \"United Kingdom\",\n      \"series\": [\n        {\n          \"id\": \"ons_central_government_debt_interest\",\n          \"label\": \"Central government debt interest payable\",\n          \"scope\": \"central_government\",\n          \"basis\": \"interest_payable\",\n          \"unit\": \"gbp_millions\",\n          \"frequency\": \"monthly\",\n          \"period_type\": \"month\",\n          \"method\": \"reported\",\n          \"definition\": \"UK central government debt interest payable in the calendar month, in millions of pounds at current prices, not seasonally adjusted, as published by the ONS in Public sector finances (series NMFX, central government current expenditure: net interest payable). Includes the capital uplift on index-linked gilts, which moves with the Retail Prices Index. A positive value is interest payable.\",\n          \"source\": {\n            \"id\": \"ons_psf\",\n            \"series_id\": \"PUSF.NMFX\",\n            \"attribution\": \"Source: Office for National Statistics, Public Sector Finances.\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"10512.12345678\",\n              \"period_start\": \"2025-12-01\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "2d0fba7f-2ad1-3029-7acf-504427cf3e89",
          "name": "Money supply for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "money-supply",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "US",
                  "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                }
              ]
            },
            "description": "Returns the latest money supply series when neither date is supplied. With `start` and `end`, returns matching observations in chronological order. Monthly and other period-end observations are selected when their period-end dates fall within the inclusive calendar date range. Weekly ISO reference-period observations are selected for every ISO week that overlaps the inclusive range: the week containing `start` through the week containing `end`. For those weekly `date` values, the canonical Sunday is an index only, not the stock measurement date. The maximum inclusive range is 30 years. Coverage is determined only by registered series definitions and stored observations; valid countries without a matching registered series return 404 `no_data`. Requests read the database and never call an upstream source. Each series preserves its source-specific identity and definition. A shared identity may span geographies only when its registered source series and full definition are identical; unlike national money aggregates are not normalized into one another. Values are decimal strings. Stocks declare whether they represent a period end or period average; each series also identifies frequency, unit scale, currency where applicable, seasonal adjustment, scope, and accounting/statistical basis. For series with dated methodology changes, top-level method and stock_semantics describe the latest period; each observation carries its period-resolved method and stock semantics, and methodology_history lists inclusive, gap-free effective periods. Source-unit metadata states the publisher scale and exact factor used to normalize to base-currency units. For reference-period weekly data, `date` is the canonical ISO-week Sunday index and not a claim about the stock observation day; the original source week is returned separately. Latest reads withhold a series rather than fall back when its newest observation fails registered source-identity, cadence, or captured UTC as-of validation, or its newest withdrawal is at least as recent as that observation. A published reference-week observation remains valid when its Sunday index is after the as-of date, provided its Monday start is not in the future.\n\nThe Postman response is a synthetic contract example only; it does not indicate live country or source coverage.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "744c16da-77b1-f450-9bb4-4c6df23d95fe",
              "name": "Money supply for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "money-supply",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "US",
                      "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"money_supply\",\n  \"country\": \"MY\",\n  \"country_name\": \"Malaysia\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"synthetic_m3_money_supply\",\n      \"label\": \"Synthetic M3 money supply\",\n      \"scope\": \"banking_system\",\n      \"basis\": \"nominal\",\n      \"unit\": \"myr\",\n      \"currency\": \"MYR\",\n      \"frequency\": \"monthly\",\n      \"period_type\": \"month\",\n      \"method\": \"reported\",\n      \"definition\": \"Synthetic contract fixture only; a source value in currency millions is normalized by an exact factor of 1000000 to MYR.\",\n      \"adjustment\": \"not_specified\",\n      \"stock_semantics\": \"period_end\",\n      \"accounting_basis\": \"not_applicable\",\n      \"observation_basis\": \"source_period\",\n      \"source_unit\": \"currency_millions\",\n      \"source_unit_factor\": \"1000000\",\n      \"source\": {\n        \"id\": \"synthetic_fixture\",\n        \"series_id\": \"synthetic.fixture.series\",\n        \"attribution\": \"Synthetic contract example; not a live source.\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-08-31\",\n          \"value\": \"2155850200000.2\",\n          \"method\": \"reported\",\n          \"stock_semantics\": \"period_end\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('monetary observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "c62ac969-4854-93de-b184-f5d8887706ad",
          "name": "Latest money supply for every country with stored data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "money-supply"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each registered money supply series for every country with a stored observation, as one quota-counted request. Countries without data are omitted. This route always returns latest values; date parameters do not apply. Coverage is determined only by registered series definitions and stored observations; valid countries without a matching registered series return 404 `no_data`. Requests read the database and never call an upstream source. Each series preserves its source-specific identity and definition. A shared identity may span geographies only when its registered source series and full definition are identical; unlike national money aggregates are not normalized into one another. Values are decimal strings. Stocks declare whether they represent a period end or period average; each series also identifies frequency, unit scale, currency where applicable, seasonal adjustment, scope, and accounting/statistical basis. For series with dated methodology changes, top-level method and stock_semantics describe the latest period; each observation carries its period-resolved method and stock semantics, and methodology_history lists inclusive, gap-free effective periods. Source-unit metadata states the publisher scale and exact factor used to normalize to base-currency units. For reference-period weekly data, `date` is the canonical ISO-week Sunday index and not a claim about the stock observation day; the original source week is returned separately. Latest reads withhold a series rather than fall back when its newest observation fails registered source-identity, cadence, or captured UTC as-of validation, or its newest withdrawal is at least as recent as that observation. A published reference-week observation remains valid when its Sunday index is after the as-of date, provided its Monday start is not in the future.\n\nThe Postman response is a synthetic contract example only; it does not indicate live country or source coverage.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "7a768d52-5266-037f-d138-eec92024744b",
              "name": "Latest money supply for every country with stored data — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "money-supply"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"money_supply\",\n  \"countries\": [\n    {\n      \"country\": \"MY\",\n      \"country_name\": \"Malaysia\",\n      \"series\": [\n        {\n          \"id\": \"synthetic_m3_money_supply\",\n          \"label\": \"Synthetic M3 money supply\",\n          \"scope\": \"banking_system\",\n          \"basis\": \"nominal\",\n          \"unit\": \"myr\",\n          \"currency\": \"MYR\",\n          \"frequency\": \"monthly\",\n          \"period_type\": \"month\",\n          \"method\": \"reported\",\n          \"definition\": \"Synthetic contract fixture only; a source value in currency millions is normalized by an exact factor of 1000000 to MYR.\",\n          \"adjustment\": \"not_specified\",\n          \"stock_semantics\": \"period_end\",\n          \"accounting_basis\": \"not_applicable\",\n          \"observation_basis\": \"source_period\",\n          \"source_unit\": \"currency_millions\",\n          \"source_unit_factor\": \"1000000\",\n          \"source\": {\n            \"id\": \"synthetic_fixture\",\n            \"series_id\": \"synthetic.fixture.series\",\n            \"attribution\": \"Synthetic contract example; not a live source.\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2026-08-31\",\n              \"value\": \"2155850200000.2\",\n              \"method\": \"reported\",\n              \"stock_semantics\": \"period_end\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('monetary observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "3642becb-da80-9d28-aa09-bc567ba6ca58",
          "name": "Central-bank balance sheet for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "central-bank-balance-sheet",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "US",
                  "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                }
              ]
            },
            "description": "Returns the latest central-bank balance sheet series when neither date is supplied. With `start` and `end`, returns matching observations in chronological order. Monthly and other period-end observations are selected when their period-end dates fall within the inclusive calendar date range. Weekly ISO reference-period observations are selected for every ISO week that overlaps the inclusive range: the week containing `start` through the week containing `end`. For those weekly `date` values, the canonical Sunday is an index only, not the stock measurement date. The maximum inclusive range is 30 years. Coverage is determined only by registered series definitions and stored observations; valid countries without a matching registered series return 404 `no_data`. Requests read the database and never call an upstream source. Each series preserves its source-specific identity and definition. A shared identity may span geographies only when its registered source series and full definition are identical; unlike national money aggregates are not normalized into one another. Values are decimal strings. Stocks declare whether they represent a period end or period average; each series also identifies frequency, unit scale, currency where applicable, seasonal adjustment, scope, and accounting/statistical basis. For series with dated methodology changes, top-level method and stock_semantics describe the latest period; each observation carries its period-resolved method and stock semantics, and methodology_history lists inclusive, gap-free effective periods. Source-unit metadata states the publisher scale and exact factor used to normalize to base-currency units. For reference-period weekly data, `date` is the canonical ISO-week Sunday index and not a claim about the stock observation day; the original source week is returned separately. Latest reads withhold a series rather than fall back when its newest observation fails registered source-identity, cadence, or captured UTC as-of validation, or its newest withdrawal is at least as recent as that observation. A published reference-week observation remains valid when its Sunday index is after the as-of date, provided its Monday start is not in the future.\n\nThe Postman response is a synthetic contract example only; it does not indicate live country or source coverage.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "b24f8181-96a5-1093-aa35-1a6f9d06e0f6",
              "name": "Central-bank balance sheet for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "central-bank-balance-sheet",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "US",
                      "description": "Country code: US, GB (alias UK) or EA (alias EU). Case-insensitive."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"central_bank_balance_sheet\",\n  \"country\": \"DE\",\n  \"country_name\": \"Germany\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"synthetic_central_bank_assets\",\n      \"label\": \"Synthetic central-bank total assets\",\n      \"scope\": \"central_bank\",\n      \"basis\": \"nominal\",\n      \"unit\": \"eur\",\n      \"currency\": \"EUR\",\n      \"frequency\": \"monthly\",\n      \"period_type\": \"month\",\n      \"method\": \"reported\",\n      \"definition\": \"Synthetic contract fixture only; a source value in currency millions is normalized by an exact factor of 1000000 to EUR.\",\n      \"adjustment\": \"not_specified\",\n      \"stock_semantics\": \"period_end\",\n      \"accounting_basis\": \"statistical\",\n      \"observation_basis\": \"source_period\",\n      \"source_unit\": \"currency_millions\",\n      \"source_unit_factor\": \"1000000\",\n      \"source\": {\n        \"id\": \"synthetic_fixture\",\n        \"series_id\": \"synthetic.fixture.series\",\n        \"attribution\": \"Synthetic contract example; not a live source.\"\n      },\n      \"observations\": [\n        {\n          \"date\": \"2026-08-31\",\n          \"value\": \"2155850200000.2\",\n          \"method\": \"reported\",\n          \"stock_semantics\": \"period_end\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('monetary observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "6cdde596-ece0-819b-efd4-023abbc23392",
          "name": "Latest central-bank balance sheets for countries with stored data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "central-bank-balance-sheet"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each registered central-bank balance sheet series for every country with a stored observation, as one quota-counted request. Countries without data are omitted. This route always returns latest values; date parameters do not apply. Coverage is determined only by registered series definitions and stored observations; valid countries without a matching registered series return 404 `no_data`. Requests read the database and never call an upstream source. Each series preserves its source-specific identity and definition. A shared identity may span geographies only when its registered source series and full definition are identical; unlike national money aggregates are not normalized into one another. Values are decimal strings. Stocks declare whether they represent a period end or period average; each series also identifies frequency, unit scale, currency where applicable, seasonal adjustment, scope, and accounting/statistical basis. For series with dated methodology changes, top-level method and stock_semantics describe the latest period; each observation carries its period-resolved method and stock semantics, and methodology_history lists inclusive, gap-free effective periods. Source-unit metadata states the publisher scale and exact factor used to normalize to base-currency units. For reference-period weekly data, `date` is the canonical ISO-week Sunday index and not a claim about the stock observation day; the original source week is returned separately. Latest reads withhold a series rather than fall back when its newest observation fails registered source-identity, cadence, or captured UTC as-of validation, or its newest withdrawal is at least as recent as that observation. A published reference-week observation remains valid when its Sunday index is after the as-of date, provided its Monday start is not in the future.\n\nThe Postman response is a synthetic contract example only; it does not indicate live country or source coverage.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "873bdae2-81d7-9ff9-7353-228f57c65075",
              "name": "Latest central-bank balance sheets for countries with stored data — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "central-bank-balance-sheet"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"central_bank_balance_sheet\",\n  \"countries\": [\n    {\n      \"country\": \"DE\",\n      \"country_name\": \"Germany\",\n      \"series\": [\n        {\n          \"id\": \"synthetic_central_bank_assets\",\n          \"label\": \"Synthetic central-bank total assets\",\n          \"scope\": \"central_bank\",\n          \"basis\": \"nominal\",\n          \"unit\": \"eur\",\n          \"currency\": \"EUR\",\n          \"frequency\": \"monthly\",\n          \"period_type\": \"month\",\n          \"method\": \"reported\",\n          \"definition\": \"Synthetic contract fixture only; a source value in currency millions is normalized by an exact factor of 1000000 to EUR.\",\n          \"adjustment\": \"not_specified\",\n          \"stock_semantics\": \"period_end\",\n          \"accounting_basis\": \"statistical\",\n          \"observation_basis\": \"source_period\",\n          \"source_unit\": \"currency_millions\",\n          \"source_unit_factor\": \"1000000\",\n          \"source\": {\n            \"id\": \"synthetic_fixture\",\n            \"series_id\": \"synthetic.fixture.series\",\n            \"attribution\": \"Synthetic contract example; not a live source.\"\n          },\n          \"observations\": [\n            {\n              \"date\": \"2026-08-31\",\n              \"value\": \"2155850200000.2\",\n              \"method\": \"reported\",\n              \"stock_semantics\": \"period_end\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('monetary observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var groups = body.countries ? body.countries : [body];",
                  "    groups.forEach(function (group) {",
                  "        group.series.forEach(function (series) {",
                  "            pm.expect(series.observations).to.be.an('array');",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "10d9acb4-2724-d193-06f8-889124260018",
      "name": "reserves",
      "description": "Annual central-bank reserve data (API key required). GET /v1/central-bank-reserves returns the latest values for every country; GET /v1/central-bank-reserves/{country} returns one country, with optional start and end dates. Reads consume monthly quota.",
      "item": [
        {
          "id": "a7242684-481b-2051-7a04-49bd21311342",
          "name": "Latest central-bank reserve values for every country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "central-bank-reserves"
              ],
              "query": [],
              "variable": []
            },
            "description": "Cached annual reserve valuations. Series: total reserves including gold and excluding gold (reported, US dollars), and gold reserve value, gold share of total reserves and annual gold value change (derived by Bullion API from cached observations). Each observation date is the year end (YYYY-12-31) and each value is a decimal string. A derived series omits years whose source values are inconsistent (total below reserves excluding gold, or a negative component); the reported series flag those years in `quality_flags`, which explain such gaps. Without start and end each series returns its own latest observation, so dates can differ across series (for example a derived series skips an inconsistent latest year). Annual value change combines holdings changes, gold-price movement, and revisions; it does not measure tonnes bought or sold. Returns the latest observation of each series for every covered country, ordered by country code. Use `/v1/central-bank-reserves/{country}` for history.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "5e868e21-b9f0-eaf6-abfb-7ed885383307",
              "name": "Latest central-bank reserve values for every country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "central-bank-reserves"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"central_bank_reserves\",\n  \"countries\": [\n    {\n      \"country\": \"GB\",\n      \"country_name\": \"United Kingdom\",\n      \"series\": [\n        {\n          \"id\": \"total_reserves_usd\",\n          \"label\": \"Total reserves including gold\",\n          \"unit\": \"usd\",\n          \"frequency\": \"annual\",\n          \"method\": \"reported\",\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"240.00\"\n            }\n          ]\n        },\n        {\n          \"id\": \"reserves_excluding_gold_usd\",\n          \"label\": \"Total reserves excluding gold\",\n          \"unit\": \"usd\",\n          \"frequency\": \"annual\",\n          \"method\": \"reported\",\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"204.00\"\n            }\n          ]\n        },\n        {\n          \"id\": \"gold_reserve_value_usd\",\n          \"label\": \"Gold reserve value\",\n          \"unit\": \"usd\",\n          \"frequency\": \"annual\",\n          \"method\": \"derived\",\n          \"notes\": \"Synthetic example: total reserves including gold minus total reserves excluding gold.\",\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"36.00\"\n            }\n          ]\n        },\n        {\n          \"id\": \"gold_share_pct\",\n          \"label\": \"Gold share of total reserves\",\n          \"unit\": \"percent\",\n          \"frequency\": \"annual\",\n          \"method\": \"derived\",\n          \"notes\": \"Synthetic example: gold reserve value divided by total reserves, times 100.\",\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"15\"\n            }\n          ]\n        },\n        {\n          \"id\": \"annual_gold_value_change_usd\",\n          \"label\": \"Annual change in gold reserve value\",\n          \"unit\": \"usd\",\n          \"frequency\": \"annual\",\n          \"method\": \"derived\",\n          \"notes\": \"Synthetic example: annual change in the reported gold reserve value.\",\n          \"observations\": [\n            {\n              \"date\": \"2025-12-31\",\n              \"value\": \"11.00\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    body.countries.flatMap(function (entry) { return entry.series; }).forEach(function (series) {",
                  "        series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "68d88aaa-7e73-7675-f95c-ed54797c2215",
          "name": "Annual central-bank reserve values and gold share",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "central-bank-reserves",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2020-01-01"
                },
                {
                  "key": "end",
                  "value": "2025-12-31"
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "gb",
                  "description": "ISO 3166-1 alpha-2 code or ea, case-insensitive; uk and eu are accepted aliases."
                }
              ]
            },
            "description": "Cached annual reserve valuations. Series: total reserves including gold and excluding gold (reported, US dollars), and gold reserve value, gold share of total reserves and annual gold value change (derived by Bullion API from cached observations). Each observation date is the year end (YYYY-12-31) and each value is a decimal string. A derived series omits years whose source values are inconsistent (total below reserves excluding gold, or a negative component); the reported series flag those years in `quality_flags`, which explain such gaps. Without start and end each series returns its own latest observation, so dates can differ across series (for example a derived series skips an inconsistent latest year). Annual value change combines holdings changes, gold-price movement, and revisions; it does not measure tonnes bought or sold. Without start and end, returns the latest observation of each series; with a range, every annual observation whose year end falls inside it.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "9b747319-8349-2f0f-cb36-fe591154f9ad",
              "name": "Annual central-bank reserve values and gold share — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "central-bank-reserves",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2020-01-01"
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31"
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "gb",
                      "description": "ISO 3166-1 alpha-2 code or ea, case-insensitive; uk and eu are accepted aliases."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"central_bank_reserves\",\n  \"country\": \"GB\",\n  \"country_name\": \"United Kingdom\",\n  \"start\": \"2020-01-01\",\n  \"end\": \"2025-12-31\",\n  \"series\": [\n    {\n      \"id\": \"total_reserves_usd\",\n      \"label\": \"Total reserves including gold\",\n      \"unit\": \"usd\",\n      \"frequency\": \"annual\",\n      \"method\": \"reported\",\n      \"observations\": [\n        {\n          \"date\": \"2024-12-31\",\n          \"value\": \"200.00\"\n        },\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"240.00\"\n        }\n      ]\n    },\n    {\n      \"id\": \"reserves_excluding_gold_usd\",\n      \"label\": \"Total reserves excluding gold\",\n      \"unit\": \"usd\",\n      \"frequency\": \"annual\",\n      \"method\": \"reported\",\n      \"observations\": [\n        {\n          \"date\": \"2024-12-31\",\n          \"value\": \"175.00\"\n        },\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"204.00\"\n        }\n      ]\n    },\n    {\n      \"id\": \"gold_reserve_value_usd\",\n      \"label\": \"Gold reserve value\",\n      \"unit\": \"usd\",\n      \"frequency\": \"annual\",\n      \"method\": \"derived\",\n      \"notes\": \"Synthetic example: total reserves including gold minus total reserves excluding gold.\",\n      \"observations\": [\n        {\n          \"date\": \"2024-12-31\",\n          \"value\": \"25.00\"\n        },\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"36.00\"\n        }\n      ]\n    },\n    {\n      \"id\": \"gold_share_pct\",\n      \"label\": \"Gold share of total reserves\",\n      \"unit\": \"percent\",\n      \"frequency\": \"annual\",\n      \"method\": \"derived\",\n      \"notes\": \"Synthetic example: gold reserve value divided by total reserves, times 100.\",\n      \"observations\": [\n        {\n          \"date\": \"2024-12-31\",\n          \"value\": \"12.5\"\n        },\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"15\"\n        }\n      ]\n    },\n    {\n      \"id\": \"annual_gold_value_change_usd\",\n      \"label\": \"Annual change in gold reserve value\",\n      \"unit\": \"usd\",\n      \"frequency\": \"annual\",\n      \"method\": \"derived\",\n      \"notes\": \"Synthetic example: annual change in the reported gold reserve value.\",\n      \"observations\": [\n        {\n          \"date\": \"2025-12-31\",\n          \"value\": \"11.00\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    body.series.forEach(function (series) {",
                  "        series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "45922e47-bcb6-9ef4-ccfa-7ca0dee98632",
      "name": "central-bank-gold",
      "description": "Reported central-bank gold holdings (API key required). GET /v1/central-bank-gold returns the latest observation of each series for every country; GET /v1/central-bank-gold/{country} returns one country, with optional start and end dates. Values are decimal strings. Reads consume monthly quota.",
      "item": [
        {
          "id": "5f500dc7-33bd-8ae9-e6ca-fc63562aeedc",
          "name": "Latest central-bank gold holdings for every country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "central-bank-gold"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the latest observation of each reported central-bank gold series for every covered country, ordered by country code; sort client-side for leaderboards. Reported gold holdings are served from the scheduled database cache; API requests never call upstream providers. Each series represents one measure, cadence and reported or derived basis; weekly, fortnightly, monthly, quarterly and irregular observations are never combined. Values are decimal strings. Monthly, quarterly and irregular observations are dated at the end of their reference month; weekly and fortnightly observations retain their reference date. The million-fine-troy-ounce series preserves a reported weight; Bullion API converts that weight to tonnes using the fixed troy-ounce conversion factor. Tonnage and holdings changes are explicitly labelled as Bullion API calculations, and tonnes derived from a reported value and month-end gold price carry holdings_basis derived. Value-only series never receive an invented quantity, and a country can have a subset of measures; a missing observation is not a zero value. Use /v1/countries to discover current coverage. holdings_change_tonnes is a change between consecutive reported stocks of one series, not a purchase or sale transaction, and it is omitted where reported stocks are not directly comparable. Each series includes provenance and a reuse notice; source-data reuse rights remain separate from API plan terms. Anything Bullion API derives is stated in the series label and holdings_basis, for example \"Gold holdings derived by Bullion API from reported value (tonnes)\". Stale observations remain visible and are marked.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "a532dcc2-5927-4ae4-8f11-cd89610a4d76",
              "name": "Latest central-bank gold holdings for every country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "central-bank-gold"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"central_bank_gold\",\n  \"countries\": [\n    {\n      \"country\": \"DE\",\n      \"country_name\": \"Germany\",\n      \"series\": [\n        {\n          \"id\": \"holdings_tonnes_monthly\",\n          \"label\": \"Gold holdings converted by Bullion API from reported weight (tonnes)\",\n          \"measure\": \"holdings_tonnes\",\n          \"unit\": \"tonnes\",\n          \"frequency\": \"monthly\",\n          \"cadence\": \"monthly\",\n          \"method\": \"fixed_unit_conversion_from_reported_weight\",\n          \"holdings_basis\": \"reported\",\n          \"stale\": false,\n          \"provenance\": {\n            \"name\": \"Synthetic example\",\n            \"methodology\": \"Synthetic placeholder, not live data.\",\n            \"updated_at\": \"2026-01-15\"\n          },\n          \"reuse_notice\": \"Synthetic example only. Live reuse_notice values cover every observation in the selected range, including prior observations used for derived stock changes. Availability and reuse conditions vary by series. Bullion API charges for caching, normalization, and delivery; source terms and Bullion API plan terms apply. Standard plans do not authorize raw-data redistribution or resale.\",\n          \"observations\": [\n            {\n              \"date\": \"2026-01-31\",\n              \"value\": \"310.29\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var countries = body.countries || [body];",
                  "    countries.forEach(function (country) {",
                  "        pm.expect(country.series).to.be.an('array');",
                  "        country.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "d46261a5-e62a-bcc7-5584-3fded8e10333",
          "name": "Reported central-bank gold holdings for one country",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "central-bank-gold",
                ":country"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "2025-01-01",
                  "disabled": true
                },
                {
                  "key": "end",
                  "value": "2025-12-31",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "country",
                  "value": "de",
                  "description": "ISO 3166-1 alpha-2 country code, case-insensitive; uk and eu are accepted aliases."
                }
              ]
            },
            "description": "Returns one country’s reported central-bank gold series. Without start and end each series carries its latest observation; with a range it carries every observation whose date falls inside it, oldest first. The maximum range is 10 years. Reported gold holdings are served from the scheduled database cache; API requests never call upstream providers. Each series represents one measure, cadence and reported or derived basis; weekly, fortnightly, monthly, quarterly and irregular observations are never combined. Values are decimal strings. Monthly, quarterly and irregular observations are dated at the end of their reference month; weekly and fortnightly observations retain their reference date. The million-fine-troy-ounce series preserves a reported weight; Bullion API converts that weight to tonnes using the fixed troy-ounce conversion factor. Tonnage and holdings changes are explicitly labelled as Bullion API calculations, and tonnes derived from a reported value and month-end gold price carry holdings_basis derived. Value-only series never receive an invented quantity, and a country can have a subset of measures; a missing observation is not a zero value. Use /v1/countries to discover current coverage. holdings_change_tonnes is a change between consecutive reported stocks of one series, not a purchase or sale transaction, and it is omitted where reported stocks are not directly comparable. Each series includes provenance and a reuse notice; source-data reuse rights remain separate from API plan terms. Anything Bullion API derives is stated in the series label and holdings_basis, for example \"Gold holdings derived by Bullion API from reported value (tonnes)\". Stale observations remain visible and are marked.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "7ce31aba-f167-4b08-a6f6-4018fee48658",
              "name": "Reported central-bank gold holdings for one country — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "central-bank-gold",
                    ":country"
                  ],
                  "query": [
                    {
                      "key": "start",
                      "value": "2025-01-01",
                      "disabled": true
                    },
                    {
                      "key": "end",
                      "value": "2025-12-31",
                      "disabled": true
                    }
                  ],
                  "variable": [
                    {
                      "key": "country",
                      "value": "de",
                      "description": "ISO 3166-1 alpha-2 country code, case-insensitive; uk and eu are accepted aliases."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"metric\": \"central_bank_gold\",\n  \"country\": \"DE\",\n  \"country_name\": \"Germany\",\n  \"start\": null,\n  \"end\": null,\n  \"series\": [\n    {\n      \"id\": \"holdings_tonnes_monthly\",\n      \"label\": \"Gold holdings converted by Bullion API from reported weight (tonnes)\",\n      \"measure\": \"holdings_tonnes\",\n      \"unit\": \"tonnes\",\n      \"frequency\": \"monthly\",\n      \"cadence\": \"monthly\",\n      \"method\": \"fixed_unit_conversion_from_reported_weight\",\n      \"holdings_basis\": \"reported\",\n      \"stale\": false,\n      \"provenance\": {\n        \"name\": \"Synthetic example\",\n        \"methodology\": \"Synthetic placeholder, not live data.\",\n        \"updated_at\": \"2026-01-15\"\n      },\n      \"reuse_notice\": \"Synthetic example only. Live reuse_notice values cover every observation in the selected range, including prior observations used for derived stock changes. Availability and reuse conditions vary by series. Bullion API charges for caching, normalization, and delivery; source terms and Bullion API plan terms apply. Standard plans do not authorize raw-data redistribution or resale.\",\n      \"observations\": [\n        {\n          \"date\": \"2026-01-31\",\n          \"value\": \"310.29\"\n        }\n      ]\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('observation values stay decimal strings', function () {",
                  "    var body = pm.response.json();",
                  "    var countries = body.countries || [body];",
                  "    countries.forEach(function (country) {",
                  "        pm.expect(country.series).to.be.an('array');",
                  "        country.series.forEach(function (series) {",
                  "            series.observations.forEach(function (observation) { pm.expect(observation.value).to.be.a('string'); });",
                  "        });",
                  "    });",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "cebb33aa-4796-cebe-c21a-d83a47f34cc3",
      "name": "portfolio",
      "description": "Private account-owned multi-metal portfolio (X-API-Key header only; query credentials are never accepted). Reads never consume monthly quota. Every mutation in this folder is blocked unless the collection variable enableWrites is exactly \"true\" — including whole-collection runs.",
      "item": [
        {
          "id": "0fb37f8e-9dd2-34c6-7f9f-68e6be873697",
          "name": "Read portfolio settings and summary",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio"
              ],
              "query": [],
              "variable": []
            },
            "description": "Requires portfolio read permission and accepts X-API-Key only. Query-string credentials are not accepted. The request retains the rolling per-key and source-IP abuse limits but does not increment the monthly market-data quota. The summary values holdings from each metal’s matching latest stored spot price in the portfolio reporting currency; the request never calls an upstream provider and never bridges currencies. Valuation is current when all held-metal prices are at most six hours old, stale when any is older, and unavailable when any held metal has no matching-currency price, including a projected price whose FX snapshot is more than seven UTC calendar days old. Mixed-metal aggregate spot_price is null. Per-metal summaries retain separate prices and quantities. current_value, unrealised_pnl, spot_price, and price_timestamp are exact decimal strings or RFC 3339 timestamps when available, and null when unavailable; holdings and cost basis always remain available.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "22b4b82f-0d07-4006-6cbd-2ecee2054227",
              "name": "Read portfolio settings and summary — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"portfolio\": {\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"metals\": [\n      \"gold\",\n      \"silver\",\n      \"palladium\",\n      \"copper\",\n      \"platinum\"\n    ],\n    \"reporting_currency\": \"GBP\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"updated_at\": \"2026-01-15T12:00:00.000Z\"\n  },\n  \"summary\": {\n    \"gold_quantity_grams\": \"1.005000000000000\",\n    \"cost_basis\": \"2525.97630395\",\n    \"realised_pnl\": \"0.00000000\",\n    \"valuation\": {\n      \"status\": \"current\",\n      \"spot_price\": \"4527.86000000\",\n      \"current_value\": \"146.23255884\",\n      \"unrealised_pnl\": \"-2379.74374511\",\n      \"price_timestamp\": \"2026-01-15T12:00:00.000Z\"\n    },\n    \"metals\": [\n      {\n        \"metal\": \"gold\",\n        \"quantity_grams\": \"1.005000000000000\",\n        \"cost_basis\": \"2525.97630395\",\n        \"realised_pnl\": \"0.00000000\",\n        \"valuation\": {\n          \"status\": \"current\",\n          \"spot_price\": \"4527.86000000\",\n          \"current_value\": \"146.23255884\",\n          \"unrealised_pnl\": \"-2379.74374511\",\n          \"price_timestamp\": \"2026-01-15T12:00:00.000Z\"\n        }\n      }\n    ]\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('money values stay decimal strings', function () {",
                  "    var summary = pm.response.json().summary;",
                  "    pm.expect(summary.cost_basis).to.be.a('string');",
                  "    pm.expect(summary.realised_pnl).to.be.a('string');",
                  "    pm.expect(summary.gold_quantity_grams).to.be.a('string');",
                  "    pm.expect(summary.metals).to.be.an('array');",
                  "    summary.metals.forEach(function (holding) { pm.expect(holding.quantity_grams).to.be.a('string'); pm.expect(holding.cost_basis).to.be.a('string'); });",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "3195c508-676e-b1b9-93e3-14415c40e981",
          "name": "Create or update portfolio settings",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio"
              ],
              "query": [],
              "variable": []
            },
            "description": "Requires portfolio write permission and accepts X-API-Key only. Write permission always includes read. The reporting currency can change while the ledger is empty. The request retains abuse limits but does not increment the monthly market-data quota.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reporting_currency\": \"GBP\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "089eac88-437b-c0ce-46c8-d974535becce",
              "name": "Create or update portfolio settings — example",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"portfolio\": {\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"metals\": [\n      \"gold\",\n      \"silver\",\n      \"palladium\",\n      \"copper\",\n      \"platinum\"\n    ],\n    \"reporting_currency\": \"GBP\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"updated_at\": \"2026-01-15T12:00:00.000Z\"\n  },\n  \"summary\": {\n    \"gold_quantity_grams\": \"1.005000000000000\",\n    \"cost_basis\": \"2525.97630395\",\n    \"realised_pnl\": \"0.00000000\",\n    \"valuation\": {\n      \"status\": \"current\",\n      \"spot_price\": \"4527.86000000\",\n      \"current_value\": \"146.23255884\",\n      \"unrealised_pnl\": \"-2379.74374511\",\n      \"price_timestamp\": \"2026-01-15T12:00:00.000Z\"\n    },\n    \"metals\": [\n      {\n        \"metal\": \"gold\",\n        \"quantity_grams\": \"1.005000000000000\",\n        \"cost_basis\": \"2525.97630395\",\n        \"realised_pnl\": \"0.00000000\",\n        \"valuation\": {\n          \"status\": \"current\",\n          \"spot_price\": \"4527.86000000\",\n          \"current_value\": \"146.23255884\",\n          \"unrealised_pnl\": \"-2379.74374511\",\n          \"price_timestamp\": \"2026-01-15T12:00:00.000Z\"\n        }\n      }\n    ]\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Portfolio mutations are blocked unless explicitly enabled.",
                  "// Set the collection variable \"enableWrites\" to exactly \"true\" before",
                  "// running this request. Any other value (including an unset variable)",
                  "// skips the request instead of mutating portfolio state.",
                  "if (pm.variables.get('enableWrites') !== 'true') {",
                  "    console.log('Blocked portfolio write \"' + pm.info.requestName + '\": set enableWrites=true to allow.');",
                  "    pm.execution.skipRequest();",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('money values stay decimal strings', function () {",
                  "    var summary = pm.response.json().summary;",
                  "    pm.expect(summary.cost_basis).to.be.a('string');",
                  "    pm.expect(summary.realised_pnl).to.be.a('string');",
                  "    pm.expect(summary.gold_quantity_grams).to.be.a('string');",
                  "    pm.expect(summary.metals).to.be.an('array');",
                  "    summary.metals.forEach(function (holding) { pm.expect(holding.quantity_grams).to.be.a('string'); pm.expect(holding.cost_basis).to.be.a('string'); });",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "58754fa2-582d-9159-8891-053ced9f4a90",
          "name": "Browse portfolio transactions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "purchase",
                  "disabled": true
                },
                {
                  "key": "form",
                  "value": "coin",
                  "disabled": true
                },
                {
                  "key": "cgt_status",
                  "value": "unknown",
                  "disabled": true
                },
                {
                  "key": "calendar_year",
                  "value": "2025",
                  "disabled": true
                },
                {
                  "key": "uk_tax_year",
                  "value": "2025-26",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Requires portfolio read permission and accepts X-API-Key only. Results are ordered by transaction_date DESC, created_at DESC, id DESC. Filter by type, form, CGT status, and by period: calendar_year covers 1 January through 31 December inclusive, while uk_tax_year uses the form 2025-26 (consecutive years) and covers 6 April through 5 April inclusive; the two period filters are mutually exclusive and empty values are ignored. Use the opaque cursor for keyset pagination; page size defaults to 50 and is capped at 100. Decimal quantities and monetary values are returned as strings. Portfolio reads do not increment the monthly market-data quota.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "f31904ab-7fb8-3823-a30b-072339fb7fe3",
              "name": "Browse portfolio transactions — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "purchase",
                      "disabled": true
                    },
                    {
                      "key": "form",
                      "value": "coin",
                      "disabled": true
                    },
                    {
                      "key": "cgt_status",
                      "value": "unknown",
                      "disabled": true
                    },
                    {
                      "key": "calendar_year",
                      "value": "2025",
                      "disabled": true
                    },
                    {
                      "key": "uk_tax_year",
                      "value": "2025-26",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "key": "cursor",
                      "value": "",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"transactions\": [\n    {\n      \"metal\": \"gold\",\n      \"type\": \"purchase\",\n      \"version\": 1,\n      \"id\": \"11111111-1111-4111-8111-111111111111\",\n      \"transaction_date\": \"2026-01-15\",\n      \"created_at\": \"2026-01-15T12:00:00.000Z\",\n      \"entered_quantity\": \"1.00500000\",\n      \"weight_unit\": \"gram\",\n      \"quantity_grams\": \"1.005000000000000\",\n      \"unit_price\": \"2500.12500000\",\n      \"gross_cost\": \"2512.62562500\",\n      \"delivery_cost\": \"12.34567895\",\n      \"fees\": \"1.00500000\",\n      \"total_cost\": \"2525.97630395\",\n      \"cost_per_gram\": \"2513.41035368\",\n      \"form\": \"coin\",\n      \"cgt_status\": \"unknown\",\n      \"allocation_method\": \"fifo\",\n      \"description\": \"Bullion API Postman example purchase\",\n      \"lots\": [],\n      \"allocations\": []\n    }\n  ],\n  \"next_cursor\": null\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "2bb6bee9-ca5c-b06f-4d6d-eb4a521be393",
          "name": "Record a metal purchase",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Opaque client-generated retry key. A fresh GUID is generated per run."
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions"
              ],
              "query": [],
              "variable": []
            },
            "description": "Requires portfolio write permission and an Idempotency-Key header. Quantity is normalized to grams at 15 decimal places. Money is rounded half-up and returned as 8-place decimal strings. Reusing a key with the same canonical request replays the original transaction; a changed request returns 409. Send X-Portfolio-Transaction-Type: sale to record a sale. By default sales consume eligible open lots FIFO by transaction date, creation time, then ID; sales cannot be future-dated or precede an allocated purchase. Alternatively send explicit lot allocations: every selected lot must belong to the account, match the sale metal, form and CGT treatment, predate or equal the sale date, and have sufficient remaining quantity, and allocated quantities must sum exactly to the sale quantity. Any invalid allocation fails the whole sale with invalid_allocation (or insufficient_holdings for races) without mutation, while concurrent mutations are committed atomically at Serializable isolation.\n\nPurchase variant: quantities and money are decimal strings. Quantity normalises to grams at 15 decimal places; money rounds half-up to 8 decimal places.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"metal\": \"gold\",\n  \"transaction_date\": \"2026-01-15\",\n  \"quantity\": \"1.005\",\n  \"weight_unit\": \"gram\",\n  \"unit_price\": \"2500.125\",\n  \"delivery_cost\": \"12.34567895\",\n  \"fees\": \"1.00500000\",\n  \"form\": \"coin\",\n  \"cgt_status\": \"unknown\",\n  \"description\": \"Bullion API Postman example purchase\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "1ddd30d1-5abc-65c2-c2ac-5af7980940e9",
              "name": "Record a metal purchase — example",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "description": "Opaque client-generated retry key. A fresh GUID is generated per run."
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"transaction\": {\n    \"metal\": \"gold\",\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"transaction_date\": \"2026-01-15\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"entered_quantity\": \"1.00500000\",\n    \"weight_unit\": \"gram\",\n    \"quantity_grams\": \"1.005000000000000\",\n    \"unit_price\": \"2500.12500000\",\n    \"gross_cost\": \"2512.62562500\",\n    \"delivery_cost\": \"12.34567895\",\n    \"fees\": \"1.00500000\",\n    \"total_cost\": \"2525.97630395\",\n    \"cost_per_gram\": \"2513.41035368\",\n    \"form\": \"coin\",\n    \"cgt_status\": \"unknown\",\n    \"description\": \"Bullion API Postman example purchase\"\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Portfolio mutations are blocked unless explicitly enabled.",
                  "// Set the collection variable \"enableWrites\" to exactly \"true\" before",
                  "// running this request. Any other value (including an unset variable)",
                  "// skips the request instead of mutating portfolio state.",
                  "if (pm.variables.get('enableWrites') !== 'true') {",
                  "    console.log('Blocked portfolio write \"' + pm.info.requestName + '\": set enableWrites=true to allow.');",
                  "    pm.execution.skipRequest();",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quantities stay decimal strings', function () {",
                  "    var transaction = pm.response.json().transaction;",
                  "    pm.expect(transaction.quantity_grams).to.be.a('string');",
                  "    pm.expect(transaction.total_cost).to.be.a('string');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "dc3b563f-0f4a-fc5f-2ac9-dcd9028eda7f",
          "name": "Record a metal sale (FIFO)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Opaque client-generated retry key. A fresh GUID is generated per run."
              },
              {
                "key": "X-Portfolio-Transaction-Type",
                "value": "sale",
                "description": "Selects sale handling for POST /v1/portfolio/transactions; omit for purchases."
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions"
              ],
              "query": [],
              "variable": []
            },
            "description": "Requires portfolio write permission and an Idempotency-Key header. Quantity is normalized to grams at 15 decimal places. Money is rounded half-up and returned as 8-place decimal strings. Reusing a key with the same canonical request replays the original transaction; a changed request returns 409. Send X-Portfolio-Transaction-Type: sale to record a sale. By default sales consume eligible open lots FIFO by transaction date, creation time, then ID; sales cannot be future-dated or precede an allocated purchase. Alternatively send explicit lot allocations: every selected lot must belong to the account, match the sale metal, form and CGT treatment, predate or equal the sale date, and have sufficient remaining quantity, and allocated quantities must sum exactly to the sale quantity. Any invalid allocation fails the whole sale with invalid_allocation (or insufficient_holdings for races) without mutation, while concurrent mutations are committed atomically at Serializable isolation.\n\nSale variant: sends X-Portfolio-Transaction-Type: sale without lot allocations, so eligible open lots are consumed FIFO by transaction date, creation time, then ID.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"metal\": \"gold\",\n  \"transaction_date\": \"2026-01-15\",\n  \"quantity\": \"10.000\",\n  \"weight_unit\": \"gram\",\n  \"unit_price\": \"4527.86000000\",\n  \"delivery_cost\": \"0.00000000\",\n  \"fees\": \"5.00000000\",\n  \"form\": \"coin\",\n  \"cgt_status\": \"unknown\",\n  \"description\": \"Bullion API Postman example FIFO sale\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "67cf65fe-ff48-280c-3fad-57174dd3b44d",
              "name": "Record a metal sale (FIFO) — example",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "description": "Opaque client-generated retry key. A fresh GUID is generated per run."
                  },
                  {
                    "key": "X-Portfolio-Transaction-Type",
                    "value": "sale",
                    "description": "Selects sale handling for POST /v1/portfolio/transactions; omit for purchases."
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"transaction\": {\n    \"metal\": \"gold\",\n    \"type\": \"sale\",\n    \"version\": 1,\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"transaction_date\": \"2026-01-15\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"entered_quantity\": \"10.00000000\",\n    \"quantity_grams\": \"10.000000000000000\",\n    \"weight_unit\": \"gram\",\n    \"unit_price\": \"4527.86000000\",\n    \"gross_proceeds\": \"45278.60000000\",\n    \"delivery_cost\": \"0.00000000\",\n    \"fees\": \"5.00000000\",\n    \"net_proceeds\": \"45273.60000000\",\n    \"disposed_cost\": \"25000.00000000\",\n    \"realised_pnl\": \"20273.60000000\",\n    \"form\": \"coin\",\n    \"cgt_status\": \"unknown\",\n    \"description\": \"Synthetic example sale\",\n    \"allocations\": [\n      {\n        \"metal\": \"gold\",\n        \"purchase_transaction_id\": \"11111111-1111-4111-8111-111111111111\",\n        \"lot_id\": \"11111111-1111-4111-8111-111111111111\",\n        \"quantity_grams\": \"10.000000000000000\",\n        \"cost_basis\": \"25000.00000000\"\n      }\n    ],\n    \"allocation_method\": \"fifo\"\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Portfolio mutations are blocked unless explicitly enabled.",
                  "// Set the collection variable \"enableWrites\" to exactly \"true\" before",
                  "// running this request. Any other value (including an unset variable)",
                  "// skips the request instead of mutating portfolio state.",
                  "if (pm.variables.get('enableWrites') !== 'true') {",
                  "    console.log('Blocked portfolio write \"' + pm.info.requestName + '\": set enableWrites=true to allow.');",
                  "    pm.execution.skipRequest();",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quantities stay decimal strings', function () {",
                  "    var transaction = pm.response.json().transaction;",
                  "    pm.expect(transaction.quantity_grams).to.be.a('string');",
                  "    pm.expect(transaction.net_proceeds).to.be.a('string');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "c1bd68ab-bb49-384b-6c05-d4fd35b7cd02",
          "name": "Record a metal sale (explicit lots)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Opaque client-generated retry key. A fresh GUID is generated per run."
              },
              {
                "key": "X-Portfolio-Transaction-Type",
                "value": "sale",
                "description": "Selects sale handling for POST /v1/portfolio/transactions; omit for purchases."
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions"
              ],
              "query": [],
              "variable": []
            },
            "description": "Requires portfolio write permission and an Idempotency-Key header. Quantity is normalized to grams at 15 decimal places. Money is rounded half-up and returned as 8-place decimal strings. Reusing a key with the same canonical request replays the original transaction; a changed request returns 409. Send X-Portfolio-Transaction-Type: sale to record a sale. By default sales consume eligible open lots FIFO by transaction date, creation time, then ID; sales cannot be future-dated or precede an allocated purchase. Alternatively send explicit lot allocations: every selected lot must belong to the account, match the sale metal, form and CGT treatment, predate or equal the sale date, and have sufficient remaining quantity, and allocated quantities must sum exactly to the sale quantity. Any invalid allocation fails the whole sale with invalid_allocation (or insufficient_holdings for races) without mutation, while concurrent mutations are committed atomically at Serializable isolation.\n\nSale variant: sends X-Portfolio-Transaction-Type: sale with explicit lot allocations. Every allocation must reference an owned open lot that matches the sale metal, form and CGT treatment, must not exceed its remaining quantity, and all allocated quantities must sum exactly to the sale quantity.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"metal\": \"gold\",\n  \"transaction_date\": \"2026-01-15\",\n  \"quantity\": \"10.000\",\n  \"weight_unit\": \"gram\",\n  \"unit_price\": \"4527.86000000\",\n  \"delivery_cost\": \"0.00000000\",\n  \"fees\": \"5.00000000\",\n  \"form\": \"coin\",\n  \"cgt_status\": \"unknown\",\n  \"description\": \"Bullion API Postman example explicit-lot sale\",\n  \"allocations\": [\n    {\n      \"lot_id\": \"11111111-1111-4111-8111-111111111111\",\n      \"quantity_grams\": \"10.000000000000000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "05ca85e6-6874-db41-6904-0e5e5baaf1dd",
              "name": "Record a metal sale (explicit lots) — example",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "{{$guid}}",
                    "description": "Opaque client-generated retry key. A fresh GUID is generated per run."
                  },
                  {
                    "key": "X-Portfolio-Transaction-Type",
                    "value": "sale",
                    "description": "Selects sale handling for POST /v1/portfolio/transactions; omit for purchases."
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"transaction\": {\n    \"metal\": \"gold\",\n    \"type\": \"sale\",\n    \"version\": 1,\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"transaction_date\": \"2026-01-15\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"entered_quantity\": \"10.00000000\",\n    \"quantity_grams\": \"10.000000000000000\",\n    \"weight_unit\": \"gram\",\n    \"unit_price\": \"4527.86000000\",\n    \"gross_proceeds\": \"45278.60000000\",\n    \"delivery_cost\": \"0.00000000\",\n    \"fees\": \"5.00000000\",\n    \"net_proceeds\": \"45273.60000000\",\n    \"disposed_cost\": \"25000.00000000\",\n    \"realised_pnl\": \"20273.60000000\",\n    \"form\": \"coin\",\n    \"cgt_status\": \"unknown\",\n    \"description\": \"Synthetic example sale\",\n    \"allocations\": [\n      {\n        \"metal\": \"gold\",\n        \"purchase_transaction_id\": \"11111111-1111-4111-8111-111111111111\",\n        \"lot_id\": \"11111111-1111-4111-8111-111111111111\",\n        \"quantity_grams\": \"10.000000000000000\",\n        \"cost_basis\": \"25000.00000000\"\n      }\n    ],\n    \"allocation_method\": \"explicit\"\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Portfolio mutations are blocked unless explicitly enabled.",
                  "// Set the collection variable \"enableWrites\" to exactly \"true\" before",
                  "// running this request. Any other value (including an unset variable)",
                  "// skips the request instead of mutating portfolio state.",
                  "if (pm.variables.get('enableWrites') !== 'true') {",
                  "    console.log('Blocked portfolio write \"' + pm.info.requestName + '\": set enableWrites=true to allow.');",
                  "    pm.execution.skipRequest();",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});",
                  "pm.test('quantities stay decimal strings', function () {",
                  "    var transaction = pm.response.json().transaction;",
                  "    pm.expect(transaction.quantity_grams).to.be.a('string');",
                  "    pm.expect(transaction.net_proceeds).to.be.a('string');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "d21dfd2b-7ab5-a846-56ad-5b48f1f77c14",
          "name": "List open purchase lots",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "lots"
              ],
              "query": [],
              "variable": []
            },
            "description": "Requires portfolio read permission and accepts X-API-Key only. Returns only the authenticated owner's open purchase lots with a positive remaining quantity, ordered by purchase transaction_date, creation time, then ID for stable identifiers. Each lot carries its stable lot_id, the originating purchase_transaction_id, purchase date, form, CGT status, remaining quantity in grams, and remaining cost basis as decimal strings. A lot is eligible for an explicit sale allocation when it belongs to the account, matches the sale form and CGT treatment, predates or equals the sale date, has sufficient remaining quantity, and the allocated quantities sum exactly to the sale quantity.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "1049a602-6f3b-cc8e-bf0e-a4a4d58bc8ae",
              "name": "List open purchase lots — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "lots"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"lots\": [\n    {\n      \"metal\": \"gold\",\n      \"lot_id\": \"11111111-1111-4111-8111-111111111111\",\n      \"purchase_transaction_id\": \"11111111-1111-4111-8111-111111111111\",\n      \"transaction_date\": \"2026-01-15\",\n      \"form\": \"coin\",\n      \"cgt_status\": \"unknown\",\n      \"remaining_quantity_grams\": \"1.005000000000000\",\n      \"remaining_cost_basis\": \"2525.97630395\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "059665e7-9f0d-f35d-f131-cc762f457f86",
          "name": "Read one portfolio transaction",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "{{transactionId}}",
                  "description": "Owned transaction identifier. Uses the synthetic collection variable by default."
                }
              ]
            },
            "description": "Requires portfolio read permission and accepts X-API-Key only. The identifier is scoped to the authenticated account; missing, malformed, and cross-account identifiers share the transaction_not_found response. Every response carries an ETag header with the quoted transaction version; send it as If-Match when editing.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "81770cd8-049d-5d55-f3f0-2d5d5b586da3",
              "name": "Read one portfolio transaction — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions",
                    ":id"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "key": "id",
                      "value": "{{transactionId}}",
                      "description": "Owned transaction identifier. Uses the synthetic collection variable by default."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"transaction\": {\n    \"metal\": \"gold\",\n    \"type\": \"purchase\",\n    \"version\": 1,\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"transaction_date\": \"2026-01-15\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"entered_quantity\": \"1.00500000\",\n    \"weight_unit\": \"gram\",\n    \"quantity_grams\": \"1.005000000000000\",\n    \"unit_price\": \"2500.12500000\",\n    \"gross_cost\": \"2512.62562500\",\n    \"delivery_cost\": \"12.34567895\",\n    \"fees\": \"1.00500000\",\n    \"total_cost\": \"2525.97630395\",\n    \"cost_per_gram\": \"2513.41035368\",\n    \"form\": \"coin\",\n    \"cgt_status\": \"unknown\",\n    \"allocation_method\": \"fifo\",\n    \"description\": \"Bullion API Postman example purchase\",\n    \"lots\": [],\n    \"allocations\": []\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "6e3cd736-078d-6410-288c-12ab2c13e37e",
          "name": "Delete one portfolio transaction",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "If-Match",
                "value": "\"1\"",
                "description": "Quoted current transaction version from the ETag header or version field. Replace with the live value before editing or deleting."
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "{{transactionId}}",
                  "description": "Owned transaction identifier. Uses the synthetic collection variable by default."
                }
              ]
            },
            "description": "Requires portfolio write permission and accepts X-API-Key only. The request must send an If-Match header carrying the ETag-style quoted version from the transaction payload (\"1\"); a missing or mismatched version returns 412 stale_transaction without mutation. Deleting a sale restores every allocated quantity and cost basis to its originating purchase lot; deleting a purchase that has funded a sale is refused with 409 transaction_in_use. Missing, malformed, and cross-account identifiers share the transaction_not_found response.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "21b7885c-b74d-f6ce-6210-4d5b45d7ad33",
              "name": "Delete one portfolio transaction — example",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "If-Match",
                    "value": "\"1\"",
                    "description": "Quoted current transaction version from the ETag header or version field. Replace with the live value before editing or deleting."
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions",
                    ":id"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "key": "id",
                      "value": "{{transactionId}}",
                      "description": "Owned transaction identifier. Uses the synthetic collection variable by default."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"deleted_transaction_id\": \"11111111-1111-4111-8111-111111111111\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Portfolio mutations are blocked unless explicitly enabled.",
                  "// Set the collection variable \"enableWrites\" to exactly \"true\" before",
                  "// running this request. Any other value (including an unset variable)",
                  "// skips the request instead of mutating portfolio state.",
                  "if (pm.variables.get('enableWrites') !== 'true') {",
                  "    console.log('Blocked portfolio write \"' + pm.info.requestName + '\": set enableWrites=true to allow.');",
                  "    pm.execution.skipRequest();",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "88511ee5-eef5-88cc-2959-682efd76b740",
          "name": "Edit one portfolio transaction",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "If-Match",
                "value": "\"1\"",
                "description": "Quoted current transaction version from the ETag header or version field. Replace with the live value before editing or deleting."
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "transactions",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "{{transactionId}}",
                  "description": "Owned transaction identifier. Uses the synthetic collection variable by default."
                }
              ]
            },
            "description": "Requires portfolio write permission and accepts X-API-Key only. If-Match must quote the current version; a missing or stale precondition returns 412 stale_transaction without any mutation. The body replaces every mutable field (transaction_date, quantity, weight_unit, unit_price, delivery_cost, fees, form, cgt_status, description); type and owner are immutable. Purchases must keep enough quantity and cost for every dependent sale allocation, cannot move after an allocating sale, and cannot change form or CGT treatment while sales depend on them. Sales release and rebuild only their own allocations using their persisted fifo or explicit method: FIFO edits omit allocations, explicit edits resend them with the same eligibility and exact-sum rules as creation. Success increments the version, returns the new ETag, and recalculates lot totals, disposed cost, and realised P&L immediately. Any validation, allocation, or concurrency failure rolls the whole edit back at Serializable isolation.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"transaction_date\": \"2026-01-15\",\n  \"quantity\": \"1.005\",\n  \"weight_unit\": \"gram\",\n  \"unit_price\": \"2500.125\",\n  \"delivery_cost\": \"12.34567895\",\n  \"fees\": \"1.00500000\",\n  \"form\": \"coin\",\n  \"cgt_status\": \"unknown\",\n  \"description\": \"Bullion API Postman example purchase\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "586958b2-0a5b-538c-00d7-388c682c9cf7",
              "name": "Edit one portfolio transaction — example",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "If-Match",
                    "value": "\"1\"",
                    "description": "Quoted current transaction version from the ETag header or version field. Replace with the live value before editing or deleting."
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "transactions",
                    ":id"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "key": "id",
                      "value": "{{transactionId}}",
                      "description": "Owned transaction identifier. Uses the synthetic collection variable by default."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"transaction\": {\n    \"metal\": \"gold\",\n    \"type\": \"purchase\",\n    \"version\": 1,\n    \"id\": \"11111111-1111-4111-8111-111111111111\",\n    \"transaction_date\": \"2026-01-15\",\n    \"created_at\": \"2026-01-15T12:00:00.000Z\",\n    \"entered_quantity\": \"1.00500000\",\n    \"weight_unit\": \"gram\",\n    \"quantity_grams\": \"1.005000000000000\",\n    \"unit_price\": \"2500.12500000\",\n    \"gross_cost\": \"2512.62562500\",\n    \"delivery_cost\": \"12.34567895\",\n    \"fees\": \"1.00500000\",\n    \"total_cost\": \"2525.97630395\",\n    \"cost_per_gram\": \"2513.41035368\",\n    \"form\": \"coin\",\n    \"cgt_status\": \"unknown\",\n    \"allocation_method\": \"fifo\",\n    \"description\": \"Bullion API Postman example purchase\",\n    \"lots\": [],\n    \"allocations\": []\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Portfolio mutations are blocked unless explicitly enabled.",
                  "// Set the collection variable \"enableWrites\" to exactly \"true\" before",
                  "// running this request. Any other value (including an unset variable)",
                  "// skips the request instead of mutating portfolio state.",
                  "if (pm.variables.get('enableWrites') !== 'true') {",
                  "    console.log('Blocked portfolio write \"' + pm.info.requestName + '\": set enableWrites=true to allow.');",
                  "    pm.execution.skipRequest();",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "id": "2580fa4f-82d5-c56a-c01d-ecc19e22e1a1",
          "name": "Summarise realised gains",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "gains"
              ],
              "query": [
                {
                  "key": "calendar_year",
                  "value": "2025"
                },
                {
                  "key": "uk_tax_year",
                  "value": "2025-26",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Requires portfolio read permission and accepts X-API-Key only. Sums realised profit or loss from owned sale transactions whose transaction_date falls inside one required period: calendar_year covers 1 January through 31 December inclusive, while uk_tax_year uses the form 2025-26 (consecutive years) and covers 6 April through 5 April inclusive. The two period filters are mutually exclusive and exactly one must be supplied. Buckets group sales by recorded CGT status; exempt and not_exempt sums use only transactions declared with that status and unknown collects the rest. All monetary values are exact 8-place decimal strings. The figures are informational only: they exclude annual allowances, matching and pooling rules, and tax rates, and are not tax advice. Portfolio reads do not increment the monthly market-data quota.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-API-Key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [
            {
              "id": "388a1237-eadb-205c-8e71-b107fabe0622",
              "name": "Summarise realised gains — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "portfolio",
                    "gains"
                  ],
                  "query": [
                    {
                      "key": "calendar_year",
                      "value": "2025"
                    },
                    {
                      "key": "uk_tax_year",
                      "value": "2025-26",
                      "disabled": true
                    }
                  ],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"status\": \"success\",\n  \"period\": {\n    \"kind\": \"calendar_year\",\n    \"label\": \"2025\",\n    \"start\": \"2025-01-01\",\n    \"end\": \"2025-12-31\"\n  },\n  \"buckets\": {\n    \"exempt\": \"0.00000000\",\n    \"not_exempt\": \"12.50000000\",\n    \"unknown\": \"0.00000000\"\n  },\n  \"total\": \"12.50000000\",\n  \"metals\": [\n    {\n      \"metal\": \"gold\",\n      \"total\": \"12.50000000\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "// Reads run without opt-in. The X-API-Key header uses the private",
                  "// \"apiKey\" collection variable; /v1/usage instead needs a browser",
                  "// session cookie from signing in to the dashboard.",
                  "if (!pm.variables.get('apiKey')) {",
                  "    console.log('No apiKey variable set for \"' + pm.info.requestName + '\".');",
                  "}"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response has the expected status', function () {",
                  "    pm.expect(pm.response.json().status).to.eql('success');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "id": "cdf347ef-ef3a-6b33-03fc-165b021cf3d7",
      "name": "account",
      "description": "Optional account usage. Requires your dashboard session cookie to be configured in Postman; API keys do not authenticate this request. Skip this folder when using API-key authentication.",
      "item": [
        {
          "id": "e6a01320-5459-9ce8-7e40-1350887cd946",
          "name": "Plan, quota and recent requests",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "usage"
              ],
              "query": [],
              "variable": []
            },
            "description": "Authenticated via session cookie (NOT X-API-Key) so the dashboard can call it directly without storing an API key client-side. This spec is informational for this endpoint: browsers obtain the cookie by signing in at https://bullionapi.dev/login.\n\nThis optional account request requires your dashboard session cookie in Postman. An API key or signing in through a browser alone does not authenticate this request. Skip it when using API-key authentication.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "id": "aba23469-be50-d6d6-9c9f-ca94cf0a4ed2",
              "name": "Plan, quota and recent requests — example",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "usage"
                  ],
                  "query": [],
                  "variable": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"plan\": \"free\",\n  \"limit\": 30,\n  \"used\": 1,\n  \"remaining\": 29,\n  \"reset_at\": \"2026-01-15T12:00:00.000Z\",\n  \"subscription\": {\n    \"status\": null\n  },\n  \"recent\": [],\n  \"email\": \"you@example.com\",\n  \"email_verified\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('response is HTTP 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "pm.test('response contains account usage', function () {",
                  "    pm.expect(pm.response.json().plan).to.be.a('string');",
                  "    pm.expect(pm.response.json().remaining).to.be.a('number');",
                  "});",
                  "pm.test('quota headers are present', function () {",
                  "    pm.response.to.have.header('x-ratelimit-limit');",
                  "    pm.response.to.have.header('x-ratelimit-remaining');",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.bullionapi.dev",
      "description": "Bullion API base URL. Use https://api.bullionapi.dev."
    },
    {
      "key": "apiKey",
      "value": "",
      "description": "Your Bullion API key, sent as the X-API-Key header. Set locally and keep private; never share it."
    },
    {
      "key": "enableWrites",
      "value": "",
      "description": "Write opt-in. Set to exactly \"true\" to allow portfolio mutations; anything else blocks them."
    },
    {
      "key": "transactionId",
      "value": "11111111-1111-4111-8111-111111111111",
      "description": "Synthetic transaction identifier used by single-transaction requests. Replace with a live id."
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key"
      },
      {
        "key": "value",
        "value": "{{apiKey}}"
      },
      {
        "key": "in",
        "value": "header"
      }
    ]
  },
  "event": []
}
