> 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/list-datasets.md).

# List datasets

Retrieve a list of datasets for the authenticated user’s organization.

```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."}},"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"}}}},"TooManyRequests20PerMinute":{"description":"Rate limit exceeded: 20 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"}}},"schemas":{"DetailMessage":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string"}}}}},"paths":{"/public-api/data-sets":{"get":{"summary":"List datasets","description":"Retrieve a list of datasets for the authenticated user’s organization.","operationId":"listDatasets","tags":["Datasets"],"responses":{"200":{"description":"A list of datasets.","content":{"application/json":{"schema":{"type":"object","required":["data","metadata"],"properties":{"data":{"type":"array","items":{"type":"object","required":["id","name","code","connection_id","connection_type","last_synced_at","last_processed_at","row_count_raw","row_count_processed","restricted","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the dataset."},"name":{"type":"string","description":"Display name of the dataset."},"code":{"type":"string","description":"Stable code used to reference the dataset programmatically."},"connection_id":{"type":"string","format":"uuid","nullable":true,"description":"ID of the integration that produces this dataset. `null` if the dataset is not linked to an integration (e.g. data loaded manually)."},"connection_type":{"type":"string","nullable":true,"description":"Vendor / type of the integration that produces this dataset (e.g. `netsuite`, `gsheets`, `sftp`). `null` if the dataset is not linked to an integration."},"last_synced_at":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the most recent successful sync from the integration. `null` if the dataset has never synced successfully or is not linked to an integration."},"last_processed_at":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp the dataset was last processed — typed, transformed and classified into its final form. `null` if the dataset has not been processed yet."},"row_count_raw":{"type":"integer","description":"Number of rows in the raw dataset — the data as originally ingested, before any typing, transformations or classification are applied."},"row_count_processed":{"type":"integer","description":"Number of rows in the processed dataset — the data after typing, transformations and classification have been applied. This is the version consumed by models. In the vast majority of cases this matches `row_count_raw`; small deviations can occur when transformations drop or merge rows."},"restricted":{"type":"boolean","description":"Whether the dataset is restricted. Restricted datasets follow the same access rules as restricted models."},"created_at":{"type":"string","format":"date-time","description":"When the dataset was created."},"updated_at":{"type":"string","format":"date-time","description":"When the dataset was last updated."}}}},"metadata":{"type":"object","description":"Always an empty object."}}}}}},"403":{"$ref":"#/components/responses/ForbiddenAdminOnly"},"429":{"$ref":"#/components/responses/TooManyRequests20PerMinute"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```
