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

# Enviar aplicação

> Crie e faça deploy de uma nova aplicação a partir de um .zip de até 100 MB com POST /v2/apps. A runtime é detectada sozinha; use o commit nas próximas mudanças.

<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) `apps:write`.

O upload cria uma aplicação totalmente nova a partir de um arquivo zip: detecta a runtime e a versão, provisiona um container no cluster com o menor uso de RAM no momento e o inicia. Use isso para um primeiro deploy; para enviar uma alteração a uma aplicação que já existe, use [Enviar commit da aplicação](/pt-br/api-reference/endpoint/apps/commit), que é mais rápido porque não reprovisiona o container.

Quem chamar o endpoint precisa ter pelo menos **256 MB de memória disponível** no plano antes de o upload ser aceito, e o zip tem um limite de **100 MB**. Os campos da resposta dependem do seu `squarecloud.config`: `description` e `domain` só aparecem quando definidos lá, e `language` informa a runtime e a versão detectadas. As requisições possuem limite de taxa de 1 upload a cada 3 segundos por usuário.

O corpo da requisição é limitado a **101 MB** (um arquivo de até 100 MB mais a sobrecarga do formulário): uma requisição maior é rejeitada com `413 FILE_TOO_LARGE` ainda durante o envio. Apenas a primeira parte de arquivo é lida; campos adicionais do formulário são ignorados.

Depois que a aplicação estiver em execução, gerencie-a com [Iniciar](/pt-br/api-reference/endpoint/apps/start), [Parar](/pt-br/api-reference/endpoint/apps/stop) e [Reiniciar](/pt-br/api-reference/endpoint/apps/restart), e verifique-a com [Obter status da aplicação](/pt-br/api-reference/endpoint/apps/status).

## Parâmetros

<ParamField body="file" type="file" placeholder="application.zip" required>
  A aplicação a ser enviada deve estar compactada em um arquivo zip (.zip) e o Content Type deve ser multipart/form-data.
</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 da aplicação enviada.
    </ResponseField>

    <ResponseField name="name" type="string">
      O nome da aplicação enviada.
    </ResponseField>

    <ResponseField name="description" type="string">
      A descrição da aplicação enviada.
    </ResponseField>

    <ResponseField name="domain" type="string">
      O host completo da aplicação, por exemplo `my-app.squareweb.app`. Presente apenas quando o `squarecloud.config` define `SUBDOMAIN`. É o mesmo campo que [Consultar informações da aplicação](/pt-br/api-reference/endpoint/apps/info) retorna.
    </ResponseField>

    <ResponseField name="ram" type="number">
      A memória alocada para a aplicação, em MB.
    </ResponseField>

    <ResponseField name="cpu" type="number">
      A CPU alocada para a aplicação.
    </ResponseField>

    <ResponseField name="language" type="object">
      <Expandable title="Alternar objeto">
        <ResponseField name="name" type="string">
          A runtime detectada, em minúsculas (por exemplo `javascript`), como em Consultar informações da aplicação.
        </ResponseField>

        <ResponseField name="version" type="string">
          A versão recomendada da linguagem de programação.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="cluster" type="string">
      O cluster onde a aplicação está hospedada na nuvem.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl --request POST \
    --url https://api.squarecloud.app/v2/apps \
    --header 'Authorization: SUA_API_KEY' \
    --form 'file=@./application.zip'
  ```

  ```javascript JavaScript theme={"system"}
  import fs from 'node:fs';

  const form = new FormData();
  form.append('file', new Blob([fs.readFileSync('./application.zip')]), 'application.zip');

  const response = await fetch('https://api.squarecloud.app/v2/apps', {
    method: 'POST',
    headers: { Authorization: 'SUA_API_KEY' },
    body: form,
  });
  ```

  ```python Python theme={"system"}
  import requests

  with open('application.zip', 'rb') as f:
      response = requests.post(
          'https://api.squarecloud.app/v2/apps',
          headers={'Authorization': 'SUA_API_KEY'},
          files={'file': ('application.zip', f, 'application/zip')},
      )
  ```
</RequestExample>

<ResponseExample>
  ```json theme={"system"}
  {
      "status": "success",
      "response": {
          "id": "945f574e6cc14ea6818f91d7d56de101",
          "name": "My Website",
          "description": "My first website on Square Cloud",
          "domain": "my-website.squareweb.app",
          "ram": 1024,
          "cpu": 6,
          "language": {
              "name": "javascript",
              "version": "recommended"
          }
      }
  }
  ```
</ResponseExample>

## Erros comuns

| Código | HTTP | Significado |
| - | - | - |
| `INVALID_CONTENT_TYPE` | 415 | O corpo da requisição não é `multipart/form-data`. |
| `INVALID_FILE` | 400 | Nenhum campo de arquivo foi encontrado nos dados do formulário. |
| `INVALID_FILENAME` | 400 | O nome do arquivo contém separadores de caminho, `..` ou caracteres de controle. |
| `INSUFFICIENT_MEMORY` | 400 | A conta tem menos de 256 MB de memória disponível no plano. |
| `UPLOAD_ABORTED` | 400 | O cliente desconectou antes do upload terminar. |
| `STORAGE_UPLOAD_FAILED` | 400 | O arquivo falhou ao ser enviado para o armazenamento; tente novamente mais tarde. |
| `CLUSTER_SELECTION_FAILED` | 400 | Nenhum cluster estava disponível para hospedar a aplicação. |
| `EMPTY_RESPONSE` | 400 | O cluster não retornou uma resposta utilizável. |
| `UPLOAD_FAILED` | 400 | Ocorreu um erro inesperado ao processar o upload. |
| `FILE_TOO_LARGE` | 413 | O arquivo excedeu 100 MB ou o corpo da requisição excedeu 101 MB. |
| `CLUSTER_MAINTENANCE_TRY_LATER` | 503 | O provisionamento de aplicações está temporariamente indisponível devido a manutenção. |
| `UPLOAD_BUSY` | 503 | Muitos envios estão sendo processados agora; tente novamente em instantes. |

## Relacionados

* CLI: [`squarecloud upload`](/pt-br/cli-reference/deploy#squarecloud-upload)
* SDKs: [`api.apps.create()`](/pt-br/sdks/js/commit_and_upload) (JavaScript), [`client.apps.create()`](/pt-br/sdks/py/commit_and_upload) (Python), [`c.Apps.Create()`](/pt-br/sdks/go/commit_and_upload) (Go)


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