> 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-raw-data.md).

# Get dataset raw data

Retrieve a pre-signed S3 URL pointing to the **raw** dataset file — the dataset as ingested from the integration, **before** the Typing Layer, Transformations and AIDC variable mapping have been applied.

Schema reflects the integration output verbatim: no column type coercion, no resolved dimension keys, no AIDC variables. The `metadata` block describes the raw column structure inferred from 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}/raw_data":{"get":{"summary":"Get dataset raw data","description":"Retrieve a pre-signed S3 URL pointing to the **raw** dataset file — the dataset as\ningested from the integration, **before** the Typing Layer, Transformations and\nAIDC variable mapping have been applied.\n\nSchema reflects the integration output verbatim: no column type coercion,\nno resolved dimension keys, no AIDC variables. The `metadata` block describes\nthe raw column structure inferred from 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":"getDatasetRawData","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 raw data.","content":{"application/json":{"schema":{"type":"object","required":["data","metadata"],"properties":{"data":{"type":"string","description":"Pre-signed S3 URL for downloading the raw dataset file."},"metadata":{"type":"object","required":["properties","ingested_at","row_count"],"properties":{"properties":{"type":"object","description":"Map from source column name to type info. Each entry takes one of four shapes depending on the column's role:\n  - Time column: `{ \"type\": \"string\", \"format\": \"date\" }`\n  - Custom dimension column: `{ \"type\": \"string\", \"label\": \"<dimension name>\" }`\n  - Numeric column: `{ \"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."}}}},"ingested_at":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp the underlying raw file was ingested."},"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 raw data yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"429":{"$ref":"#/components/responses/TooManyRequests10PerMinute"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```
