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

# Vincular imagem ao GitHub

> Vincula uma imagem a um repositório do GitHub, para que um push na branch dele reconstrua a imagem.

O repositório precisa estar em uma das suas instalações do GitHub App. Um repositório público fora delas pode ser construído uma vez com [Criar imagem](https://docs.vertracloud.app/pt-br/api-reference/endpoint/images/create.md), mas só pode ser vinculado depois que você instalar o GitHub App nele. Um push na branch vinculada reconstrói a imagem exatamente como uma reconstrução manual, com o repositório nessa branch como contexto de build. Pushes são ignorados enquanto um build da imagem já estiver em execução. Reconstruções vindas do GitHub nunca reiniciam apps.

Só o dono da imagem pode vinculá-la. Em um workspace, um membro recebe `403` mesmo com permissão para gerenciar os apps do workspace, porque o vínculo usa as instalações do GitHub App do dono.

Precisa do escopo `images:write` quando chamado com uma chave de API.

**image\_id** `string` *required*

O ID da imagem.

**workspace\_id** `string`

Se a imagem pertencer a um workspace, o ID do workspace.

**repository** `string` *required*

O repositório, no formato `owner/name`.

**branch** `string`

A branch que dispara a reconstrução. Opcional: sem ela, usa-se a branch padrão do repositório (`main`, `master` ou a que o repositório definir).

### Resposta

**response** `object`

A imagem.

**Mostrar objeto**

**id** `string`

O ID da imagem.

**name** `string`

O nome da imagem.

**description** `string | null`

A descrição da imagem (texto livre, até 128 caracteres), ou `null` quando ela não tem uma.

**owner** `string`

`account` para as suas imagens, `system` para imagens fornecidas pela plataforma (estas não podem ser alteradas nem apagadas).

**status** `string`

Estado do build mais recente: `building`, `success` ou `failed`. Uma reconstrução que falha não muda a versão atual: os apps continuam rodando a última versão que deu certo.

**error** `string | null`

Motivo legível do último build que falhou, ou `null`.

**digest** `string | null`

Digest (`sha256:...`) da versão atual, ou `null` enquanto nenhum build tiver dado certo.

**uncompressed\_bytes** `integer | null`

Tamanho da versão atual, descompactada, em bytes.

**layer\_count** `integer | null`

Número de camadas da versão atual.

**apps** `object[]`

Os apps criados a partir desta imagem. Cada um tem `id`, `name`, `version_id` (a versão da imagem que ele executa, ou `null`) e `outdated` (`true` quando a imagem tem uma versão mais nova; o app passa para ela no próximo restart ou deploy que você pedir).

**github** `object | null`

O repositório e a branch do GitHub vinculados (`repository` no formato `owner/name`, `branch`), ou `null` quando a imagem não está vinculada.

**current\_version\_id** `string | null`

A versão atual da imagem, ou `null` enquanto nenhum build tiver dado certo.

**created\_at** `string`

Quando a imagem foi criada.

**updated\_at** `string`

Quando a imagem foi atualizada pela última vez.

```json Response theme={null}
{
  "response": {
    "id": "img-abc123def456",
    "name": "my-api",
    "description": null,
    "owner": "account",
    "status": "success",
    "error": null,
    "digest": "sha256:3f1c0a9d5b7e2c4a8d6f1b0e9c3a7d5f2b4e6a8c0d1f3b5a7c9e2d4f6a8b0c1e",
    "uncompressed_bytes": 187432960,
    "layer_count": 9,
    "apps": [
      {
        "id": "app-abc123def456",
        "name": "my-api-prod",
        "version_id": "imgv-111aaa222bbb",
        "outdated": false
      }
    ],
    "github": { "repository": "acme/my-api", "branch": "main" },
    "current_version_id": "imgv-111aaa222bbb",
    "created_at": "2026-10-23T14:02:00Z",
    "updated_at": "2026-10-23T14:09:00Z"
  }
}
```

### Respostas de erro

**code** `string`

O código de erro que indica o motivo da falha. Valores possíveis:

* `API_KEY_SCOPE_DENIED`: A chave de API não tem o escopo necessário (`403`).
* `ACCESS_DENIED`: Você não é o dono da imagem, ou ela é uma imagem da plataforma (`403`).
* `IMAGE_NOT_FOUND`: A imagem não existe ou você não tem acesso a ela (`404`).
* `VALIDATION_ERROR`: O corpo falhou na validação, por exemplo um `repository` que não está no formato `owner/name` (`400`).
* `INSTALLATION_NOT_FOUND`: O repositório não está em nenhuma das suas instalações do GitHub App (`404`).
* `REPO_ALREADY_LINKED`: O repositório já está vinculado a outra imagem ou app (`409`).
* `FETCH_ZIP_ERROR`: O GitHub não pôde ser acessado, ou estava limitando requisições enquanto o repositório era verificado (`502`). Tente de novo em alguns minutos.
* `PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`: O plano não inclui imagens Docker personalizadas (`403`).
* `INTERNAL_SERVER_ERROR`: Falha inesperada (`500`).

```json Error Response theme={null}
{
  "code": "VALIDATION_ERROR",
  "message": "Repository must be owner/name",
  "path": "repository"
}
```


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