> ## 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.

# API da Square Cloud: URL base e primeira requisição

> Comece pela API REST da Square Cloud: a URL base da v2, o header Authorization, uma primeira requisição com curl, o formato das respostas, IDs e escopos.

A API da Square Cloud é uma API REST sobre HTTPS. Ela cobre o que você faz no dashboard: fazer deploy e controlar aplicações, ler os logs e as métricas delas, gerenciar arquivos, variáveis de ambiente, snapshots, bancos de dados e workspaces. Ela envia e recebe JSON, com duas exceções: o [upload](/pt-br/api-reference/endpoint/apps/upload) e o [commit](/pt-br/api-reference/endpoint/apps/commit) recebem um zip como `multipart/form-data`, e o [tempo real](/pt-br/api-reference/endpoint/apps/realtime) transmite Server-Sent Events.

## URL base

Todo endpoint desta referência é relativo a:

```bash theme={"system"}
https://api.squarecloud.app/v2
```

O [Blob Storage](/pt-br/blob-reference/quickstart) é uma API separada, com a própria URL base, `https://blob.squarecloud.app/v1`, e aceita a mesma chave de API.

## Autenticação

Crie uma chave de API nas [configurações de segurança da sua conta](https://squarecloud.app/pt-br/account/security) e envie-a no header `Authorization` de toda requisição. O prefixo `Bearer ` é opcional.

```bash theme={"system"}
Authorization: <api_key>
```

A chave aparece uma única vez, quando você a cria. Mantenha-a no seu servidor, em uma variável de ambiente, e nunca em código do lado do cliente nem em um repositório. Cada chave tem escopos que limitam o que ela pode fazer: veja em [Autenticação](/pt-br/api-reference/authentication) o escopo de cada endpoint.

## Sua primeira requisição

[Informações da conta](/pt-br/api-reference/endpoint/users/me) retorna o seu perfil, o seu plano e todas as aplicações e bancos de dados que você possui. Exige uma chave com o escopo `account:read`.

```bash theme={"system"}
export SQUARECLOUD_API_KEY="your-api-key"

curl https://api.squarecloud.app/v2/users/me \
  --header "Authorization: $SQUARECLOUD_API_KEY"
```

```json theme={"system"}
{
  "status": "success",
  "response": {
    "user": {
      "id": "1234567890",
      "name": "John Doe",
      "email": "john@example.com",
      "locale": "en-US",
      "plan": {
        "name": "standard-4",
        "memory": { "limit": 4096, "available": 3584, "used": 512 },
        "duration": 1780615237662
      },
      "created_at": "2024-05-01T12:00:00.000Z"
    },
    "applications": [
      {
        "id": "a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d",
        "name": "my-app",
        "ram": 512,
        "lang": "javascript",
        "domain": "my-app.squareweb.app",
        "custom": null,
        "cluster": "example-cluster",
        "created_at": "2024-05-01T12:00:00.000Z"
      }
    ],
    "databases": []
  }
}
```

Se você receber `401 ACCESS_DENIED`, a chave está ausente ou não foi reconhecida. Se receber `403 MISSING_SCOPE`, a chave funciona, mas não tem `account:read`.

## Formato das respostas

Uma chamada bem-sucedida responde `2xx` com `"status": "success"` e, quando há algo a retornar, os dados em `response`:

```json theme={"system"}
{ "status": "success", "response": { } }
```

Ações como iniciar ou parar respondem apenas `{ "status": "success" }`. Uma chamada com falha responde `4xx` ou `5xx` com `"status": "error"` e um `code` para você decidir o que fazer:

```json theme={"system"}
{ "status": "error", "code": "APP_NOT_FOUND" }
```

Os nomes dos campos nas respostas usam `snake_case`. Todos os códigos, com o que fazer em cada um, estão em [Erros](/pt-br/api-reference/errors).

## IDs

* **Aplicações e bancos de dados** têm um id hexadecimal de 32 caracteres, como `a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d`. Obtenha-os em [Informações da conta](/pt-br/api-reference/endpoint/users/me) ou no endereço do recurso no dashboard.
* **Uma aplicação compartilhada com você por um workspace** é endereçada como `<appId>-<workspaceId>` no caminho, por exemplo `/v2/apps/<appId>-<workspaceId>/status`.
* **Workspaces** têm um id hexadecimal de 32 caracteres. Workspaces mais antigos mantêm um de 40 caracteres.

## Limites

Cada conta tem um orçamento de requisições a cada 60 segundos, definido pelo plano, e alguns endpoints têm o próprio limite, informado na página deles. Veja [Limitações e restrições](/pt-br/api-reference/limitations-and-restrictions) para os valores e [Erros](/pt-br/api-reference/errors#limites-de-requisições) para entender como o `429` funciona.

## Especificação OpenAPI

A API inteira está descrita em um [documento OpenAPI](/pt-br/api-reference/openapi) em `https://api.squarecloud.app/v2/openapi.json`. Importe-o no Postman ou no Insomnia, ou gere um cliente a partir dele.

<Tip>
  Prefere um cliente tipado? Os [SDKs da Square Cloud](/pt-br/sdks/introduction) para [JavaScript](/pt-br/sdks/js/client), [Python](/pt-br/sdks/py/client) e [Go](/pt-br/sdks/go/client) cobrem todos os endpoints desta referência, e a [CLI](/pt-br/cli-reference/quickstart) faz as mesmas tarefas pelo terminal.
</Tip>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Autenticação e escopos" icon="lock" href="/pt-br/api-reference/authentication">
    Escolha os escopos de que cada integração precisa.
  </Card>

  <Card title="Códigos de erro" icon="triangle-exclamation" href="/pt-br/api-reference/errors">
    Todos os códigos que a API retorna e como tratar cada um.
  </Card>

  <Card title="Enviar uma aplicação" icon="upload" href="/pt-br/api-reference/endpoint/apps/upload">
    Faça o deploy de um zip com uma única requisição.
  </Card>

  <Card title="Limites de requisições" icon="gauge" href="/pt-br/api-reference/limitations-and-restrictions">
    Orçamento de requisições por plano.
  </Card>
</CardGroup>
