Crear webhook de despliegue
curl --request POST \
--url https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"owner": "<string>",
"repo_name": "<string>",
"repo_id": "<string>",
"account_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
owner: '<string>',
repo_name: '<string>',
repo_id: '<string>',
account_id: '<string>'
})
};
fetch('https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook"
payload = {
"owner": "<string>",
"repo_name": "<string>",
"repo_id": "<string>",
"account_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook"
payload := strings.NewReader("{\n \"owner\": \"<string>\",\n \"repo_name\": \"<string>\",\n \"repo_id\": \"<string>\",\n \"account_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": {
"url": "https://api.vertracloud.app/v1/apps/123/deploys/receiver/webhook"
}
}
Despliegues
Crear webhook de despliegue
Crea un webhook de despliegue para un repositorio de GitHub, de forma que un push a la rama elegida despliegue la aplicación.
POST
/
v1
/
apps
/
{app_id}
/
deploys
/
webhook
Crear webhook de despliegue
curl --request POST \
--url https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"owner": "<string>",
"repo_name": "<string>",
"repo_id": "<string>",
"account_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
owner: '<string>',
repo_name: '<string>',
repo_id: '<string>',
account_id: '<string>'
})
};
fetch('https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook"
payload = {
"owner": "<string>",
"repo_name": "<string>",
"repo_id": "<string>",
"account_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook"
payload := strings.NewReader("{\n \"owner\": \"<string>\",\n \"repo_name\": \"<string>\",\n \"repo_id\": \"<string>\",\n \"account_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": {
"url": "https://api.vertracloud.app/v1/apps/123/deploys/receiver/webhook"
}
}
string
requerido
El ID de la aplicación en la que se creará el webhook.
string
requerido
El propietario del repositorio de GitHub.
string
requerido
El nombre del repositorio de GitHub.
string
requerido
El ID del repositorio de GitHub. Se comprueba contra el propio repositorio: si no coincide con
owner y repo_name, la petición falla con VALIDATION_ERROR (400) y details.path apunta a repo_id.string
requerido
El ID de la cuenta de GitHub.
string
La rama de Git que dispara el despliegue (por ejemplo
develop o release/1.2). Es opcional: sin ella, un push a main o master despliega. Con ella, solo un push a esa rama despliega, y un push a cualquier otra rama se ignora. La entrega sigue respondiendo con 200.Si vuelves a llamar a esta ruta para una aplicación que ya tiene un webhook, se reemplaza la rama: envía otra branch para cambiarla, o omítela para volver a main o master. Un nombre de rama no válido falla con VALIDATION_ERROR (400) y details.path apunta a branch.Respuesta
{
"response": {
"url": "https://api.vertracloud.app/v1/apps/123/deploys/receiver/webhook"
}
}
Respuestas de error
string
Códigos de error posibles:
AUTH_TOKEN_MISSING,API_KEY_INVALID,SESSION_REVOKED: Falta la cabeceraAuthorization, la clave de API no es válida o la sesión del panel fue revocada (401).API_KEY_IP_DENIED,API_KEY_SCOPE_DENIED: La clave de API se usa desde una IP fuera de su lista de permitidas, o no tiene el scope que requiere la ruta (403).ACCESS_DENIED: El recurso pertenece a otra cuenta, o no tienes el permiso de workspace necesario para él (403).PLAN_RESTRICTED_FEATURE: El plan del usuario no admite el despliegue automático.INSTALLATION_NOT_FOUND: No se encontró la instalación de GitHub del usuario, o el repositorio no es uno de los repositorios a los que esa instalación tiene acceso (404).IMAGE_APP_CODE_NOT_APPLICABLE: La aplicación ejecuta una imagen Docker personalizada, que no tiene despliegue automático desde GitHub (409). Vincula la imagen a GitHub en su lugar.FETCH_ZIP_ERROR: No se pudo contactar con GitHub, o estaba limitando las peticiones mientras se comprobaba el repositorio (502). Inténtalo de nuevo en unos minutos.VALIDATION_ERROR: El cuerpo no superó la validación, por ejemplo unowner,repo_name,repo_idobranchno válidos (400).details.pathindica el campo.
string
Una descripción detallada con información adicional sobre el error.
{
"code": "INSTALLATION_NOT_FOUND"
}
Última modificación el 28 de octubre de 2026