> For the complete documentation index, see [llms.txt](https://developer.abacum.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.abacum.ai/api-reference/datasets/get-dataset-processed-data.md).

# Get dataset processed data

Retrieve a pre-signed S3 URL pointing to the **processed** dataset file — the dataset **after** the Typing Layer, Transformations and AIDC variable mapping have been applied. This is the same data that feeds Models.

Schema includes typed columns, resolved dimension codes, and AIDC-classified variables. The `metadata` block describes the columns of the file.

`start_date` and `end_date` cover whole months, from the first day of the start month to the last day of the end month. If the dataset has no time column, the filter does nothing and every row is returned.

```json
{"openapi":"3.0.0","info":{"title":"Abacum public API","version":"1.0.0"},"tags":[{"name":"Datasets","description":"List datasets, read their raw or processed data, and load actuals into them with the Import API."}],"servers":[{"url":"https://api.abacum.io","description":"Prod environment"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An access token from the token endpoint, sent as `Authorization: Bearer <access_token>`. Use it to try an endpoint from this page. The token carries the permissions of its user, so use a user with the lowest role that fits the call."}},"parameters":{"DatasetId":{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The ID of the dataset. It must be a UUID. Any other value returns a `404` with an HTML page."},"StartMonth":{"name":"start_date","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"description":"Start month in `YYYY-MM` format. Both `start_date` and `end_date` are required when present."},"EndMonth":{"name":"end_date","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"description":"End month in `YYYY-MM` format. Both `start_date` and `end_date` are required when present."},"FileFormat":{"name":"file_format","in":"query","required":false,"schema":{"type":"string","enum":["csv","parquet"],"default":"csv"},"description":"Output file format. Defaults to `csv` (pre-signed URL, 30 min TTL). `parquet` returns a pre-signed URL with a 2 h TTL."}},"schemas":{"ErrorMessage":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"DetailMessage":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string"}}}},"responses":{"ForbiddenAdminOnly":{"description":"One of two causes:\n\n- The bearer token is missing, invalid or expired. The response has an empty body.\n- The token's user is not an Admin or Super Admin. The body is `{\"detail\": \"You do not have permission to perform this action.\"}`.\n\nThe API answers `403` for a bad token, not `401`.\n","headers":{"X-Request-ID":{"$ref":"#/components/headers/XRequestID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailMessage"}}}},"TooManyRequests10PerMinute":{"description":"Rate limit exceeded: 10 requests per minute for the same user and URL. Wait the number of seconds in the `Retry-After` header, then retry.","headers":{"Retry-After":{"description":"Seconds to wait before the next request.","schema":{"type":"integer"}},"X-Request-ID":{"$ref":"#/components/headers/XRequestID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailMessage"}}}},"InternalServerError":{"description":"An unexpected error on our side. The response has an empty body. Repeat the request, and contact support if it keeps failing.","headers":{"X-Request-ID":{"$ref":"#/components/headers/XRequestID"}}}},"headers":{"XRequestID":{"description":"Identifier of this request. Quote it when you contact support so they can find the exact request. A server-side client can set it by sending an `X-Request-ID` request header of 1 to 64 characters from `A-Za-z0-9_-`; any other value is replaced by a generated one. Browsers can read this header but cannot send their own. The value identifies a request for support, but it is not proof that only one request used it.","schema":{"type":"string"}}}},"paths":{"/public-api/data-sets/{dataset_id}/processed_data":{"get":{"summary":"Get dataset processed data","description":"Retrieve a pre-signed S3 URL pointing to the **processed** dataset file —\nthe dataset **after** the Typing Layer, Transformations and AIDC variable\nmapping have been applied. This is the same data that feeds Models.\n\nSchema includes typed columns, resolved dimension codes, and AIDC-classified\nvariables. The `metadata` block describes the columns of the file.\n\n`start_date` and `end_date` cover whole months, from the first day of the start month to the\nlast day of the end month. If the dataset has no time column, the filter does nothing and\nevery row is returned.\n","operationId":"getDatasetProcessedData","tags":["Datasets"],"parameters":[{"$ref":"#/components/parameters/DatasetId"},{"$ref":"#/components/parameters/StartMonth"},{"$ref":"#/components/parameters/EndMonth"},{"$ref":"#/components/parameters/FileFormat"}],"responses":{"200":{"description":"A pre-signed download link to a file (CSV by default, or Parquet) containing the dataset's processed data.","content":{"application/json":{"schema":{"type":"object","required":["data","metadata"],"properties":{"data":{"type":"string","description":"Pre-signed S3 URL for downloading the processed dataset file."},"metadata":{"type":"object","required":["properties","processed_at","row_count"],"properties":{"properties":{"type":"object","description":"Map from processed column name (dynamic — depends on dataset schema) to type info.\nEach entry takes one of four shapes depending on the column's role:\n  - Time dimension column: `{ \"type\": \"string\", \"format\": \"date\" }`\n  - Custom dimension column: `{ \"type\": \"string\", \"label\": \"<dimension name>\" }`\n  - Numeric column (int / float / decimal): `{ \"type\": \"number\", \"format\": \"float\" }`\n  - Other column: `{ \"type\": \"string\" }`\n","additionalProperties":{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Either `string` or `number`."},"format":{"type":"string","description":"Present for time (`date`) and numeric (`float`) columns."},"label":{"type":"string","description":"Present for custom dimension columns — the dimension's display name."}}}},"processed_at":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp the processed file was last generated."},"row_count":{"type":"integer","description":"Number of rows in the returned file after any `start_date` / `end_date` filtering."}}}}}}}},"400":{"description":"Invalid request - invalid `start_date`, `end_date`, or `file_format`. `start_date` and `end_date` must be supplied together.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"$ref":"#/components/responses/ForbiddenAdminOnly"},"404":{"description":"Not found - the dataset does not exist, belongs to another organization, or has no processed data yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"429":{"$ref":"#/components/responses/TooManyRequests10PerMinute"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```
