> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar banco de dados

> Crie um banco MongoDB, MySQL, PostgreSQL ou Redis gerenciado com POST /v2/databases. A senha e o certificado são retornados uma única vez, então guarde-os.

<ParamField header="Authorization" type="string" placeholder="Chave da API" required>
  A chave da API para sua conta. Você pode encontrá-la nas [configurações da conta](https://squarecloud.app/pt-br/account/security).
</ParamField>

Requer uma chave de API com o [escopo](/pt-br/api-reference/authentication#escopos) `databases:write`.

Provisiona um banco de dados gerenciado na Square Cloud (MongoDB, MySQL, PostgreSQL ou Redis), escolhe o cluster com mais RAM disponível e aloca um registro DNS público (`square-cloud-db-<id>.squareweb.app`) apontando para ele. A `password` e o `certificate` retornados aparecem apenas uma vez: salve-os imediatamente, pois nenhum dos dois pode ser recuperado depois, apenas redefinido via [Redefinir Credenciais](/pt-br/api-reference/endpoint/databases/credentials/reset).

A hospedagem de banco de dados requer um plano Standard, Pro ou Enterprise. O `memory` solicitado deve ser no mínimo o exigido pelo motor (512 MB para Redis, 1024 MB para MongoDB, MySQL e PostgreSQL) e não pode exceder a memória disponível da sua conta. Limite de taxa de 1 criação a cada 3 segundos por usuário. Uma criação que falha não deixa nada para trás, então é seguro tentar de novo.

Depois de criado, use [Editar Banco de Dados](/pt-br/api-reference/endpoint/databases/edit) para renomeá-lo ou redimensionar sua memória, e [Criar Snapshot](/pt-br/api-reference/endpoint/databases/snapshots/create) para fazer backup dele.

## Parâmetros

<ParamField body="name" type="string" placeholder="nome do banco de dados" required>
  O nome do banco de dados. De 1 a 32 caracteres, letras, números, underscores (`_`), hífens (`-`) e espaços, e deve incluir ao menos uma letra, número ou underscore.
</ParamField>

<ParamField body="memory" type="int" placeholder="RAM(em MB)" required>
  A RAM alocada para ele, em MB, como número inteiro. Mínimo para Redis é 512 e para Mongo é 1024.
</ParamField>

<ParamField body="type" type="string" placeholder="banco(mongo,redis)" required>
  O tipo de banco de dados: postgres, mysql, mongo, redis.
</ParamField>

<ParamField body="version" type="string" placeholder="Número da versão" required>
  A versão do banco de dados.\
  Postgres 17, MySQL 9, Mongo 8, Redis 8.
</ParamField>

## Resposta

<ResponseField name="status" type="string">
  Indica se a chamada foi bem-sucedida: `success` se foi, `error` se não.
</ResponseField>

<ResponseField name="response" type="object">
  O conteúdo da resposta.

  <Expandable title="Alternar objeto">
    <ResponseField name="id" type="string">
      O ID do banco de dados.
    </ResponseField>

    <ResponseField name="name" type="string">
      O nome que você escolheu para o banco de dados
    </ResponseField>

    <ResponseField name="memory" type="int">
      A memória alocada para o banco de dados
    </ResponseField>

    <ResponseField name="cpu" type="int">
      O número de vCPUs alocados para o banco de dados
    </ResponseField>

    <ResponseField name="type" type="string">
      O tipo do banco de dados.
    </ResponseField>

    <ResponseField name="password" type="string">
      A senha do banco de dados.
    </ResponseField>

    <ResponseField name="certificate" type="string">
      O certificado necessário para conectar-se a ele. Você pode salvá-lo em um arquivo `.pem`. Pode ser `null`.
    </ResponseField>

    <ResponseField name="connection_url" type="string">
      A URL para conectar-se ao banco de dados. O usuário é `default` para MongoDB e Redis, e `squarecloud` para PostgreSQL e MySQL.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json theme={"system"}
  {
    "status":"success",
    "response": {
      "id": "a14b8d5e1cb7405a851eb4c075506121",
      "name": "test",
      "memory": 1024,
      "cpu": 2,
      "type": "mongo",
      "password": "PASSWORD",
      "certificate": "CERTIFICATE_IN_BASE_64_FORMAT",
      "connection_url": "mongodb://default:PASSWORD@square-cloud-db-ID.squareweb.app:PORT"
      }
  }
  ```
</ResponseExample>

## Erros comuns

| Código | HTTP | Significado |
| - | - | - |
| `INVALID_NAME` | 400 | O nome falha na validação de 1 a 32 caracteres. |
| `INVALID_DATABASE_TYPE` | 400 | `type` não é um dos valores `mongo`, `mysql`, `redis`, `postgres`. |
| `INVALID_DATABASE_VERSION` | 400 | `version` não é uma versão suportada para o `type` escolhido. |
| `INSUFFICIENT_MEMORY` | 400 | O `memory` solicitado não é um número inteiro de MB, está abaixo do mínimo do motor ou excede a memória disponível da conta. |
| `CLUSTER_SELECTION_FAILED` | 400 | Nenhum cluster com capacidade suficiente pôde ser selecionado. |
| `DATABASE_CREATION_FAILED` | 400 / 500 | O provisionamento falhou, ou a resposta do cluster ficou incompleta. Nada fica para trás, então você pode tentar de novo. |
| `UPGRADE_REQUIRED` | 403 | A conta não tem plano ativo, ou o plano dela não inclui hospedagem de banco de dados. |
| `CLUSTER_MAINTENANCE_TRY_LATER` | 503 | O provisionamento de banco de dados está temporariamente indisponível devido a manutenção. |

## Relacionados

* CLI: [`squarecloud db create`](/pt-br/cli-reference/databases#squarecloud-db-create)
* SDKs: [`api.databases.create()`](/pt-br/sdks/js/databases) (JavaScript), [`client.databases.create()`](/pt-br/sdks/py/databases) (Python), [`c.Databases.Create()`](/pt-br/sdks/go/databases) (Go)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.