{
  "info": {
    "name": "Aurum Feed API",
    "description": "Every price the map at aurumfeed.live shows, as JSON: the dealers' live quotes, the price history, the ECB rates and the knowledge graph of the catalogue, its families and makers, the dealers and who supplies them.\n\nThe catalogue is in two compartments. **Coins**: the bullion designs in every size the mints strike them, under `/v1/coins` and `/v1/families`. **Bars**: every weight from the gram to the kilo, by maker — PAMP, C.Hafner, Heraeus, Valcambi and the rest, the other brands, and each weight of any brand — under `/v1/bars`, with the makers under `/v1/bars/brands`. A row asked in the wrong compartment is a 404 that names the right address; the feed and the history take `?form=coin` or `?form=bar`.\n\nSet `apiKey` to the key from your dashboard (https://aurumfeed.live/account): it is sent in the `X-Api-Key` header on every request. Without a key the feed, the history and the rates still answer, with no budget of your own; the graph export and quotes as of a past instant need a Pro or Business plan. Every keyed answer carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` and `X-RateLimit-Burst`; the test on each request prints them.\n\nDocumentation: https://aurumfeed.live/developers",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-Api-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "exec": [
          "pm.test('the API answered', () => pm.expect(pm.response.code).to.be.below(500));",
          "const h = (name) => pm.response.headers.get(name);",
          "if (h('x-ratelimit-remaining') !== undefined) {",
          "  console.log(`plan ${h('x-aurum-tier')} · ${h('x-ratelimit-remaining')} of ${h('x-ratelimit-limit')} requests left this month · ${h('x-ratelimit-burst')} a minute`);",
          "} else if (h('x-aurum-tier') === 'anonymous') {",
          "  console.log('no key sent: the page\\'s own view, with no budget of your own');",
          "}",
          "if (pm.response.code >= 400) { try { console.log(pm.response.json().error); } catch (e) {} }"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://aurumfeed.live/api",
      "description": "The site's own origin; staging answers at https://staging.aurumfeed.live/api"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "secret",
      "description": "af_live_… from the dashboard; af_test_… on staging"
    },
    {
      "key": "coinId",
      "value": "sterlina",
      "description": "A coin's id: see Coins → The coins' catalogue"
    },
    {
      "key": "familyId",
      "value": "krugerrand",
      "description": "A family id: see Families → The families"
    },
    {
      "key": "barId",
      "value": "lingotto-pamp-100-g",
      "description": "A bar's id — a maker's (`lingotto-c-hafner-1-kg`), the other brands' (`lingotto-altre-marche-100-g`) or any brand's (`lingotto-100-g`): see Bars → The bars' catalogue"
    },
    {
      "key": "brandId",
      "value": "c-hafner",
      "description": "A maker's id: see Bars → The makers"
    },
    {
      "key": "dealerId",
      "value": "src_orov0",
      "description": "A dealer id: see Dealers → The dealers"
    }
  ],
  "item": [
    {
      "name": "Prices",
      "description": "What the map reads: the feed, the history, the rates. Open without a key; with one, counted against your budget. `?form=coin` or `?form=bar` asks for one compartment.",
      "item": [
        {
          "name": "The feed",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/feed",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "feed"
              ]
            },
            "description": "Every catalogue row with every dealer's current quote — coins and bars, each saying its `form`, its `family`, a bar its maker (`brand`) or `anyBrand` — the dealers with where they are, and the gold spot in euro per gram."
          },
          "response": []
        },
        {
          "name": "The feed, coins only",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/feed?form=coin",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "feed"
              ],
              "query": [
                {
                  "key": "form",
                  "value": "coin",
                  "description": "coin or bar: one compartment"
                }
              ]
            },
            "description": "The coins' compartment: the rows whose `form` is `coin`, and only the dealers that quote at least one of them."
          },
          "response": []
        },
        {
          "name": "The feed, bars only",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/feed?form=bar",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "feed"
              ],
              "query": [
                {
                  "key": "form",
                  "value": "bar",
                  "description": "coin or bar: one compartment"
                }
              ]
            },
            "description": "The bars' compartment: every maker's bars, the other brands' and the bars of any brand, and only the dealers that sell a bar. On a bar of any brand (`anyBrand: true`) each quote is a shop's cheapest bar of the weight, and `barId` names the row it stands on: a client that counts a shop's offers skips those."
          },
          "response": []
        },
        {
          "name": "History of two coins, a month by six hours",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/history?range=day&coins={{coinId}},marengo",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "history"
              ],
              "query": [
                {
                  "key": "range",
                  "value": "day",
                  "description": "min: an hour by the minute · hour: a day by the quarter · day: a month by six hours"
                },
                {
                  "key": "coins",
                  "value": "{{coinId}},marengo",
                  "description": "catalogue ids, comma-separated; empty for the spot alone"
                }
              ]
            },
            "description": "The typical (median) price of the catalogue rows asked for, coins or bars, over one window, with the cheapest and dearest quote in each bucket and how many dealers were behind the median."
          },
          "response": []
        },
        {
          "name": "A coin and a bar of one ounce, a month by six hours",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/history?range=day&coins=krugerrand-1-oz,lingotto-1-oz",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "history"
              ],
              "query": [
                {
                  "key": "range",
                  "value": "day",
                  "description": "min: an hour by the minute · hour: a day by the quarter · day: a month by six hours"
                },
                {
                  "key": "coins",
                  "value": "krugerrand-1-oz,lingotto-1-oz",
                  "description": "a coin's id and a bar's: one list takes both"
                }
              ]
            },
            "description": "The same ounce of gold struck as a Krugerrand and as a bar, side by side: the gap between the two medians is what the coin costs over the bar, or saves. A bar's series starts on 10 October 2026, when the bars joined the catalogue."
          },
          "response": []
        },
        {
          "name": "History of every bar, a day by the quarter",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/history?range=hour&form=bar",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "history"
              ],
              "query": [
                {
                  "key": "range",
                  "value": "hour",
                  "description": "min, hour or day"
                },
                {
                  "key": "form",
                  "value": "bar",
                  "description": "coin or bar: every row of one compartment"
                }
              ]
            },
            "description": "With `?form=` and no `?coins=`, every published row of that compartment: here every bar, by maker and of any brand."
          },
          "response": []
        },
        {
          "name": "History split by dealer",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/history?range=hour&coins={{coinId}}&by=source",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "history"
              ],
              "query": [
                {
                  "key": "range",
                  "value": "hour"
                },
                {
                  "key": "coins",
                  "value": "{{coinId}}"
                },
                {
                  "key": "by",
                  "value": "source",
                  "description": "one series per dealer instead of the median"
                }
              ]
            },
            "description": "The same window, one series per dealer."
          },
          "response": []
        },
        {
          "name": "Exchange rates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/fx",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "fx"
              ]
            },
            "description": "The ECB reference rates the hub converts with: euro-based, one per currency, dated."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Coins",
      "description": "The coins' compartment: the bullion designs, in every size the mints strike them, quoted or not. A bar is never here: it is in Bars, and a bar's id asked here is answered 404 with the address that answers for it.",
      "item": [
        {
          "name": "The coins' catalogue",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coins",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coins"
              ]
            },
            "description": "Every coin: fine gold, fineness, face value, mint and country, melt value at the spot, median and how many dealers quote it."
          },
          "response": []
        },
        {
          "name": "One coin",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coins/{{coinId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coins",
                "{{coinId}}"
              ]
            },
            "description": "A coin with its sizes, its quotes cheapest first beside the dealer's name and country, and the titles shops give its pages."
          },
          "response": []
        },
        {
          "name": "One coin as JSON-LD",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coins/{{coinId}}?format=jsonld",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coins",
                "{{coinId}}"
              ],
              "query": [
                {
                  "key": "format",
                  "value": "jsonld",
                  "description": "schema.org Product, ProductGroup and Offers, as application/ld+json"
                }
              ]
            },
            "description": "The same coin in the schema.org vocabulary: a Product in the category `Gold bullion coin`, a variant of its family's ProductGroup, with an Offer per dealer."
          },
          "response": []
        },
        {
          "name": "The coin's quotes now",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coins/{{coinId}}/quotes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coins",
                "{{coinId}}",
                "quotes"
              ]
            },
            "description": "The standing quote table for the coin, with the median."
          },
          "response": []
        },
        {
          "name": "The coin's quotes as of a past instant (Pro, Business)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coins/{{coinId}}/quotes?asOf=2026-10-10T08:00:00Z",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coins",
                "{{coinId}}",
                "quotes"
              ],
              "query": [
                {
                  "key": "asOf",
                  "value": "2026-10-10T08:00:00Z",
                  "description": "ISO 8601 or epoch milliseconds; clamped to now"
                }
              ]
            },
            "description": "Each dealer at its last observed price at that instant, off the raw observations, with the coverage the store holds. Needs a plan that includes it: a Starter key is answered 403."
          },
          "response": []
        },
        {
          "name": "The families",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/families",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "families"
              ]
            },
            "description": "Every design with its coins, the full coin first, its mint and country and the spellings shops use for it, with their language."
          },
          "response": []
        },
        {
          "name": "One family",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/families/{{familyId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "families",
                "{{familyId}}"
              ]
            },
            "description": "One design with its coins."
          },
          "response": []
        },
        {
          "name": "A bar asked as a coin: 404, and where it is",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/coins/lingotto-100-g",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "coins",
                "lingotto-100-g"
              ]
            },
            "description": "A bar is not in the coins' compartment. The answer is `404 { \"error\": \"unknown coin\", \"bar\": \"/api/v1/bars/lingotto-100-g\" }`: the address that answers for it."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Bars",
      "description": "The bars' compartment: every weight from 1 g to 1 kg, by maker. Three kinds of row per weight: a maker's (`lingotto-pamp-100-g`, `brand: \"pamp\"`), the other brands' (`lingotto-altre-marche-100-g`: a page that names no maker on the list, several, or whichever the shop has), and the bar of any brand (`lingotto-100-g`, `anyBrand: true`): each shop at its cheapest bar of the weight, whoever made it, with `barId` saying whose. The makers are under `/v1/bars/brands`.",
      "item": [
        {
          "name": "The bars' catalogue",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars"
              ]
            },
            "description": "The eleven weights of any brand, then each maker's bars and the other brands' that shops have been read selling: maker, fine gold, melt value at the spot, median and how many dealers quote it."
          },
          "response": []
        },
        {
          "name": "One maker's bar",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/{{barId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "{{barId}}"
              ]
            },
            "description": "A maker's bar with its weights, `sameWeight` — the same weight of any brand, of every maker quoted and of the other brands, each with its median and dealer count — its quotes cheapest first and the titles shops give its pages."
          },
          "response": []
        },
        {
          "name": "The 100 g of any brand",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/lingotto-100-g",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "lingotto-100-g"
              ]
            },
            "description": "Each shop at its cheapest 100 g bar, whoever made it: every quote carries `barId`, the maker's row its price stands on."
          },
          "response": []
        },
        {
          "name": "The 100 g of the other brands",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/lingotto-altre-marche-100-g",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "lingotto-altre-marche-100-g"
              ]
            },
            "description": "The 100 g bars whose page names no maker on the list, several of them, or promises whichever the shop has."
          },
          "response": []
        },
        {
          "name": "One maker's bar as JSON-LD",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/{{barId}}?format=jsonld",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "{{barId}}"
              ],
              "query": [
                {
                  "key": "format",
                  "value": "jsonld",
                  "description": "schema.org Product, ProductGroup and Offers, as application/ld+json"
                }
              ]
            },
            "description": "The same bar in the schema.org vocabulary: a Product in the category `Gold bullion bar`, with the maker as `brand` and `manufacturer` and an Offer per dealer."
          },
          "response": []
        },
        {
          "name": "The bar's quotes now",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/{{barId}}/quotes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "{{barId}}",
                "quotes"
              ]
            },
            "description": "The standing quote table for the bar, with the median."
          },
          "response": []
        },
        {
          "name": "The bar's quotes as of a past instant (Pro, Business)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/{{barId}}/quotes?asOf=2026-10-10T08:00:00Z",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "{{barId}}",
                "quotes"
              ],
              "query": [
                {
                  "key": "asOf",
                  "value": "2026-10-10T08:00:00Z",
                  "description": "ISO 8601 or epoch milliseconds; clamped to now"
                }
              ]
            },
            "description": "Each dealer at its last observed price at that instant. On a bar of any brand the instant is read off its makers' rows, each dealer at the cheaper of its prices then, with `barId`. Needs a plan that includes it: a Starter key is answered 403."
          },
          "response": []
        },
        {
          "name": "The makers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/brands",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "brands"
              ]
            },
            "description": "The thirteen makers whose bars are quoted by name, in the order of their names — Argor-Heraeus, C.Hafner, Heraeus, Italpreziosi, Metalor, Münze Österreich, PAMP, Perth Mint, Rand Refinery, Royal Canadian Mint, The Royal Mint, Umicore, Valcambi — each with its seat, its family and the bars of its own the hub holds (`barIds`, empty until a shop is read selling one)."
          },
          "response": []
        },
        {
          "name": "One maker",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/brands/{{brandId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "brands",
                "{{brandId}}"
              ]
            },
            "description": "One maker with its bars, lightest first. A wholesaler or a mint that strikes only coins is `404 unknown brand`."
          },
          "response": []
        },
        {
          "name": "A coin asked as a bar: 404, and where it is",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/bars/sterlina",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "bars",
                "sterlina"
              ]
            },
            "description": "A coin is not in the bars' compartment. The answer is `404 { \"error\": \"unknown bar\", \"coin\": \"/api/v1/coins/sterlina\" }`."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Dealers",
      "description": "The shops whose published prices the hub reads, in the buyer's view: active dealers only. A shop's coins and its bars are two lists.",
      "item": [
        {
          "name": "The dealers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dealers",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dealers"
              ]
            },
            "description": "Host, country, where each stands and whether that is a measurement, reliability over thirty days, its profile with who supplies it, and the catalogue rows it covers, coins and bars."
          },
          "response": []
        },
        {
          "name": "One dealer",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dealers/{{dealerId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dealers",
                "{{dealerId}}"
              ]
            },
            "description": "A dealer with its profile (ratings dated, contacts, payments, services, suppliers), its quotes — coins first, then bars, each with its `form`, a bar once, on its maker's row — and every page the hub read of it."
          },
          "response": []
        },
        {
          "name": "One dealer as JSON-LD",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dealers/{{dealerId}}?format=jsonld",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dealers",
                "{{dealerId}}"
              ],
              "query": [
                {
                  "key": "format",
                  "value": "jsonld",
                  "description": "schema.org Store or OnlineStore, with its offers and, under aurum:suppliedBy, an Organization per supplier and sayer"
                }
              ]
            },
            "description": "The same dealer in the schema.org vocabulary."
          },
          "response": []
        },
        {
          "name": "A dealer's coins",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dealers/{{dealerId}}/coins",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dealers",
                "{{dealerId}}",
                "coins"
              ]
            },
            "description": "The coins the dealer covers, each with its standing quote or null for one it indexed and does not quote now."
          },
          "response": []
        },
        {
          "name": "A dealer's bars",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dealers/{{dealerId}}/bars",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dealers",
                "{{dealerId}}",
                "bars"
              ]
            },
            "description": "The bars the dealer covers, each on its maker's row or the other brands', with its standing quote or null."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Graph",
      "description": "The whole knowledge graph, both compartments: nodes and edges with a provenance on every fact. Needs a plan that includes it.\n\nA bar is a `coin` node whose `form` is `bar`. A maker's bar has a `made_by` edge to its maker — an `organization` node for a refinery, a `mint` node for a mint that strikes bars — the same node a shop's `supplied_by` reaches; the bars have no `minted_by`, `issued_in` or `size_of` edge.",
      "item": [
        {
          "name": "The whole graph (Pro, Business)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/graph",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "graph"
              ]
            },
            "description": "Every node and every edge at once. A Starter key is answered 403; no key, 401."
          },
          "response": []
        },
        {
          "name": "Only some node types (Pro, Business)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/graph?types=coin,family,mint",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "graph"
              ],
              "query": [
                {
                  "key": "types",
                  "value": "coin,family,mint",
                  "description": "coin · family · dealer · sku · mint · organization · country · platform; an edge is kept only when both its ends are"
                }
              ]
            },
            "description": "The catalogue without the pages."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Plans",
      "description": "What the API sells, and which ways to pay this site has open.",
      "item": [
        {
          "name": "The plans and the ways to pay",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/plans",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "plans"
              ]
            },
            "description": "The three plans with their prices and budgets, which providers are configured, and whether this is the sandbox. Public."
          },
          "response": []
        }
      ]
    }
  ]
}
