# Reference

Search, identifiers, exchanges and trading calendars, plus our sector, currency and chain lists.

## Supported chains

GET `/v1/chains` 

 Free Operation ID `reference.chains`

Every chain we cover. Token symbols use the namespace, like SOLANA:EPjF...Dt1v.

### Query parameters

- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `evmChainId` integer  
  The EIP-155 chain id, only on EVM chains
  - `id` string
  - `kind` string  
  One of `evm` `utxo` `svm` `tvm` `other`
  - `name` string
  - `namespace` string
  - `nativeDecimals` integer
  - `nativeSymbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `nextCursor` string or null  
  Pass as cursor to get the next page, null on the last page
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/chains" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "id": "bitcoin",
      "name": "Bitcoin",
      "kind": "utxo",
      "namespace": "BITCOIN",
      "nativeSymbol": "BTC",
      "nativeDecimals": 8
    },
    {
      "id": "ethereum",
      "name": "Ethereum",
      "kind": "evm",
      "namespace": "ETHEREUM",
      "evmChainId": 1,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "solana",
      "name": "Solana",
      "kind": "svm",
      "namespace": "SOLANA",
      "nativeSymbol": "SOL",
      "nativeDecimals": 9
    },
    {
      "id": "base",
      "name": "Base",
      "kind": "evm",
      "namespace": "BASE",
      "evmChainId": 8453,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "arbitrum",
      "name": "Arbitrum One",
      "kind": "evm",
      "namespace": "ARBITRUM",
      "evmChainId": 42161,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "optimism",
      "name": "OP Mainnet",
      "kind": "evm",
      "namespace": "OPTIMISM",
      "evmChainId": 10,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "polygon",
      "name": "Polygon PoS",
      "kind": "evm",
      "namespace": "POLYGON",
      "evmChainId": 137,
      "nativeSymbol": "POL",
      "nativeDecimals": 18
    },
    {
      "id": "bsc",
      "name": "BNB Smart Chain",
      "kind": "evm",
      "namespace": "BSC",
      "evmChainId": 56,
      "nativeSymbol": "BNB",
      "nativeDecimals": 18
    },
    {
      "id": "avalanche",
      "name": "Avalanche C-Chain",
      "kind": "evm",
      "namespace": "AVALANCHE",
      "evmChainId": 43114,
      "nativeSymbol": "AVAX",
      "nativeDecimals": 18
    },
    {
      "id": "linea",
      "name": "Linea",
      "kind": "evm",
      "namespace": "LINEA",
      "evmChainId": 59144,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "scroll",
      "name": "Scroll",
      "kind": "evm",
      "namespace": "SCROLL",
      "evmChainId": 534352,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "zksync",
      "name": "ZKsync Era",
      "kind": "evm",
      "namespace": "ZKSYNC",
      "evmChainId": 324,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "blast",
      "name": "Blast",
      "kind": "evm",
      "namespace": "BLAST",
      "evmChainId": 81457,
      "nativeSymbol": "ETH",
      "nativeDecimals": 18
    },
    {
      "id": "mantle",
      "name": "Mantle",
      "kind": "evm",
      "namespace": "MANTLE",
      "evmChainId": 5000,
      "nativeSymbol": "MNT",
      "nativeDecimals": 18
    },
    {
      "id": "gnosis",
      "name": "Gnosis",
      "kind": "evm",
      "namespace": "GNOSIS",
      "evmChainId": 100,
      "nativeSymbol": "XDAI",
      "nativeDecimals": 18
    },
    {
      "id": "sonic",
      "name": "Sonic",
      "kind": "evm",
      "namespace": "SONIC",
      "evmChainId": 146,
      "nativeSymbol": "S",
      "nativeDecimals": 18
    },
    {
      "id": "celo",
      "name": "Celo",
      "kind": "evm",
      "namespace": "CELO",
      "evmChainId": 42220,
      "nativeSymbol": "CELO",
      "nativeDecimals": 18
    },
    {
      "id": "cronos",
      "name": "Cronos",
      "kind": "evm",
      "namespace": "CRONOS",
      "evmChainId": 25,
      "nativeSymbol": "CRO",
      "nativeDecimals": 18
    },
    {
      "id": "hyperevm",
      "name": "HyperEVM",
      "kind": "evm",
      "namespace": "HYPEREVM",
      "evmChainId": 999,
      "nativeSymbol": "HYPE",
      "nativeDecimals": 18
    },
    {
      "id": "tron",
      "name": "Tron",
      "kind": "tvm",
      "namespace": "TRON",
      "nativeSymbol": "TRX",
      "nativeDecimals": 6
    },
    {
      "id": "litecoin",
      "name": "Litecoin",
      "kind": "utxo",
      "namespace": "LITECOIN",
      "nativeSymbol": "LTC",
      "nativeDecimals": 8
    },
    {
      "id": "dogecoin",
      "name": "Dogecoin",
      "kind": "utxo",
      "namespace": "DOGECOIN",
      "nativeSymbol": "DOGE",
      "nativeDecimals": 8
    },
    {
      "id": "bitcoin-cash",
      "name": "Bitcoin Cash",
      "kind": "utxo",
      "namespace": "BITCOIN-CASH",
      "nativeSymbol": "BCH",
      "nativeDecimals": 8
    },
    {
      "id": "ton",
      "name": "TON",
      "kind": "other",
      "namespace": "TON",
      "nativeSymbol": "TON",
      "nativeDecimals": 9
    },
    {
      "id": "sui",
      "name": "Sui",
      "kind": "other",
      "namespace": "SUI",
      "nativeSymbol": "SUI",
      "nativeDecimals": 9
    },
    {
      "id": "aptos",
      "name": "Aptos",
      "kind": "other",
      "namespace": "APTOS",
      "nativeSymbol": "APT",
      "nativeDecimals": 8
    },
    {
      "id": "near",
      "name": "NEAR",
      "kind": "other",
      "namespace": "NEAR",
      "nativeSymbol": "NEAR",
      "nativeDecimals": 24
    },
    {
      "id": "cardano",
      "name": "Cardano",
      "kind": "other",
      "namespace": "CARDANO",
      "nativeSymbol": "ADA",
      "nativeDecimals": 6
    },
    {
      "id": "xrpl",
      "name": "XRP Ledger",
      "kind": "other",
      "namespace": "XRPL",
      "nativeSymbol": "XRP",
      "nativeDecimals": 6
    },
    {
      "id": "stellar",
      "name": "Stellar",
      "kind": "other",
      "namespace": "STELLAR",
      "nativeSymbol": "XLM",
      "nativeDecimals": 7
    },
    {
      "id": "cosmos",
      "name": "Cosmos Hub",
      "kind": "other",
      "namespace": "COSMOS",
      "nativeSymbol": "ATOM",
      "nativeDecimals": 6
    },
    {
      "id": "polkadot",
      "name": "Polkadot",
      "kind": "other",
      "namespace": "POLKADOT",
      "nativeSymbol": "DOT",
      "nativeDecimals": 10
    }
  ],
  "meta": {
    "credits": 0,
    "requestId": "req_34VoxwVAvlNqxk9oAxP9S",
    "nextCursor": null
  }
}
```

## Supported currencies

GET `/v1/currencies` 

 Free Operation ID `reference.currencies`

Every currency prices can be converted into with currency=.

### Query parameters

- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `code` string
  - `minorUnits` integer  
  Decimal places of the minor unit, left out for units without one like gold
  - `name` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `nextCursor` string or null  
  Pass as cursor to get the next page, null on the last page
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/currencies" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "code": "AED",
      "name": "UAE Dirham",
      "minorUnits": 2
    },
    {
      "code": "AFN",
      "name": "Afghani",
      "minorUnits": 2
    },
    {
      "code": "ALL",
      "name": "Lek",
      "minorUnits": 2
    },
    {
      "code": "AMD",
      "name": "Armenian Dram",
      "minorUnits": 2
    },
    {
      "code": "ANG",
      "name": "Netherlands Antillean Guilder",
      "minorUnits": 2
    },
    {
      "code": "AOA",
      "name": "Kwanza",
      "minorUnits": 2
    },
    {
      "code": "ARS",
      "name": "Argentine Peso",
      "minorUnits": 2
    },
    {
      "code": "AUD",
      "name": "Australian Dollar",
      "minorUnits": 2
    },
    {
      "code": "AWG",
      "name": "Aruban Florin",
      "minorUnits": 2
    },
    {
      "code": "AZN",
      "name": "Azerbaijan Manat",
      "minorUnits": 2
    },
    {
      "code": "BAM",
      "name": "Convertible Mark",
      "minorUnits": 2
    },
    {
      "code": "BBD",
      "name": "Barbados Dollar",
      "minorUnits": 2
    },
    {
      "code": "BDT",
      "name": "Taka",
      "minorUnits": 2
    },
    {
      "code": "BGN",
      "name": "Bulgarian Lev",
      "minorUnits": 2
    },
    {
      "code": "BHD",
      "name": "Bahraini Dinar",
      "minorUnits": 3
    },
    {
      "code": "BIF",
      "name": "Burundi Franc",
      "minorUnits": 0
    },
    {
      "code": "BMD",
      "name": "Bermudian Dollar",
      "minorUnits": 2
    },
    {
      "code": "BND",
      "name": "Brunei Dollar",
      "minorUnits": 2
    },
    {
      "code": "BOB",
      "name": "Boliviano",
      "minorUnits": 2
    },
    {
      "code": "BRL",
      "name": "Brazilian Real",
      "minorUnits": 2
    },
    {
      "code": "BSD",
      "name": "Bahamian Dollar",
      "minorUnits": 2
    },
    {
      "code": "BTN",
      "name": "Ngultrum",
      "minorUnits": 2
    },
    {
      "code": "BWP",
      "name": "Pula",
      "minorUnits": 2
    },
    {
      "code": "BYN",
      "name": "Belarusian Ruble",
      "minorUnits": 2
    },
    {
      "code": "BZD",
      "name": "Belize Dollar",
      "minorUnits": 2
    },
    {
      "code": "CAD",
      "name": "Canadian Dollar",
      "minorUnits": 2
    },
    {
      "code": "CDF",
      "name": "Congolese Franc",
      "minorUnits": 2
    },
    {
      "code": "CHF",
      "name": "Swiss Franc",
      "minorUnits": 2
    },
    {
      "code": "CLF",
      "name": "Unidad de Fomento",
      "minorUnits": 4
    },
    {
      "code": "CLP",
      "name": "Chilean Peso",
      "minorUnits": 0
    },
    {
      "code": "CNH",
      "name": "Yuan Renminbi (Offshore)",
      "minorUnits": 2
    },
    {
      "code": "CNY",
      "name": "Yuan Renminbi",
      "minorUnits": 2
    },
    {
      "code": "COP",
      "name": "Colombian Peso",
      "minorUnits": 2
    },
    {
      "code": "CRC",
      "name": "Costa Rican Colon",
      "minorUnits": 2
    },
    {
      "code": "CUP",
      "name": "Cuban Peso",
      "minorUnits": 2
    },
    {
      "code": "CVE",
      "name": "Cabo Verde Escudo",
      "minorUnits": 2
    },
    {
      "code": "CZK",
      "name": "Czech Koruna",
      "minorUnits": 2
    },
    {
      "code": "DJF",
      "name": "Djibouti Franc",
      "minorUnits": 0
    },
    {
      "code": "DKK",
      "name": "Danish Krone",
      "minorUnits": 2
    },
    {
      "code": "DOP",
      "name": "Dominican Peso",
      "minorUnits": 2
    },
    {
      "code": "DZD",
      "name": "Algerian Dinar",
      "minorUnits": 2
    },
    {
      "code": "EGP",
      "name": "Egyptian Pound",
      "minorUnits": 2
    },
    {
      "code": "ERN",
      "name": "Nakfa",
      "minorUnits": 2
    },
    {
      "code": "ETB",
      "name": "Ethiopian Birr",
      "minorUnits": 2
    },
    {
      "code": "EUR",
      "name": "Euro",
      "minorUnits": 2
    },
    {
      "code": "FJD",
      "name": "Fiji Dollar",
      "minorUnits": 2
    },
    {
      "code": "FKP",
      "name": "Falkland Islands Pound",
      "minorUnits": 2
    },
    {
      "code": "GBP",
      "name": "Pound Sterling",
      "minorUnits": 2
    },
    {
      "code": "GEL",
      "name": "Lari",
      "minorUnits": 2
    },
    {
      "code": "GHS",
      "name": "Ghana Cedi",
      "minorUnits": 2
    },
    {
      "code": "GIP",
      "name": "Gibraltar Pound",
      "minorUnits": 2
    },
    {
      "code": "GMD",
      "name": "Dalasi",
      "minorUnits": 2
    },
    {
      "code": "GNF",
      "name": "Guinean Franc",
      "minorUnits": 0
    },
    {
      "code": "GTQ",
      "name": "Quetzal",
      "minorUnits": 2
    },
    {
      "code": "GYD",
      "name": "Guyana Dollar",
      "minorUnits": 2
    },
    {
      "code": "HKD",
      "name": "Hong Kong Dollar",
      "minorUnits": 2
    },
    {
      "code": "HNL",
      "name": "Lempira",
      "minorUnits": 2
    },
    {
      "code": "HTG",
      "name": "Gourde",
      "minorUnits": 2
    },
    {
      "code": "HUF",
      "name": "Forint",
      "minorUnits": 2
    },
    {
      "code": "IDR",
      "name": "Rupiah",
      "minorUnits": 2
    },
    {
      "code": "ILS",
      "name": "New Israeli Sheqel",
      "minorUnits": 2
    },
    {
      "code": "INR",
      "name": "Indian Rupee",
      "minorUnits": 2
    },
    {
      "code": "IQD",
      "name": "Iraqi Dinar",
      "minorUnits": 3
    },
    {
      "code": "IRR",
      "name": "Iranian Rial",
      "minorUnits": 2
    },
    {
      "code": "ISK",
      "name": "Iceland Krona",
      "minorUnits": 0
    },
    {
      "code": "JMD",
      "name": "Jamaican Dollar",
      "minorUnits": 2
    },
    {
      "code": "JOD",
      "name": "Jordanian Dinar",
      "minorUnits": 3
    },
    {
      "code": "JPY",
      "name": "Yen",
      "minorUnits": 0
    },
    {
      "code": "KES",
      "name": "Kenyan Shilling",
      "minorUnits": 2
    },
    {
      "code": "KGS",
      "name": "Som",
      "minorUnits": 2
    },
    {
      "code": "KHR",
      "name": "Riel",
      "minorUnits": 2
    },
    {
      "code": "KMF",
      "name": "Comorian Franc",
      "minorUnits": 0
    },
    {
      "code": "KPW",
      "name": "North Korean Won",
      "minorUnits": 2
    },
    {
      "code": "KRW",
      "name": "Won",
      "minorUnits": 0
    },
    {
      "code": "KWD",
      "name": "Kuwaiti Dinar",
      "minorUnits": 3
    },
    {
      "code": "KYD",
      "name": "Cayman Islands Dollar",
      "minorUnits": 2
    },
    {
      "code": "KZT",
      "name": "Tenge",
      "minorUnits": 2
    },
    {
      "code": "LAK",
      "name": "Lao Kip",
      "minorUnits": 2
    },
    {
      "code": "LBP",
      "name": "Lebanese Pound",
      "minorUnits": 2
    },
    {
      "code": "LKR",
      "name": "Sri Lanka Rupee",
      "minorUnits": 2
    },
    {
      "code": "LRD",
      "name": "Liberian Dollar",
      "minorUnits": 2
    },
    {
      "code": "LSL",
      "name": "Loti",
      "minorUnits": 2
    },
    {
      "code": "LYD",
      "name": "Libyan Dinar",
      "minorUnits": 3
    },
    {
      "code": "MAD",
      "name": "Moroccan Dirham",
      "minorUnits": 2
    },
    {
      "code": "MDL",
      "name": "Moldovan Leu",
      "minorUnits": 2
    },
    {
      "code": "MGA",
      "name": "Malagasy Ariary",
      "minorUnits": 2
    },
    {
      "code": "MKD",
      "name": "Denar",
      "minorUnits": 2
    },
    {
      "code": "MMK",
      "name": "Kyat",
      "minorUnits": 2
    },
    {
      "code": "MNT",
      "name": "Tugrik",
      "minorUnits": 2
    },
    {
      "code": "MOP",
      "name": "Pataca",
      "minorUnits": 2
    },
    {
      "code": "MRU",
      "name": "Ouguiya",
      "minorUnits": 2
    },
    {
      "code": "MUR",
      "name": "Mauritius Rupee",
      "minorUnits": 2
    },
    {
      "code": "MVR",
      "name": "Rufiyaa",
      "minorUnits": 2
    },
    {
      "code": "MWK",
      "name": "Malawi Kwacha",
      "minorUnits": 2
    },
    {
      "code": "MXN",
      "name": "Mexican Peso",
      "minorUnits": 2
    },
    {
      "code": "MYR",
      "name": "Malaysian Ringgit",
      "minorUnits": 2
    },
    {
      "code": "MZN",
      "name": "Mozambique Metical",
      "minorUnits": 2
    },
    {
      "code": "NAD",
      "name": "Namibia Dollar",
      "minorUnits": 2
    },
    {
      "code": "NGN",
      "name": "Naira",
      "minorUnits": 2
    },
    {
      "code": "NIO",
      "name": "Cordoba Oro",
      "minorUnits": 2
    },
    {
      "code": "NOK",
      "name": "Norwegian Krone",
      "minorUnits": 2
    },
    {
      "code": "NPR",
      "name": "Nepalese Rupee",
      "minorUnits": 2
    },
    {
      "code": "NZD",
      "name": "New Zealand Dollar",
      "minorUnits": 2
    },
    {
      "code": "OMR",
      "name": "Rial Omani",
      "minorUnits": 3
    },
    {
      "code": "PAB",
      "name": "Balboa",
      "minorUnits": 2
    },
    {
      "code": "PEN",
      "name": "Sol",
      "minorUnits": 2
    },
    {
      "code": "PGK",
      "name": "Kina",
      "minorUnits": 2
    },
    {
      "code": "PHP",
      "name": "Philippine Peso",
      "minorUnits": 2
    },
    {
      "code": "PKR",
      "name": "Pakistan Rupee",
      "minorUnits": 2
    },
    {
      "code": "PLN",
      "name": "Zloty",
      "minorUnits": 2
    },
    {
      "code": "PYG",
      "name": "Guarani",
      "minorUnits": 0
    },
    {
      "code": "QAR",
      "name": "Qatari Rial",
      "minorUnits": 2
    },
    {
      "code": "RON",
      "name": "Romanian Leu",
      "minorUnits": 2
    },
    {
      "code": "RSD",
      "name": "Serbian Dinar",
      "minorUnits": 2
    },
    {
      "code": "RUB",
      "name": "Russian Ruble",
      "minorUnits": 2
    },
    {
      "code": "RWF",
      "name": "Rwanda Franc",
      "minorUnits": 0
    },
    {
      "code": "SAR",
      "name": "Saudi Riyal",
      "minorUnits": 2
    },
    {
      "code": "SBD",
      "name": "Solomon Islands Dollar",
      "minorUnits": 2
    },
    {
      "code": "SCR",
      "name": "Seychelles Rupee",
      "minorUnits": 2
    },
    {
      "code": "SDG",
      "name": "Sudanese Pound",
      "minorUnits": 2
    },
    {
      "code": "SEK",
      "name": "Swedish Krona",
      "minorUnits": 2
    },
    {
      "code": "SGD",
      "name": "Singapore Dollar",
      "minorUnits": 2
    },
    {
      "code": "SHP",
      "name": "Saint Helena Pound",
      "minorUnits": 2
    },
    {
      "code": "SLE",
      "name": "Leone",
      "minorUnits": 2
    },
    {
      "code": "SOS",
      "name": "Somali Shilling",
      "minorUnits": 2
    },
    {
      "code": "SRD",
      "name": "Surinam Dollar",
      "minorUnits": 2
    },
    {
      "code": "SSP",
      "name": "South Sudanese Pound",
      "minorUnits": 2
    },
    {
      "code": "STN",
      "name": "Dobra",
      "minorUnits": 2
    },
    {
      "code": "SVC",
      "name": "El Salvador Colon",
      "minorUnits": 2
    },
    {
      "code": "SYP",
      "name": "Syrian Pound",
      "minorUnits": 2
    },
    {
      "code": "SZL",
      "name": "Lilangeni",
      "minorUnits": 2
    },
    {
      "code": "THB",
      "name": "Baht",
      "minorUnits": 2
    },
    {
      "code": "TJS",
      "name": "Somoni",
      "minorUnits": 2
    },
    {
      "code": "TMT",
      "name": "Turkmenistan New Manat",
      "minorUnits": 2
    },
    {
      "code": "TND",
      "name": "Tunisian Dinar",
      "minorUnits": 3
    },
    {
      "code": "TOP",
      "name": "Pa'anga",
      "minorUnits": 2
    },
    {
      "code": "TRY",
      "name": "Turkish Lira",
      "minorUnits": 2
    },
    {
      "code": "TTD",
      "name": "Trinidad and Tobago Dollar",
      "minorUnits": 2
    },
    {
      "code": "TWD",
      "name": "New Taiwan Dollar",
      "minorUnits": 2
    },
    {
      "code": "TZS",
      "name": "Tanzanian Shilling",
      "minorUnits": 2
    },
    {
      "code": "UAH",
      "name": "Hryvnia",
      "minorUnits": 2
    },
    {
      "code": "UGX",
      "name": "Uganda Shilling",
      "minorUnits": 0
    },
    {
      "code": "USD",
      "name": "US Dollar",
      "minorUnits": 2
    },
    {
      "code": "UYU",
      "name": "Peso Uruguayo",
      "minorUnits": 2
    },
    {
      "code": "UZS",
      "name": "Uzbekistan Sum",
      "minorUnits": 2
    },
    {
      "code": "VED",
      "name": "Bolivar Soberano",
      "minorUnits": 2
    },
    {
      "code": "VES",
      "name": "Bolivar Soberano",
      "minorUnits": 2
    },
    {
      "code": "VND",
      "name": "Dong",
      "minorUnits": 0
    },
    {
      "code": "VUV",
      "name": "Vatu",
      "minorUnits": 0
    },
    {
      "code": "WST",
      "name": "Tala",
      "minorUnits": 2
    },
    {
      "code": "XAF",
      "name": "CFA Franc BEAC",
      "minorUnits": 0
    },
    {
      "code": "XAG",
      "name": "Silver"
    },
    {
      "code": "XAU",
      "name": "Gold"
    },
    {
      "code": "XCD",
      "name": "East Caribbean Dollar",
      "minorUnits": 2
    },
    {
      "code": "XCG",
      "name": "Caribbean Guilder",
      "minorUnits": 2
    },
    {
      "code": "XOF",
      "name": "CFA Franc BCEAO",
      "minorUnits": 0
    },
    {
      "code": "XPD",
      "name": "Palladium"
    },
    {
      "code": "XPF",
      "name": "CFP Franc",
      "minorUnits": 0
    },
    {
      "code": "XPT",
      "name": "Platinum"
    },
    {
      "code": "YER",
      "name": "Yemeni Rial",
      "minorUnits": 2
    },
    {
      "code": "ZAR",
      "name": "Rand",
      "minorUnits": 2
    },
    {
      "code": "ZMW",
      "name": "Zambian Kwacha",
      "minorUnits": 2
    },
    {
      "code": "ZWG",
      "name": "Zimbabwe Gold",
      "minorUnits": 2
    }
  ],
  "meta": {
    "credits": 0,
    "requestId": "req_34VoxwXDplSyQrvwpYvm2",
    "nextCursor": null
  }
}
```

## Exchanges

GET `/v1/exchanges` 

 Free Operation ID `reference.exchanges`

Every exchange we cover with its country, timezone, currency and regular trading hours in local time.

### Query parameters

- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `aliases` array of strings  
  Other names symbols can use for this exchange, like ASX
  - `breaks` array of objects  
  Midday pauses, local time

    - `end` string
    - `start` string
  - `close` string  
  Regular session close, local time
  - `country` string
  - `currency` string
  - `mic` string
  - `name` string
  - `open` string  
  Regular session open, local time
  - `operatingMic` string
  - `quoteUnit` string  
  The minor unit prices are quoted in, like GBX, left out when quoted in major units
  - `timezone` string  
  IANA timezone the hours are in
  - `weekend` array of strings
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `nextCursor` string or null  
  Pass as cursor to get the next page, null on the last page
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/exchanges" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "mic": "XNYS",
      "operatingMic": "XNYS",
      "aliases": [
        "NYSE"
      ],
      "name": "New York Stock Exchange",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XNAS",
      "operatingMic": "XNAS",
      "aliases": [
        "NASDAQ",
        "NMS"
      ],
      "name": "Nasdaq",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "ARCX",
      "operatingMic": "XNYS",
      "aliases": [
        "NYSEARCA",
        "ARCA"
      ],
      "name": "NYSE Arca",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XASE",
      "operatingMic": "XNYS",
      "aliases": [
        "AMEX",
        "NYSEAMERICAN",
        "NYSEMKT"
      ],
      "name": "NYSE American",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "BATS",
      "operatingMic": "BATS",
      "aliases": [
        "CBOE",
        "BZX"
      ],
      "name": "Cboe BZX Exchange",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "IEXG",
      "operatingMic": "IEXG",
      "aliases": [
        "IEX"
      ],
      "name": "Investors Exchange",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "OTCM",
      "operatingMic": "OTCM",
      "aliases": [
        "OTC"
      ],
      "name": "OTC Markets",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "OTCQ",
      "operatingMic": "OTCM",
      "aliases": [
        "OTCQX"
      ],
      "name": "OTCQX",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "OTCB",
      "operatingMic": "OTCM",
      "aliases": [
        "OTCQB"
      ],
      "name": "OTCQB",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "PINX",
      "operatingMic": "OTCM",
      "aliases": [
        "PINK",
        "OTCPINK"
      ],
      "name": "OTC Pink",
      "country": "US",
      "timezone": "America/New_York",
      "currency": "USD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XTSE",
      "operatingMic": "XTSE",
      "aliases": [
        "TSX"
      ],
      "name": "Toronto Stock Exchange",
      "country": "CA",
      "timezone": "America/Toronto",
      "currency": "CAD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XTSX",
      "operatingMic": "XTSE",
      "aliases": [
        "TSXV",
        "CVE"
      ],
      "name": "TSX Venture Exchange",
      "country": "CA",
      "timezone": "America/Toronto",
      "currency": "CAD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XCNQ",
      "operatingMic": "XCNQ",
      "aliases": [
        "CSE"
      ],
      "name": "Canadian Securities Exchange",
      "country": "CA",
      "timezone": "America/Toronto",
      "currency": "CAD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "NEOE",
      "operatingMic": "NEOE",
      "aliases": [
        "NEO",
        "CBOECA"
      ],
      "name": "Cboe Canada",
      "country": "CA",
      "timezone": "America/Toronto",
      "currency": "CAD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "BVMF",
      "operatingMic": "BVMF",
      "aliases": [
        "B3",
        "BOVESPA",
        "BMFBOVESPA"
      ],
      "name": "B3",
      "country": "BR",
      "timezone": "America/Sao_Paulo",
      "currency": "BRL",
      "open": "10:00",
      "close": "17:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XMEX",
      "operatingMic": "XMEX",
      "aliases": [
        "BMV"
      ],
      "name": "Bolsa Mexicana de Valores",
      "country": "MX",
      "timezone": "America/Mexico_City",
      "currency": "MXN",
      "open": "08:30",
      "close": "15:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XBUE",
      "operatingMic": "XBUE",
      "aliases": [
        "BYMA",
        "BCBA"
      ],
      "name": "Bolsas y Mercados Argentinos",
      "country": "AR",
      "timezone": "America/Argentina/Buenos_Aires",
      "currency": "ARS",
      "open": "11:00",
      "close": "17:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSGO",
      "operatingMic": "XSGO",
      "aliases": [
        "BCS"
      ],
      "name": "Santiago Stock Exchange",
      "country": "CL",
      "timezone": "America/Santiago",
      "currency": "CLP",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XBOG",
      "operatingMic": "XBOG",
      "aliases": [
        "BVC"
      ],
      "name": "Colombia Stock Exchange",
      "country": "CO",
      "timezone": "America/Bogota",
      "currency": "COP",
      "open": "09:30",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XLON",
      "operatingMic": "XLON",
      "aliases": [
        "LSE",
        "LON"
      ],
      "name": "London Stock Exchange",
      "country": "GB",
      "timezone": "Europe/London",
      "currency": "GBP",
      "quoteUnit": "GBX",
      "open": "08:00",
      "close": "16:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XDUB",
      "operatingMic": "XDUB",
      "aliases": [
        "ISE",
        "EURONEXTDUBLIN"
      ],
      "name": "Euronext Dublin",
      "country": "IE",
      "timezone": "Europe/Dublin",
      "currency": "EUR",
      "open": "08:00",
      "close": "16:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XPAR",
      "operatingMic": "XPAR",
      "aliases": [
        "EPA",
        "EURONEXTPARIS"
      ],
      "name": "Euronext Paris",
      "country": "FR",
      "timezone": "Europe/Paris",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XAMS",
      "operatingMic": "XAMS",
      "aliases": [
        "AMS",
        "EURONEXTAMSTERDAM"
      ],
      "name": "Euronext Amsterdam",
      "country": "NL",
      "timezone": "Europe/Amsterdam",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XBRU",
      "operatingMic": "XBRU",
      "aliases": [
        "EBR",
        "EURONEXTBRUSSELS"
      ],
      "name": "Euronext Brussels",
      "country": "BE",
      "timezone": "Europe/Brussels",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XLIS",
      "operatingMic": "XLIS",
      "aliases": [
        "ELI",
        "EURONEXTLISBON"
      ],
      "name": "Euronext Lisbon",
      "country": "PT",
      "timezone": "Europe/Lisbon",
      "currency": "EUR",
      "open": "08:00",
      "close": "16:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XOSL",
      "operatingMic": "XOSL",
      "aliases": [
        "OSL",
        "OSLO"
      ],
      "name": "Euronext Oslo Bors",
      "country": "NO",
      "timezone": "Europe/Oslo",
      "currency": "NOK",
      "open": "09:00",
      "close": "16:20",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XMIL",
      "operatingMic": "XMIL",
      "aliases": [
        "BIT",
        "MIL"
      ],
      "name": "Euronext Milan",
      "country": "IT",
      "timezone": "Europe/Rome",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XETR",
      "operatingMic": "XETR",
      "aliases": [
        "XETRA",
        "ETR"
      ],
      "name": "Xetra",
      "country": "DE",
      "timezone": "Europe/Berlin",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XFRA",
      "operatingMic": "XFRA",
      "aliases": [
        "FWB",
        "FRA"
      ],
      "name": "Borse Frankfurt",
      "country": "DE",
      "timezone": "Europe/Berlin",
      "currency": "EUR",
      "open": "08:00",
      "close": "22:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XMAD",
      "operatingMic": "XMAD",
      "aliases": [
        "BME",
        "MCE"
      ],
      "name": "Bolsa de Madrid",
      "country": "ES",
      "timezone": "Europe/Madrid",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSWX",
      "operatingMic": "XSWX",
      "aliases": [
        "SIX",
        "SWX"
      ],
      "name": "SIX Swiss Exchange",
      "country": "CH",
      "timezone": "Europe/Zurich",
      "currency": "CHF",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSTO",
      "operatingMic": "XSTO",
      "aliases": [
        "STO",
        "OMXSTO"
      ],
      "name": "Nasdaq Stockholm",
      "country": "SE",
      "timezone": "Europe/Stockholm",
      "currency": "SEK",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XHEL",
      "operatingMic": "XHEL",
      "aliases": [
        "HEL",
        "OMXHEX"
      ],
      "name": "Nasdaq Helsinki",
      "country": "FI",
      "timezone": "Europe/Helsinki",
      "currency": "EUR",
      "open": "10:00",
      "close": "18:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XCSE",
      "operatingMic": "XCSE",
      "aliases": [
        "CPH",
        "OMXCOP"
      ],
      "name": "Nasdaq Copenhagen",
      "country": "DK",
      "timezone": "Europe/Copenhagen",
      "currency": "DKK",
      "open": "09:00",
      "close": "17:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XWBO",
      "operatingMic": "XWBO",
      "aliases": [
        "VIE",
        "WBAG"
      ],
      "name": "Wiener Borse",
      "country": "AT",
      "timezone": "Europe/Vienna",
      "currency": "EUR",
      "open": "09:00",
      "close": "17:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XWAR",
      "operatingMic": "XWAR",
      "aliases": [
        "GPW",
        "WSE"
      ],
      "name": "Warsaw Stock Exchange",
      "country": "PL",
      "timezone": "Europe/Warsaw",
      "currency": "PLN",
      "open": "09:00",
      "close": "17:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XPRA",
      "operatingMic": "XPRA",
      "aliases": [
        "PRA"
      ],
      "name": "Prague Stock Exchange",
      "country": "CZ",
      "timezone": "Europe/Prague",
      "currency": "CZK",
      "open": "09:00",
      "close": "16:20",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XBUD",
      "operatingMic": "XBUD",
      "aliases": [
        "BET",
        "BUD"
      ],
      "name": "Budapest Stock Exchange",
      "country": "HU",
      "timezone": "Europe/Budapest",
      "currency": "HUF",
      "open": "09:00",
      "close": "17:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XATH",
      "operatingMic": "XATH",
      "aliases": [
        "ATHEX"
      ],
      "name": "Athens Stock Exchange",
      "country": "GR",
      "timezone": "Europe/Athens",
      "currency": "EUR",
      "open": "10:00",
      "close": "17:20",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XIST",
      "operatingMic": "XIST",
      "aliases": [
        "BIST",
        "IST"
      ],
      "name": "Borsa Istanbul",
      "country": "TR",
      "timezone": "Europe/Istanbul",
      "currency": "TRY",
      "open": "10:00",
      "close": "18:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XJSE",
      "operatingMic": "XJSE",
      "aliases": [
        "JSE",
        "JNB"
      ],
      "name": "Johannesburg Stock Exchange",
      "country": "ZA",
      "timezone": "Africa/Johannesburg",
      "currency": "ZAR",
      "quoteUnit": "ZAC",
      "open": "09:00",
      "close": "17:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XCAI",
      "operatingMic": "XCAI",
      "aliases": [
        "EGX"
      ],
      "name": "Egyptian Exchange",
      "country": "EG",
      "timezone": "Africa/Cairo",
      "currency": "EGP",
      "open": "10:00",
      "close": "14:30",
      "breaks": [],
      "weekend": [
        "friday",
        "saturday"
      ]
    },
    {
      "mic": "XTAE",
      "operatingMic": "XTAE",
      "aliases": [
        "TASE",
        "TLV"
      ],
      "name": "Tel Aviv Stock Exchange",
      "country": "IL",
      "timezone": "Asia/Jerusalem",
      "currency": "ILS",
      "quoteUnit": "ILA",
      "open": "09:59",
      "close": "17:25",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSAU",
      "operatingMic": "XSAU",
      "aliases": [
        "TADAWUL",
        "SAU"
      ],
      "name": "Saudi Exchange",
      "country": "SA",
      "timezone": "Asia/Riyadh",
      "currency": "SAR",
      "open": "10:00",
      "close": "15:00",
      "breaks": [],
      "weekend": [
        "friday",
        "saturday"
      ]
    },
    {
      "mic": "XDFM",
      "operatingMic": "XDFM",
      "aliases": [
        "DFM"
      ],
      "name": "Dubai Financial Market",
      "country": "AE",
      "timezone": "Asia/Dubai",
      "currency": "AED",
      "open": "10:00",
      "close": "15:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XADS",
      "operatingMic": "XADS",
      "aliases": [
        "ADX"
      ],
      "name": "Abu Dhabi Securities Exchange",
      "country": "AE",
      "timezone": "Asia/Dubai",
      "currency": "AED",
      "open": "10:00",
      "close": "15:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XASX",
      "operatingMic": "XASX",
      "aliases": [
        "ASX"
      ],
      "name": "ASX",
      "country": "AU",
      "timezone": "Australia/Sydney",
      "currency": "AUD",
      "open": "10:00",
      "close": "16:00",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XNZE",
      "operatingMic": "XNZE",
      "aliases": [
        "NZX",
        "NZE"
      ],
      "name": "NZX",
      "country": "NZ",
      "timezone": "Pacific/Auckland",
      "currency": "NZD",
      "open": "10:00",
      "close": "16:45",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XHKG",
      "operatingMic": "XHKG",
      "aliases": [
        "HKEX",
        "HKG"
      ],
      "name": "Hong Kong Exchanges",
      "country": "HK",
      "timezone": "Asia/Hong_Kong",
      "currency": "HKD",
      "open": "09:30",
      "close": "16:00",
      "breaks": [
        {
          "start": "12:00",
          "end": "13:00"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSHG",
      "operatingMic": "XSHG",
      "aliases": [
        "SSE",
        "SHA"
      ],
      "name": "Shanghai Stock Exchange",
      "country": "CN",
      "timezone": "Asia/Shanghai",
      "currency": "CNY",
      "open": "09:30",
      "close": "15:00",
      "breaks": [
        {
          "start": "11:30",
          "end": "13:00"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSHE",
      "operatingMic": "XSHE",
      "aliases": [
        "SZSE",
        "SHE"
      ],
      "name": "Shenzhen Stock Exchange",
      "country": "CN",
      "timezone": "Asia/Shanghai",
      "currency": "CNY",
      "open": "09:30",
      "close": "15:00",
      "breaks": [
        {
          "start": "11:30",
          "end": "13:00"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XTKS",
      "operatingMic": "XJPX",
      "aliases": [
        "TSE",
        "TYO",
        "JPX"
      ],
      "name": "Tokyo Stock Exchange",
      "country": "JP",
      "timezone": "Asia/Tokyo",
      "currency": "JPY",
      "open": "09:00",
      "close": "15:30",
      "breaks": [
        {
          "start": "11:30",
          "end": "12:30"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XKRX",
      "operatingMic": "XKRX",
      "aliases": [
        "KRX",
        "KOSPI"
      ],
      "name": "Korea Exchange",
      "country": "KR",
      "timezone": "Asia/Seoul",
      "currency": "KRW",
      "open": "09:00",
      "close": "15:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XKOS",
      "operatingMic": "XKRX",
      "aliases": [
        "KOSDAQ"
      ],
      "name": "KOSDAQ",
      "country": "KR",
      "timezone": "Asia/Seoul",
      "currency": "KRW",
      "open": "09:00",
      "close": "15:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XTAI",
      "operatingMic": "XTAI",
      "aliases": [
        "TWSE",
        "TPE"
      ],
      "name": "Taiwan Stock Exchange",
      "country": "TW",
      "timezone": "Asia/Taipei",
      "currency": "TWD",
      "open": "09:00",
      "close": "13:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "ROCO",
      "operatingMic": "ROCO",
      "aliases": [
        "TPEX",
        "TWO"
      ],
      "name": "Taipei Exchange",
      "country": "TW",
      "timezone": "Asia/Taipei",
      "currency": "TWD",
      "open": "09:00",
      "close": "13:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSES",
      "operatingMic": "XSES",
      "aliases": [
        "SGX"
      ],
      "name": "Singapore Exchange",
      "country": "SG",
      "timezone": "Asia/Singapore",
      "currency": "SGD",
      "open": "09:00",
      "close": "17:00",
      "breaks": [
        {
          "start": "12:00",
          "end": "13:00"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XBOM",
      "operatingMic": "XBOM",
      "aliases": [
        "BSE",
        "BOM"
      ],
      "name": "BSE",
      "country": "IN",
      "timezone": "Asia/Kolkata",
      "currency": "INR",
      "open": "09:15",
      "close": "15:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XNSE",
      "operatingMic": "XNSE",
      "aliases": [
        "NSE"
      ],
      "name": "National Stock Exchange of India",
      "country": "IN",
      "timezone": "Asia/Kolkata",
      "currency": "INR",
      "open": "09:15",
      "close": "15:30",
      "breaks": [],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XIDX",
      "operatingMic": "XIDX",
      "aliases": [
        "IDX"
      ],
      "name": "Indonesia Stock Exchange",
      "country": "ID",
      "timezone": "Asia/Jakarta",
      "currency": "IDR",
      "open": "09:00",
      "close": "16:00",
      "breaks": [
        {
          "start": "12:00",
          "end": "13:30"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XBKK",
      "operatingMic": "XBKK",
      "aliases": [
        "SET"
      ],
      "name": "Stock Exchange of Thailand",
      "country": "TH",
      "timezone": "Asia/Bangkok",
      "currency": "THB",
      "open": "10:00",
      "close": "16:30",
      "breaks": [
        {
          "start": "12:30",
          "end": "14:30"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XKLS",
      "operatingMic": "XKLS",
      "aliases": [
        "BURSA",
        "MYX"
      ],
      "name": "Bursa Malaysia",
      "country": "MY",
      "timezone": "Asia/Kuala_Lumpur",
      "currency": "MYR",
      "open": "09:00",
      "close": "17:00",
      "breaks": [
        {
          "start": "12:30",
          "end": "14:30"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XPHS",
      "operatingMic": "XPHS",
      "aliases": [
        "PSE"
      ],
      "name": "Philippine Stock Exchange",
      "country": "PH",
      "timezone": "Asia/Manila",
      "currency": "PHP",
      "open": "09:30",
      "close": "15:00",
      "breaks": [
        {
          "start": "12:00",
          "end": "13:00"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    },
    {
      "mic": "XSTC",
      "operatingMic": "XSTC",
      "aliases": [
        "HOSE"
      ],
      "name": "Ho Chi Minh Stock Exchange",
      "country": "VN",
      "timezone": "Asia/Ho_Chi_Minh",
      "currency": "VND",
      "open": "09:00",
      "close": "15:00",
      "breaks": [
        {
          "start": "11:30",
          "end": "13:00"
        }
      ],
      "weekend": [
        "saturday",
        "sunday"
      ]
    }
  ],
  "meta": {
    "credits": 0,
    "requestId": "req_34VoxwY6IzPDzXhDLLXne",
    "nextCursor": null
  }
}
```

## Exchange trading calendar

GET `/v1/exchanges/{mic}/calendar` 

 Free Operation ID `reference.exchangeCalendar`

Trading sessions between from and to with their open, close and breaks in UTC, plus the holidays and early closes in that range. Up to five years per call, between 2000 and 2099.

### Path parameters

- `mic` string Required  
A MIC, or an alias like ASX  
Up to 16 characters

### Query parameters

- `from` date Required  
First day, YYYY-MM-DD
- `to` date Required  
Last day, YYYY-MM-DD

### Response

- `data` object  

  - `holidays` array of objects  
  Weekdays in the range the exchange is closed or closes early

    - `close` string  
      The early close in local time, left out when closed all day
    - `date` date
    - `kind` string  
      One of `closed` `early_close`
    - `name` string
  - `mic` string
  - `sessions` array of objects  
  Every trading day in the range

    - `breaks` array of objects  

      - `end` timestamp
      - `start` timestamp
    - `close` timestamp
    - `date` date
    - `earlyClose` boolean
    - `open` timestamp
  - `timezone` string
- `meta` object  

  - `asOf` timestamp or null  
  The point in time this data describes, like when a filing was published. Null where that doesn't apply, as with account data
  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`404` Not Found`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/exchanges/XASX/calendar?from=2026-04-01&to=2026-04-30" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": {
    "mic": "XASX",
    "timezone": "Australia/Sydney",
    "sessions": [
      {
        "date": "2026-04-01",
        "open": "2026-03-31T23:00:00Z",
        "close": "2026-04-01T05:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-02",
        "open": "2026-04-01T23:00:00Z",
        "close": "2026-04-02T05:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-07",
        "open": "2026-04-07T00:00:00Z",
        "close": "2026-04-07T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-08",
        "open": "2026-04-08T00:00:00Z",
        "close": "2026-04-08T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-09",
        "open": "2026-04-09T00:00:00Z",
        "close": "2026-04-09T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-10",
        "open": "2026-04-10T00:00:00Z",
        "close": "2026-04-10T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-13",
        "open": "2026-04-13T00:00:00Z",
        "close": "2026-04-13T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-14",
        "open": "2026-04-14T00:00:00Z",
        "close": "2026-04-14T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-15",
        "open": "2026-04-15T00:00:00Z",
        "close": "2026-04-15T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-16",
        "open": "2026-04-16T00:00:00Z",
        "close": "2026-04-16T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-17",
        "open": "2026-04-17T00:00:00Z",
        "close": "2026-04-17T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-20",
        "open": "2026-04-20T00:00:00Z",
        "close": "2026-04-20T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-21",
        "open": "2026-04-21T00:00:00Z",
        "close": "2026-04-21T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-22",
        "open": "2026-04-22T00:00:00Z",
        "close": "2026-04-22T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-23",
        "open": "2026-04-23T00:00:00Z",
        "close": "2026-04-23T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-24",
        "open": "2026-04-24T00:00:00Z",
        "close": "2026-04-24T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-27",
        "open": "2026-04-27T00:00:00Z",
        "close": "2026-04-27T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-28",
        "open": "2026-04-28T00:00:00Z",
        "close": "2026-04-28T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-29",
        "open": "2026-04-29T00:00:00Z",
        "close": "2026-04-29T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      },
      {
        "date": "2026-04-30",
        "open": "2026-04-30T00:00:00Z",
        "close": "2026-04-30T06:00:00Z",
        "earlyClose": false,
        "breaks": []
      }
    ],
    "holidays": [
      {
        "date": "2026-04-03",
        "name": "Good Friday",
        "kind": "closed"
      },
      {
        "date": "2026-04-06",
        "name": "Easter Monday",
        "kind": "closed"
      }
    ]
  },
  "meta": {
    "credits": 0,
    "requestId": "req_34VoxwY6RhgcHf0dJlr3z",
    "asOf": null
  }
}
```

## Instruments listed on an exchange

GET `/v1/exchanges/{mic}/instruments` 

 1 credit per page 2 credits with fresh=true Operation ID `reference.exchangeInstruments`

The exchange's whole listing universe, ordered by ticker.

### Path parameters

- `mic` string Required  
A MIC, or an alias like ASX  
Up to 16 characters

### Query parameters

- `cursor` string  
From meta.nextCursor of the previous page  
Up to 512 characters
- `limit` integer  
Page size  
From 1 to 1000\. Defaults to 100
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `industry` string or null  
  An industry id from /v1/sectors, null when unclassified
  - `instrument` object  

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `isin` string or null
  - `snapshotDate` date  
  The trading day this listing was last seen on
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `nextCursor` string or null  
  Pass as cursor to get the next page, null on the last page
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`404` Not Found`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/exchanges/XASX/instruments?limit=5" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "instrument": {
        "id": "ins_34VN9N07FIny04GmzzBWB",
        "symbol": "ASX:10X",
        "name": "EXULTANT MINING LIMITED",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "isin": "AU0000430449",
      "industry": "diversified_mining",
      "snapshotDate": "2026-09-25"
    },
    {
      "instrument": {
        "id": "ins_34VN9N07FPucZEYQQMD0d",
        "symbol": "ASX:14D",
        "name": "1414 DEGREES LIMITED",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "isin": "AU0000010696",
      "industry": "building_products",
      "snapshotDate": "2026-09-25"
    },
    {
      "instrument": {
        "id": "ins_34VN9N07FU7DTC5rYClXI",
        "symbol": "ASX:1AD",
        "name": "ADALTA LIMITED",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "isin": "AU0000001AD2",
      "industry": "biotechnology",
      "snapshotDate": "2026-09-25"
    },
    {
      "instrument": {
        "id": "ins_34VN9N07FWzkIEGl8P72a",
        "symbol": "ASX:1AE",
        "name": "AURORA ENERGY METALS LIMITED",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "isin": "AU0000216889",
      "industry": "diversified_mining",
      "snapshotDate": "2026-09-25"
    },
    {
      "instrument": {
        "id": "ins_34VN9N07FY18cqCgSjd44",
        "symbol": "ASX:1AI",
        "name": "ALGORAE PHARMACEUTICALS LIMITED",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "isin": "AU0000296022",
      "industry": "pharmaceuticals",
      "snapshotDate": "2026-09-25"
    }
  ],
  "meta": {
    "credits": 1,
    "requestId": "req_34VoxwYCDHqYIRzGKsOsP",
    "nextCursor": "IjFBSSI"
  }
}
```

## Instrument details

GET `/v1/instruments` 

 1 credit per instrument 2 credits with fresh=true Operation ID `reference.instruments`

Every identifier we hold, status, listing dates, and the history of listings and names. Licensed identifiers like CUSIP and SEDOL work as symbols but are never returned.

### Query parameters

- `symbols` array of strings Required  
Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins\_...  
Up to 100 items
- `listedOn` date  
Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `identifiers` object  
  Only the ones it has

    - `apir` string
    - `cik` string
    - `compositeFigi` string
    - `contract` string  
      chain:address, for tokens
    - `cryptoSymbol` string
    - `currencyCode` string  
      For a currency itself, like FX:AUD
    - `figi` string
    - `futureCode` string
    - `fxPair` string
    - `indexCode` string
    - `isin` string
    - `lei` string
    - `rateCode` string
    - `shareClassFigi` string
  - `instrument` object  
  What the symbol resolved to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `listedFrom` date or null  
  First trading day on any exchange, null when unknown or never listed
  - `listedTo` date  
  Last trading day, or an option's expiry. Left out while listed without an end
  - `listings` array of objects  
  Every exchange and ticker it has traded under, oldest first

    - `from` date or null  
      First trading day, null when unknown
    - `mic` string
    - `ticker` string
    - `to` date  
      Last trading day, left out while listed
  - `names` array of objects  
  Every name it has had, oldest first

    - `from` date or null  
      First day under this name, null when unknown
    - `name` string
    - `to` date  
      Last day under this name, left out for the current name
  - `nft` object  
  Which collection an NFT is from and its token id. Left out for other types

    - `collection` object  
      The collection an item belongs to. Left out on a collection, and when we don't know

      - `country` string
      - `currency` string
      - `id` string
      - `mic` string  
            Left out for instruments that don't trade on an exchange, like tokens
      - `name` string
      - `symbol` string
      - `ticker` string or null  
            The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
      - `type` string  
            One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
    - `tokenId` string or null  
      The item's token id, null on a collection and on chains without them, like Solana
  - `option` object  
  The terms of an option or warrant. Left out for other types

    - `exercise` string or null  
      One of `american` `european`
    - `expiry` date or null
    - `multiplier` number or null  
      How many of the underlying one contract is on. Null for contracts adjusted for a corporate action, and when we don't know
    - `right` string or null  
      One of `call` `put`
    - `strike` number or null  
      In the instrument's currency
    - `underlying` object  
      What the contract is written on. Left out when we don't know

      - `country` string
      - `currency` string
      - `id` string
      - `mic` string  
            Left out for instruments that don't trade on an exchange, like tokens
      - `name` string
      - `symbol` string
      - `ticker` string or null  
            The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
      - `type` string  
            One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
    - `warrantType` string or null  
      How the issuer describes a warrant, like trading or instalment
  - `status` string  
  One of `active` `delisted` `suspended` `expired`
  - `symbol` string  
  The symbol as sent
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `instrument_not_found` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `symbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/instruments?symbols=NASDAQ:AAPL,ASX:BHP" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "symbol": "NASDAQ:AAPL",
      "instrument": {
        "id": "ins_34VInjBb4l9Qz9gdXnDar",
        "symbol": "NASDAQ:AAPL",
        "name": "Apple Inc.",
        "type": "equity",
        "mic": "XNAS",
        "currency": "USD",
        "country": "US"
      },
      "asOf": "2026-09-27T00:43:50.72567Z",
      "status": "active",
      "listedFrom": null,
      "identifiers": {
        "isin": "US0378331005",
        "figi": "BBG000B9Y5X2",
        "compositeFigi": "BBG000B9XRY4",
        "shareClassFigi": "BBG001S5N8V8",
        "lei": "HWUPKR0MPOU8FGXBT394",
        "cik": "0000320193"
      },
      "listings": [
        {
          "mic": "XNAS",
          "ticker": "AAPL",
          "from": null
        }
      ],
      "names": []
    },
    {
      "symbol": "ASX:BHP",
      "instrument": {
        "id": "ins_34VMvft6kZEXThtzFGcAL",
        "symbol": "ASX:BHP",
        "name": "BHP Group Ltd",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-09-27T00:43:50.74143Z",
      "status": "active",
      "listedFrom": "1885-08-13",
      "identifiers": {
        "isin": "AU000000BHP4",
        "figi": "BBG000D0D3H5",
        "compositeFigi": "BBG000D0D358",
        "shareClassFigi": "BBG001S5YBT2",
        "lei": "WZE1WSENV6JSZFK0JC28"
      },
      "listings": [
        {
          "mic": "XASX",
          "ticker": "BHP",
          "from": "1885-08-13"
        }
      ],
      "names": []
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34VoxwbJtJS1ZCZdsyJlx"
  }
}
```

## Instrument logo

GET `/v1/logos` 

 Free Operation ID `reference.logos`

The logo image of any symbol symbols take, for img tags and anyone else, without a key and from any origin. Currencies and FX pairs show the round flag of their base currency. A symbol answers with a redirect to where its logo lives, which also answers any origin, and the logo URLs other responses carry answer with the image itself. Logos come in whatever format their source made them, so SVG, PNG, JPEG, GIF, WebP or AVIF. Answers are cached for a day in browsers and longer at our edge, and a missing logo for an hour.

### Query parameters

- `symbol` string  
Any identifier symbols take, like ASX:BHP, FX:AUDUSD, FX:AUD, CRYPTO:BTC or SOLANA:<mint>. Send either symbol, or id and v
- `id` string  
An instrument id, from a logo URL another response gave
- `v` string  
The version from the same logo URL

### Errors

`400` Neither a symbol nor an id and version, or a symbol we can't read`404` No logo for the symbol, or none at that version`429` Too many logos from one network, see Retry-After`502` The logo is temporarily unavailable`503` The logo is still being fetched, ask again after Retry-After

```html
<img src="https://api.quova.io/v1/logos" alt="" width="48" height="48">
```

## Find instruments

GET `/v1/search` 

 1 credit per call 2 credits with fresh=true Operation ID `reference.search`

Instruments whose name, ticker, ISIN or contract address matches q, best first. Exact tickers and identifiers lead, then tickers and names that start with q, and a company's main listing comes before its other listings. A US exchange that lists nothing matching takes matches on the other US exchanges, since brokers often print NYSE for NYSE Arca. Each page costs the same.

### Query parameters

- `q` string Required  
A name, ticker, ISIN or contract address  
Up to 100 characters
- `type` string  
Only instruments of this type  
One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
- `exchange` string  
Only instruments listed here, as a MIC or an alias like ASX  
Up to 16 characters
- `country` string  
Only instruments from this ISO country  
Matches ^\[A-Z\]{2}$
- `cursor` string  
From meta.nextCursor of the previous page  
Up to 512 characters
- `limit` integer  
Page size  
From 1 to 1000\. Defaults to 100
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `country` string
  - `currency` string
  - `id` string
  - `mic` string  
  Left out for instruments that don't trade on an exchange, like tokens
  - `name` string
  - `symbol` string
  - `ticker` string or null  
  The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
  - `type` string  
  One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `nextCursor` string or null  
  Pass as cursor to get the next page, null on the last page
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/search?q=bhp" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "id": "ins_34VMvft6kZEXThtzFGcAL",
      "symbol": "ASX:BHP",
      "name": "BHP Group Ltd",
      "type": "equity",
      "mic": "XASX",
      "currency": "AUD",
      "country": "AU"
    },
    {
      "id": "ins_34VNABSw6B2VT6HQ7vOFz",
      "symbol": "FWB:BHP",
      "name": "BHP Group Ltd",
      "type": "equity",
      "mic": "XFRA",
      "currency": "EUR",
      "country": "DE"
    },
    {
      "id": "ins_34VNABSw6FKrKOoQhEMhR",
      "symbol": "FWB:BHP1",
      "name": "BHP Group Ltd",
      "type": "equity",
      "mic": "XFRA",
      "currency": "EUR",
      "country": "DE"
    },
    {
      "id": "ins_34VNABSw6CUkaYYY3rpUN",
      "symbol": "LSE:BHP",
      "name": "BHP Group Ltd",
      "type": "equity",
      "mic": "XLON",
      "currency": "GBP",
      "country": "GB"
    },
    {
      "id": "ins_34VNABSw5ydDtR5GPDo7E",
      "symbol": "NYSE:BHP",
      "name": "BHP Group Ltd",
      "type": "equity",
      "mic": "XNYS",
      "currency": "USD",
      "country": "US"
    },
    {
      "id": "ins_34VNABSw6Ja8yjSBAMDJc",
      "symbol": "OTC:BHPTY",
      "name": "Banco Hipotecario S.A.",
      "type": "equity",
      "mic": "OTCM",
      "currency": "USD",
      "country": "US"
    },
    {
      "id": "ins_34VNABSw6GlewixVXbVPR",
      "symbol": "PINK:BHPLF",
      "name": "BHP Group Ltd",
      "type": "equity",
      "mic": "PINX",
      "currency": "USD",
      "country": "US"
    }
  ],
  "meta": {
    "credits": 1,
    "requestId": "req_34Voxwlqawdx1JOwQ5L2Z",
    "nextCursor": null
  }
}
```

## Find instruments in bulk

POST `/v1/search` 

 1 credit per query 2 credits with fresh=true Operation ID `reference.searchMany`

Up to 100 searches in one call, each matching the way a single search does and answered with its first page, in request order. Each query that finds its answer costs what a single search does, and one we can't answer right now is in errors instead.

### Query parameters

- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Request body

- `limit` integer  
The most instruments each query answers with  
From 1 to 1000\. Defaults to 100
- `queries` array of objects Required  
Up to 100 searches  
Up to 100 items

  - `country` string  
  Only instruments from this ISO country  
  Matches ^\[A-Z\]{2}$
  - `exchange` string  
  Only instruments listed here, as a MIC or an alias like ASX  
  Up to 16 characters
  - `q` string Required  
  A name, ticker, ISIN or contract address  
  Up to 100 characters
  - `type` string  
  Only instruments of this type  
  One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`

### Response

- `data` array of objects  

  - `instruments` array of objects  
  Best first

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `q` string  
  The query's q as sent
  - `query` integer  
  The query's position in queries
- `errors` array of objects  

  - `code` string  
  One of `data_pending` `data_failed`
  - `message` string
  - `query` integer  
  The query's position in queries
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl -X POST "https://api.quova.io/v1/search" \
  -H "Authorization: Bearer $QUOVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 3,
    "queries": [
      {
        "exchange": "NYSE",
        "q": "VOO"
      },
      {
        "country": "AU",
        "q": "vanguard"
      }
    ]
  }'
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "query": 0,
      "q": "VOO",
      "instruments": [
        {
          "id": "ins_34naZz7YZHmEmVLc1YvQN",
          "symbol": "NYSEARCA:VOO",
          "ticker": "VOO",
          "name": "Vanguard S&P 500 ETF",
          "type": "etf",
          "mic": "ARCX",
          "currency": "USD",
          "country": "US"
        },
        {
          "id": "ins_34naZz7YZSmlQL7QfDQOm",
          "symbol": "NASDAQ:VOOB",
          "ticker": "VOOB",
          "name": "Vistashares Shieldtm S&P 500 Enhanced Protection ETF",
          "type": "etf",
          "mic": "XNAS",
          "currency": "USD",
          "country": "US"
        },
        {
          "id": "ins_34naZz7YZX1J2MhesjmWh",
          "symbol": "NYSEARCA:VOOG",
          "ticker": "VOOG",
          "name": "Vanguard S&P 500 Growth Index Fund ETF Shares",
          "type": "etf",
          "mic": "ARCX",
          "currency": "USD",
          "country": "US"
        }
      ]
    },
    {
      "query": 1,
      "q": "vanguard",
      "instruments": []
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34naZpY01NkhuQUh11mZr"
  }
}
```

## Sector and industry taxonomy

GET `/v1/sectors` 

 Free Operation ID `reference.sectors`

Our sectors and the industries in each. Profiles, listings and the screener use these ids.

### Query parameters

- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `id` string
  - `industries` array of objects  

    - `id` string
    - `name` string
  - `name` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `nextCursor` string or null  
  Pass as cursor to get the next page, null on the last page
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/sectors" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "id": "energy",
      "name": "Energy",
      "industries": [
        {
          "id": "oil_gas_integrated",
          "name": "Integrated Oil and Gas"
        },
        {
          "id": "oil_gas_production",
          "name": "Oil and Gas Production"
        },
        {
          "id": "oil_gas_midstream",
          "name": "Pipelines and Midstream"
        },
        {
          "id": "oil_gas_refining",
          "name": "Refining and Fuel Marketing"
        },
        {
          "id": "oil_gas_services",
          "name": "Oilfield Equipment and Services"
        },
        {
          "id": "coal",
          "name": "Coal"
        },
        {
          "id": "uranium",
          "name": "Uranium"
        },
        {
          "id": "renewable_energy",
          "name": "Renewable Energy Equipment"
        }
      ]
    },
    {
      "id": "materials",
      "name": "Materials",
      "industries": [
        {
          "id": "chemicals",
          "name": "Chemicals"
        },
        {
          "id": "specialty_chemicals",
          "name": "Specialty Chemicals"
        },
        {
          "id": "agricultural_inputs",
          "name": "Fertilisers and Agricultural Inputs"
        },
        {
          "id": "construction_materials",
          "name": "Construction Materials"
        },
        {
          "id": "packaging",
          "name": "Containers and Packaging"
        },
        {
          "id": "diversified_mining",
          "name": "Diversified Mining"
        },
        {
          "id": "gold",
          "name": "Gold"
        },
        {
          "id": "precious_metals",
          "name": "Silver and Precious Metals"
        },
        {
          "id": "copper",
          "name": "Copper"
        },
        {
          "id": "steel",
          "name": "Iron and Steel"
        },
        {
          "id": "aluminium",
          "name": "Aluminium"
        },
        {
          "id": "battery_metals",
          "name": "Lithium and Battery Metals"
        },
        {
          "id": "forest_products",
          "name": "Forest and Paper Products"
        }
      ]
    },
    {
      "id": "industrials",
      "name": "Industrials",
      "industries": [
        {
          "id": "aerospace_defence",
          "name": "Aerospace and Defence"
        },
        {
          "id": "building_products",
          "name": "Building Products"
        },
        {
          "id": "construction_engineering",
          "name": "Construction and Engineering"
        },
        {
          "id": "electrical_equipment",
          "name": "Electrical Equipment"
        },
        {
          "id": "machinery",
          "name": "Industrial Machinery"
        },
        {
          "id": "conglomerates",
          "name": "Industrial Conglomerates"
        },
        {
          "id": "distributors",
          "name": "Trading Companies and Distributors"
        },
        {
          "id": "commercial_services",
          "name": "Commercial Services"
        },
        {
          "id": "professional_services",
          "name": "Professional Services"
        },
        {
          "id": "airlines",
          "name": "Airlines"
        },
        {
          "id": "logistics",
          "name": "Freight and Logistics"
        },
        {
          "id": "shipping",
          "name": "Marine Shipping"
        },
        {
          "id": "rail",
          "name": "Railroads"
        },
        {
          "id": "road_transport",
          "name": "Trucking and Road Transport"
        },
        {
          "id": "transport_infrastructure",
          "name": "Airports, Ports and Toll Roads"
        },
        {
          "id": "environmental_services",
          "name": "Waste and Environmental Services"
        }
      ]
    },
    {
      "id": "consumer_discretionary",
      "name": "Consumer Discretionary",
      "industries": [
        {
          "id": "automobiles",
          "name": "Automobiles"
        },
        {
          "id": "auto_parts",
          "name": "Auto Parts and Equipment"
        },
        {
          "id": "household_durables",
          "name": "Household Durables"
        },
        {
          "id": "homebuilders",
          "name": "Homebuilders"
        },
        {
          "id": "leisure_products",
          "name": "Leisure Products"
        },
        {
          "id": "apparel_luxury",
          "name": "Apparel, Footwear and Luxury"
        },
        {
          "id": "travel_lodging",
          "name": "Hotels, Resorts and Travel"
        },
        {
          "id": "restaurants",
          "name": "Restaurants"
        },
        {
          "id": "gaming",
          "name": "Casinos and Gaming"
        },
        {
          "id": "department_stores",
          "name": "Department and General Stores"
        },
        {
          "id": "specialty_retail",
          "name": "Specialty Retail"
        },
        {
          "id": "online_retail",
          "name": "Online Retail"
        },
        {
          "id": "education",
          "name": "Education Services"
        },
        {
          "id": "consumer_services",
          "name": "Consumer Services"
        }
      ]
    },
    {
      "id": "consumer_staples",
      "name": "Consumer Staples",
      "industries": [
        {
          "id": "staples_retail",
          "name": "Supermarkets and Pharmacies"
        },
        {
          "id": "beverages",
          "name": "Beverages"
        },
        {
          "id": "alcohol",
          "name": "Brewers, Wineries and Distillers"
        },
        {
          "id": "packaged_food",
          "name": "Packaged Food"
        },
        {
          "id": "agriculture",
          "name": "Agriculture and Farm Products"
        },
        {
          "id": "tobacco",
          "name": "Tobacco"
        },
        {
          "id": "household_products",
          "name": "Household Products"
        },
        {
          "id": "personal_care",
          "name": "Personal Care Products"
        }
      ]
    },
    {
      "id": "health_care",
      "name": "Health Care",
      "industries": [
        {
          "id": "pharmaceuticals",
          "name": "Pharmaceuticals"
        },
        {
          "id": "biotechnology",
          "name": "Biotechnology"
        },
        {
          "id": "medical_devices",
          "name": "Medical Devices"
        },
        {
          "id": "medical_supplies",
          "name": "Medical Supplies"
        },
        {
          "id": "health_care_providers",
          "name": "Health Care Providers"
        },
        {
          "id": "health_care_distribution",
          "name": "Health Care Distribution"
        },
        {
          "id": "managed_care",
          "name": "Health Insurance and Managed Care"
        },
        {
          "id": "life_sciences_tools",
          "name": "Diagnostics and Life Sciences Tools"
        },
        {
          "id": "health_technology",
          "name": "Health Technology"
        }
      ]
    },
    {
      "id": "financials",
      "name": "Financials",
      "industries": [
        {
          "id": "banks",
          "name": "Banks"
        },
        {
          "id": "regional_banks",
          "name": "Regional Banks"
        },
        {
          "id": "consumer_finance",
          "name": "Consumer Finance and Payments"
        },
        {
          "id": "capital_markets",
          "name": "Capital Markets"
        },
        {
          "id": "asset_management",
          "name": "Asset Management"
        },
        {
          "id": "financial_data",
          "name": "Exchanges and Financial Data"
        },
        {
          "id": "life_insurance",
          "name": "Life Insurance"
        },
        {
          "id": "general_insurance",
          "name": "General Insurance"
        },
        {
          "id": "insurance_brokers",
          "name": "Insurance Brokers"
        },
        {
          "id": "mortgage_finance",
          "name": "Mortgage Finance"
        },
        {
          "id": "investment_vehicles",
          "name": "Investment Companies and Shells"
        }
      ]
    },
    {
      "id": "technology",
      "name": "Technology",
      "industries": [
        {
          "id": "application_software",
          "name": "Application Software"
        },
        {
          "id": "infrastructure_software",
          "name": "Infrastructure Software"
        },
        {
          "id": "it_services",
          "name": "IT Services"
        },
        {
          "id": "semiconductors",
          "name": "Semiconductors"
        },
        {
          "id": "semiconductor_equipment",
          "name": "Semiconductor Equipment"
        },
        {
          "id": "computer_hardware",
          "name": "Computer Hardware and Storage"
        },
        {
          "id": "communication_equipment",
          "name": "Communication Equipment"
        },
        {
          "id": "electronic_components",
          "name": "Electronic Components and Instruments"
        },
        {
          "id": "consumer_electronics",
          "name": "Consumer Electronics"
        }
      ]
    },
    {
      "id": "communication",
      "name": "Communication",
      "industries": [
        {
          "id": "telecom_services",
          "name": "Telecom Services"
        },
        {
          "id": "wireless_telecom",
          "name": "Wireless Telecom"
        },
        {
          "id": "media",
          "name": "Broadcasting and Cable"
        },
        {
          "id": "entertainment",
          "name": "Entertainment"
        },
        {
          "id": "interactive_media",
          "name": "Internet Platforms"
        },
        {
          "id": "advertising",
          "name": "Advertising and Marketing"
        },
        {
          "id": "publishing",
          "name": "Publishing"
        }
      ]
    },
    {
      "id": "utilities",
      "name": "Utilities",
      "industries": [
        {
          "id": "electric_utilities",
          "name": "Electric Utilities"
        },
        {
          "id": "gas_utilities",
          "name": "Gas Utilities"
        },
        {
          "id": "water_utilities",
          "name": "Water Utilities"
        },
        {
          "id": "multi_utilities",
          "name": "Multi-Utilities"
        },
        {
          "id": "independent_power",
          "name": "Independent Power Producers"
        }
      ]
    },
    {
      "id": "real_estate",
      "name": "Real Estate",
      "industries": [
        {
          "id": "diversified_reits",
          "name": "Diversified REITs"
        },
        {
          "id": "retail_reits",
          "name": "Retail REITs"
        },
        {
          "id": "office_reits",
          "name": "Office REITs"
        },
        {
          "id": "industrial_reits",
          "name": "Industrial REITs"
        },
        {
          "id": "residential_reits",
          "name": "Residential REITs"
        },
        {
          "id": "specialty_reits",
          "name": "Specialty REITs"
        },
        {
          "id": "real_estate_development",
          "name": "Real Estate Development"
        },
        {
          "id": "real_estate_services",
          "name": "Real Estate Services"
        }
      ]
    }
  ],
  "meta": {
    "credits": 0,
    "requestId": "req_34VoxwmWmkiuIvdqMktFy",
    "nextCursor": null
  }
}
```
