# Interest Rate Data

> Returns central bank policy interest rate data for a country, grouped by metric.

`GET https://api.bavest.co/v2/economy/interest-rates/{country}`

Group: Economic Indicators. Route id: `v2_economy_interest_rates_country`. Included in: Growth.

## Description

Returns central bank policy interest rate data for a country, grouped by metric. SA and KW use the BIS POLICY_RATE series (percent per annum). AE and QA are not covered by this BIS feed; no US-rate proxy is substituted.

## Authentication

Send your API key in the `x-api-key` header on every request. No key yet? Sign up at https://dashboard.bavest.co/sign-up (free trial). The examples read the key from the `BAVEST_API_KEY` environment variable.

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `country` | path | string | yes | ISO 3166-1 alpha-2 country code (e.g., `US`, `DE`, `JP`) Example `US`. |

## Response

200 Successful response (`application/json`).

| Field | Type | Always present | Description |
|---|---|---|---|
| `data` | EconomyIndicatorResponse | no | Macroeconomic indicator data grouped by metric. |
| `data.category` | string \| null | no | Metric category. One of `business_confidence`, `consumer_confidence`, `consumer_spending`, `economic_sentiment`, `employment`, `gdp`, `government`, `housing`, `income`, `industrial_production`, `inflation`, `interest_rates`, `investment`, `manufacturing`, `money_supply`, `trade`. Example: `inflation`. |
| `data.country` | string \| null | no | ISO 3166-1 alpha-2 country code. Example: `US`. |
| `data.metrics` | array of EconomyMetric | yes | Metrics matching the query, each with its own data array. |
| `data.metrics[].code` | string | yes | Machine-readable metric code. Example: `CPI`. |
| `data.metrics[].name` | string | yes | Human-readable metric name. Example: `CPI All Urban Consumers`. |
| `data.metrics[].frequency` | string | no | Data release frequency. Example: `Monthly`. |
| `data.metrics[].data` | array of EconomyMetricObservation | yes | Time-series observations, ordered by referencePeriod descending. |
| `data.metrics[].data[].referencePeriod` | string (date) | yes | Observation date (YYYY-MM-DD) Example: `2026-02-01`. |
| `data.metrics[].data[].value` | number \| null | no | Observed value. Example: `326.785`. |
| `data.metrics[].seriesCode` | string | no | Data source series identifier (e.g. CUUR0000SA0) Example: `CUUR0000SA0`. |
| `data.metrics[].unit` | string | no | Measurement unit (e.g. PCT, INDEX_1982, USD_REAL_BN) Example: `INDEX_1982`. |
| `meta` | ResponseMeta | no | Response envelope metadata. Always present on a 200: `time` is set by `core/response.py` on every successful response. Errors carry the same block, built by the same code, so a client parses one meta shape whether the call succeeded or failed. |
| `meta.time` | integer | no | Server-side processing time in milliseconds. Example: `17`. |
| `meta.parameters` | object | no | Echo of the request parameters the endpoint resolved. |

## Example request

```bash
curl 'https://api.bavest.co/v2/economy/interest-rates/US' \
  -H "x-api-key: $BAVEST_API_KEY"
```

## Example response

```json
{
  "data": {
    "category": "interest_rates",
    "country": "US",
    "metrics": [
      {
        "code": "FED_FUNDS",
        "name": "Federal Funds Rate (Percent per annum)",
        "frequency": "Per decision",
        "unit": "PCT_PA",
        "seriesCode": "FEDFUNDS",
        "data": [
          {
            "referencePeriod": "2026-09-01",
            "value": 3.75
          },
          {
            "referencePeriod": "2026-08-01",
            "value": 3.63
          }
        ]
      },
      {
        "code": "DTB3",
        "name": "3-Month Treasury Bill: Secondary Market Rate (Percent per annum)",
        "frequency": "Daily",
        "unit": "PCT_PA",
        "seriesCode": "DTB3",
        "data": [
          {
            "referencePeriod": "2026-05-19",
            "value": 3.59
          },
          {
            "referencePeriod": "2026-05-18",
            "value": 3.6
          }
        ]
      }
    ]
  },
  "meta": {
    "parameters": {
      "country": "US",
      "category": "interest_rates"
    },
    "time": 3326
  }
}
```

## Errors

| Status | Meaning |
|---|---|
| 400 | Invalid request parameters. Returned when required query parameters are missing, have invalid types, or violate constraints (e.g., providing both symbol and isin when they are mutually exclusive). |
| 401 | Missing or invalid API key. |
| 404 | Resource not found. |
| 429 | Rate limit exceeded. Retry after the `Retry-After` header interval. |
| 500 | An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value. |
| 502 | Upstream data provider returned an error or is temporarily unavailable. Retry after a short delay. |
| 504 | The request timed out waiting for a response from the upstream data provider. This may occur for complex queries or during peak load. |
| default | An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value. |

- `403` from the gateway: the API key is invalid or switched off.
- `429` with message `Limit Exceeded`: the monthly quota of the key is used up. With `Too Many Requests`: the key is throttled, or this route is not in the key's plan. Wait for `Retry-After` when it is sent.

## Links

- HTML page: https://dashboard.bavest.co/docs/v2_economy_interest_rates_country
- OpenAPI: https://dashboard.bavest.co/openapi.json (YAML: https://dashboard.bavest.co/openapi.yaml)
- Authentication: https://dashboard.bavest.co/docs/authentication.md
- MCP server for AI agents: https://dashboard.bavest.co/docs/mcp.md
- All routes: https://dashboard.bavest.co/llms.txt
