---
title: SDMX API
description: Fetch SDMX data from a configured endpoint and return the CSV response as tabular data.
category: RESTful Activities
tags: [api, sdmx, csv, statistics, dataflow]
---

# SDMX API

## **Description**

The **SDMX API** activity builds and executes an SDMX data request, asks the service for CSV output with labels, and parses the CSV response into workflow data rows. It supports SDMX agency, dataflow, version, data key, period filters, detail level, and dimension-at-observation configuration.

### **Supported Features**

- **GET and POST request methods**: Supports `GET` and `POST`.
- **SDMX data path construction**: Builds `data/{AgentId},{DataflowIdentifier},{Version}/{DataKey}`.
- **Full data fallback**: Uses `all` when `DataKey` is empty.
- **Optional query filters**: Supports `startPeriod`, `endPeriod`, `detail`, and `dimensionAtObservation`.
- **CSV parsing**: Parses the SDMX CSV response into data rows.
- **Numeric conversion**: Converts integer and decimal-looking values into numeric values where possible.

---

## **Input**

| Type | Required | Description |
| --- | --- | --- |
| None | No | This activity does not consume data or file input from previous activities. |

### **Input Scenarios**

#### **1. Full Dataflow**

No input data is required. Leave `DataKey` empty to request all series.

#### **2. Filtered Dataflow**

No input data is required. Configure `DataKey`, `StartPeriod`, and `EndPeriod` to limit the SDMX response.

---

## **Output**

The activity returns rows parsed from the CSV response body.

| Field | Type | Description |
| --- | --- | --- |
| Data | Array | One row per CSV record returned by the SDMX API. Column names come from the CSV header row. |
| Errors | Array | Returned only when the request fails with an exception. |

### **Example Output**

```json
{
  "Data": [
    {
      "STRUCTURE": "DATAFLOW",
      "STRUCTURE_ID": "ABS,CPI,1.0",
      "TIME_PERIOD": "2025-Q4",
      "OBS_VALUE": 125.6
    },
    {
      "STRUCTURE": "DATAFLOW",
      "STRUCTURE_ID": "ABS,CPI,1.0",
      "TIME_PERIOD": "2026-Q1",
      "OBS_VALUE": 126.1
    }
  ]
}
```

---

## **Configuration Fields**

| Field Name | Type | Required | Description |
| --- | --- | --- | --- |
| RequestType | Dropdown | Yes | HTTP method. Options: `GET`, `POST`. Any other value fails with `Unsupported request type`. Default is `GET`. |
| Base URL | Text | Yes | Base SDMX REST endpoint, for example `https://data.api.abs.gov.au/rest`. |
| AgentId | Text | Yes | SDMX agency identifier, for example `ABS`. |
| DataflowIdentifier | Selector | Yes | Dataflow identifier used in the SDMX path. |
| Version | Text | Yes | Dataflow or structure version used in the SDMX path. |
| DataKey | Text | No | SDMX series key. If empty, the activity uses `all`. |
| StartPeriod | Text | No | Optional `startPeriod` query parameter, for example `2020` or `2020-Q1`. |
| EndPeriod | Text | No | Optional `endPeriod` query parameter, for example `2023` or `2023-Q4`. |
| Detail | Text | No | Optional SDMX `detail` query parameter. |
| DimensionAtObservation | Text | No | Optional `dimensionAtObservation` query parameter. |

### **Conditional Field Rendering Rules**

No conditional configuration fields are defined for this activity.

---

## **Sample Configuration**

| Field | Value |
| --- | --- |
| RequestType | `GET` |
| Base URL | `https://data.api.abs.gov.au/rest` |
| AgentId | `ABS` |
| DataflowIdentifier | `CPI` |
| Version | `1.0` |
| DataKey | `all` |
| StartPeriod | `2020-Q1` |
| EndPeriod | `2026-Q1` |
| Detail | `dataonly` |
| DimensionAtObservation | `AllDimensions` |

### **Request Built By Activity**

```text
https://data.api.abs.gov.au/rest/data/ABS,CPI,1.0/all?startPeriod=2020-Q1&endPeriod=2026-Q1&detail=dataonly&dimensionAtObservation=AllDimensions
```

---

## **Sample Output**

```json
{
  "Data": [
    {
      "TIME_PERIOD": "2026-Q1",
      "OBS_VALUE": 126.1,
      "UNIT_MEASURE": "Index"
    }
  ]
}
```
