> For the complete documentation index, see [llms.txt](https://docs.ionos.com/cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ionos.com/cloud/api-reference/databases/postgresql-v2/clusters/retrieve-all-clusters.md).

# Retrieve all Clusters

This endpoint enables retrieving all Clusters using pagination and optional filters.

```json
{"openapi":"3.0.3","info":{"title":"IONOS CLOUD DBaaS PostgreSQL","version":"2.0.0"},"tags":[{"name":"Clusters","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\nCredentials are managed through the cluster resource and are used to provision and manage\nthe cluster's database users. Customers can connect directly to the cluster using standard\nPostgreSQL tools to create additional users, databases, and access grants.\nWhen credentials are supplied, the behavior is additive:\na new <code>username</code> creates a new user with cluster-wide access granted to the\nspecified <code>database</code> — the previous user is preserved;\na new <code>database</code> creates a new database and grants the specified user access\nto both the new and any previously accessible databases;\nan existing <code>username</code> updates the user's password.\nUnlike other cluster fields, omitting the <code>credentials</code> field leaves all\nexisting users and databases unchanged rather than clearing them.\nThis tag groups all operations for clusters.\n"}],"servers":[{"url":"https://postgresql.de-txl.ionos.com/v2","description":"Germany, Berlin"},{"url":"https://postgresql.de-fra.ionos.com/v2","description":"Germany, Frankfurt (de-fra)"},{"url":"https://postgresql.fr-par.ionos.com/v2","description":"France, Paris"},{"url":"https://postgresql.es-vit.ionos.com/v2","description":"Spain, Logroño"},{"url":"https://postgresql.gb-lhr.ionos.com/v2","description":"United Kingdom, London"},{"url":"https://postgresql.gb-bhx.ionos.com/v2","description":"United Kingdom, Worcester"},{"url":"https://postgresql.us-las.ionos.com/v2","description":"United States, Las Vegas"},{"url":"https://postgresql.us-mci.ionos.com/v2","description":"United States, Lenexa"},{"url":"https://postgresql.us-ewr.ionos.com/v2","description":"United States, Newark"}],"security":[{"tokenAuth":[]}],"components":{"securitySchemes":{"tokenAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"The token can be generated using the \n[Authentication API](https://api.ionos.com/docs/authentication/v1/#tag/tokens/operation/tokensGenerate).\n"}},"parameters":{"paginationOffset":{"name":"offset","in":"query","description":"The first element (of the total list of elements) to include in the response. Use this parameter together with the limit for pagination.","required":false,"schema":{"type":"integer","format":"int32","default":0,"minimum":0}},"paginationLimit":{"name":"limit","in":"query","description":"The maximum number of elements to return. Use this parameter together with the offset for pagination.","required":false,"schema":{"type":"integer","format":"int32","default":100,"minimum":1,"maximum":1000}},"name":{"name":"filter.name","in":"query","description":"Filters resources by name. It matches cluster names that contain the provided string. If omitted, returns all clusters.","required":false,"schema":{"$ref":"#/components/schemas/PostgresClusterName"}},"state":{"name":"filter.state","in":"query","description":"Filters resources by state. Example: `AVAILABLE`, `PROVISIONING`. If omitted, returns clusters in any state.","required":false,"schema":{"$ref":"#/components/schemas/PostgresClusterStates"}}},"schemas":{"PostgresClusterName":{"type":"string","description":"The name of your PostgreSQL cluster. Must be 63 characters or less and must begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.","pattern":"^[A-Za-z0-9][-A-Za-z0-9_.]*[A-Za-z0-9]$","minLength":2,"maxLength":63},"PostgresClusterStates":{"description":"The current lifecycle state of the cluster.","type":"string","enum":["PROVISIONING","AVAILABLE","UPDATING","DESTROYING","FAILED"],"readOnly":true},"ClusterReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of Cluster resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of Cluster resources.","type":"string"},"items":{"description":"The list of Cluster resources.","type":"array","items":{"$ref":"#/components/schemas/ClusterRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"ClusterRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Cluster.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["cluster"]},"href":{"description":"The URL of the Cluster.","type":"string"},"metadata":{"$ref":"#/components/schemas/ClusterMetadata"},"properties":{"$ref":"#/components/schemas/Cluster"}}},"ClusterMetadata":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","properties":{"state":{"$ref":"#/components/schemas/PostgresClusterStates"},"statusMessage":{"type":"string","description":"A human-readable message describing the current state. Populated when `state` is `FAILED`.","readOnly":true}}},{"type":"object","properties":{"dnsName":{"type":"string","description":"The DNS name used to access the cluster.","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"Cluster":{"type":"object","description":"A PostgreSQL (PG) cluster is a unified group of one or more interconnected database instances.\nIt consists of a single primary instance that handles all write operations,\nalong with optional standby replicas that provide high availability.\nThis entity represents the entire logical unit, allowing for the unified management of all its nodes and configurations.\n","required":["name","instances","connection","maintenanceWindow","replicationMode","version","backup"],"properties":{"name":{"$ref":"#/components/schemas/PostgresClusterName"},"description":{"$ref":"#/components/schemas/PostgresClusterDescription"},"version":{"$ref":"#/components/schemas/PostgresClusterVersion"},"instances":{"$ref":"#/components/schemas/InstanceConfiguration"},"connection":{"$ref":"#/components/schemas/PostgresClusterConnection"},"maintenanceWindow":{"$ref":"#/components/schemas/MaintenanceWindow"},"replicationMode":{"$ref":"#/components/schemas/PostgresClusterReplicationMode"},"credentials":{"$ref":"#/components/schemas/PostgresUser"},"connectionPooler":{"type":"string","description":"Defines how database connections are managed and reused. Default value is `DISABLED`.","default":"DISABLED","enum":["DISABLED","TRANSACTION","SESSION"]},"restoreFromBackup":{"description":"Optionally restores data from a backup. The two variants are mutually exclusive:\n- `PostgresRestoreClusterFromBackup` is accepted only on cluster creation.\n- `PostgresInPlaceRestoreClusterFromBackup` is accepted only on cluster modification. The restore uses the cluster's existing backups automatically. No other source backup can be specified. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime.\n","oneOf":[{"$ref":"#/components/schemas/PostgresRestoreClusterFromBackup"},{"$ref":"#/components/schemas/PostgresInPlaceRestoreClusterFromBackup"}]},"logsEnabled":{"$ref":"#/components/schemas/LogsEnabled"},"metricsEnabled":{"$ref":"#/components/schemas/MetricsEnabled"},"backup":{"$ref":"#/components/schemas/ClusterBackup"}}},"PostgresClusterDescription":{"type":"string","description":"Human-readable description for the cluster."},"PostgresClusterVersion":{"type":"string","description":"The PostgreSQL version for the cluster."},"InstanceConfiguration":{"type":"object","description":"Configure the compute and storage resources allocated to each instance in the cluster.","required":["count","ram","cores","storageSize"],"properties":{"count":{"description":"The total number of instances in the cluster (one primary and n-1\nsecondary).\n","type":"integer","minimum":1,"maximum":5},"ram":{"$ref":"#/components/schemas/InstancesMemory"},"cores":{"$ref":"#/components/schemas/InstancesCores"},"storageSize":{"$ref":"#/components/schemas/InstancesStorageSize"}}},"InstancesMemory":{"type":"integer","description":"The amount of memory per instance in gigabytes (GB).","minimum":4,"maximum":240},"InstancesCores":{"type":"integer","description":"The number of CPU cores per instance.","minimum":1,"maximum":62},"InstancesStorageSize":{"type":"integer","description":"The amount of storage per instance in gigabytes (GB).","minimum":10,"maximum":4096},"PostgresClusterConnection":{"description":"Connect your PostgreSQL cluster to your virtual network by specifying the data center, LAN, and primary instance IP address.\n","type":"object","required":["datacenterId","lanId","primaryInstanceAddress"],"properties":{"datacenterId":{"description":"The datacenter to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string","format":"uuid"},"lanId":{"description":"The numeric LAN ID to connect your instance to. Immutable. Cannot be changed after cluster creation.","type":"string"},"primaryInstanceAddress":{"$ref":"#/components/schemas/PostgresClusterInstanceIp"}}},"PostgresClusterInstanceIp":{"type":"string","description":"The IP address and subnet mask for the cluster's primary instance. The range 10.208.0.0/12 is unavailable."},"MaintenanceWindow":{"description":"A weekly 4 hour-long window, during which maintenance might occur.\n","properties":{"time":{"type":"string","description":"Start of the maintenance window in UTC time."},"dayOfTheWeek":{"$ref":"#/components/schemas/DayOfTheWeek"}},"required":["time","dayOfTheWeek"],"type":"object"},"DayOfTheWeek":{"description":"The name of the week day.","type":"string","enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"PostgresClusterReplicationMode":{"type":"string","description":"Defines the replication mode across instances.","enum":["ASYNCHRONOUS","STRICTLY_SYNCHRONOUS"]},"PostgresUser":{"type":"object","description":"Database user credentials. Supplying the <code>credentials</code> field creates or\nupdates a user and, if a new <code>database</code> is given, creates that database\nand grants access; omitting <code>credentials</code> leaves all existing users and\ndatabases unchanged. See the Clusters description for the full additive semantics.\nOnly `username` and `database` are returned in responses; `password` is write-only and never returned.","required":["username","database"],"properties":{"username":{"$ref":"#/components/schemas/PostgresUsername"},"password":{"$ref":"#/components/schemas/PostgresUserPassword"},"database":{"$ref":"#/components/schemas/PostgresDatabaseName"}}},"PostgresUsername":{"type":"string","description":"The username of the database user to create or update.\nMust be 16 characters or less and must include only alphanumeric characters (`[A-Za-z0-9_]`)\nand underscores (`_`).\n","pattern":"^[A-Za-z0-9_]+$","minLength":2,"maxLength":16},"PostgresUserPassword":{"type":"string","description":"The password for the database user.\nPassword is required whenever credentials are supplied, on create and on update; never returned in responses.\nMust be between 8 and 256 characters long.\nFor a strong password we recommend that it also meets the following\ncriteria, though these are not enforced:\n- Contains at least one lowercase letter.\n- Contains at least one uppercase letter.\n- Contains at least one digit (0-9).\n- Contains at least one special character from the set: @$!%*?&\n","writeOnly":true,"minLength":8,"maxLength":256},"PostgresDatabaseName":{"type":"string","description":"The name of the database to create and grant the user access to.\nMust be 63 characters or less and must include only alphanumeric characters (`[a-z0-9A-Z]`)\nand underscores (`_`).\n","pattern":"^[a-z0-9A-Z_]+$","minLength":2,"maxLength":63},"PostgresRestoreClusterFromBackup":{"type":"object","writeOnly":true,"description":"Restore a new cluster from an existing backup. Specify the source backup ID and an optional point-in-time recovery target. Not valid for in-place restore.\n","required":["sourceBackupId"],"properties":{"sourceBackupId":{"type":"string","format":"uuid","description":"The ID (UUID) of the backup to restore data from."},"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"An ISO 8601 timestamp. The system replays backups up to the specified time.\nIf omitted on cluster creation, the system applies the backup in its entirety.\n"}}},"PostgresInPlaceRestoreClusterFromBackup":{"type":"object","additionalProperties":false,"writeOnly":true,"description":"Configures in-place restore during cluster modifications only. This field is not valid for cluster creation.\nThe restore source is inferred automatically from the cluster's existing backups. The current data is overwritten with the restored data, and the cluster may experience a brief period of downtime during this process.\n","required":["recoveryTargetDatetime"],"properties":{"recoveryTargetDatetime":{"type":"string","format":"date-time","description":"Required ISO 8601 timestamp. The system restores the cluster to the state at the specified time.\n"}}},"LogsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of logs for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nLog collection does not start until the observability service is active.\n"},"MetricsEnabled":{"type":"boolean","default":false,"description":"Activates or deactivates the collection and reporting of metrics for this cluster's observability.\nIf the observability service is not activated on the contract, this setting is accepted but has no effect.\nMetric collection does not start until the observability service is active.\n"},"ClusterBackup":{"description":"Configures backup location and retention. The backup location cannot be changed after cluster creation.","type":"object","properties":{"location":{"$ref":"#/components/schemas/BackupLocationName"},"retentionDays":{"$ref":"#/components/schemas/BackupRetentionDays"}},"required":["location","retentionDays"]},"BackupLocationName":{"description":"The Object Storage location where the backup is created. The BackupLocations operations provide a list of supported locations.\n","type":"string"},"BackupRetentionDays":{"description":"The number of days cluster backups are retained. Accepted values are 1 to 365. Pre-existing clusters default to 7 days. If you reduce this value, backups older than the new window are purged.","type":"integer","minimum":1,"maximum":365},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}},"Error":{"description":"The Error object is used to represent an error response from the API.\n","type":"object","properties":{"httpStatus":{"type":"integer","description":"The HTTP status code of the operation."},"messages":{"type":"array","description":"A list of error messages.\n","items":{"type":"object","properties":{"errorCode":{"type":"string","description":"Application internal error code\n"},"message":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem.\n"}}}}}}},"responses":{"BadRequest":{"description":"### Bad Request\nThe request send to the API was malformed.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"### Unauthorized\nThe request is missing authorization information or the authorization information provided are expired.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotAllowed":{"description":"### Not Allowed\nThe user issuing the request does not have the needed permissions.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"### Too Many Requests\nThe user has sent too many requests in a given amount of time.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"### Internal Server Error\nAn internal error occurred. We apologize for the inconvenience!\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServiceUnavailable":{"description":"### Service Unavailable\nThe server is currently unable to handle the request due to a temporary overloading or maintenance of the server.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"UnexpectedError":{"description":"### Unexpected Internal Server Error\nAn unexpected internal error occurred. We apologize for the inconvenience!\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/clusters":{"get":{"operationId":"clustersGet","summary":"Retrieve all Clusters","description":"This endpoint enables retrieving all Clusters using\npagination and optional filters.\n","parameters":[{"$ref":"#/components/parameters/paginationOffset"},{"$ref":"#/components/parameters/paginationLimit"},{"$ref":"#/components/parameters/name"},{"$ref":"#/components/parameters/state"}],"tags":["Clusters"],"responses":{"200":{"description":"Returned all requested Clusters successfully.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterReadList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotAllowed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"default":{"$ref":"#/components/responses/UnexpectedError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ionos.com/cloud/api-reference/databases/postgresql-v2/clusters/retrieve-all-clusters.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
