---
id: gitsync-api
title: GitSync API
---
Paid feature
ToolJet’s git sync CI/CD APIs enable organizations to programmatically manage the complete lifecycle of their ToolJet applications within their existing CI/CD piplines. With these RESTful APIs, you can configure git sync, push and pull changes from Git repositories, and automate application deployments without manual intervention.
By integrating these APIs into your CI/CD pipelines (e.g., Jenkins, GitHub Actions, GitLab CI), you can:
- **Automate git sync operations** to eliminate manual syncing via the ToolJet UI.
- **Implement enterprise-grade deployment strategies** with standardized governance.
- **Streamline development cycles**, ensuring your internal apps follow the same release processes as your core applications.
The following APIs are available to manage git sync within your CI/CD pipeline.
### Add GitHub HTTPS Git Configuration
- **Description:** Configure GitHub HTTPS settings for an organization by associating a GitHub App and repo.
- **URL:** `/api/ext/organizations/git`
- **Method:** POST
- **Authorization:** `Basic `
- **Content-Type:** `application/json`
- **Body:** The body object can contain the following fields:
- `organizationId` (string, required): UUID of the organization.
- `gitUrl` (string, required): Full HTTPS Git URL.
- `branchName` (string, required): Branch to sync with (e.g., "main").
- `githubAppId` (string, required): GitHub App ID.
- `githubAppInstallationId` (string, required): GitHub App installation ID.
- `githubAppPrivateKey` (string, required): GitHub App private key (PEM format).
Request Body Example
```json
{
"organizationId": "45892c81-c1f0-48c6-8875-c2e4fca516f8",
"gitUrl": "https://github.com/username/repository.git",
"branchName": "main",
"githubAppId": "123456",
"githubAppInstallationId": "78910",
"githubAppPrivateKey": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"
}
```
- **Response:** `201 Created`
### Push an App Version to GitHub
- **Description:** Push a specific app version to the configured GitHub repository.
- **URL:** `/api/ext/apps/:appId/versions/:versionId/git-sync/push`
- **Method:** POST
- **Authorization:** `Basic `
- **Content-Type:** `application/json`
- **Params:**
- appId (string): The ID of the app.
- versionId (string): The ID of the app version.
- **Body:** The body object can contain the following fields:
- `commitMessage` (string, required): Git commit message.
Request Body Example
```json
{
"commitMessage": "Updated app configuration and components"
}
```
- **Response:** `200 OK`
### Create a New App from GitHub
- **Description:** Creates a new ToolJet app from a GitHub repo.
- **URL:** `/api/ext/apps?createMode=git`
- **Method:** POST
- **Authorization:** `Basic `
- **Content-Type:** `application/json`
- **Body:** The body object can contain the following fields:
- `gitAppId` (string, required): Git App ID.
- `gitVersionId` (string, required): Git version ID (branch or tag).
- `organizationId` (string, required): UUID of the organization.
Request Body Example
```json
{
"gitAppId": "app-123456",
"gitVersionId": "main",
"organizationId": "45892c81-c1f0-48c6-8875-c2e4fca516f8"
}
```
- **Response:** `201 Created`
### Sync and Pull Changes to Existing App from Git
- **Description:** Sync and pull the latest changes from GitHub for an existing ToolJet app.
- **URL:** `/api/ext/apps/:appId?createMode=git`
- **Method:** PUT
- **Authorization:** `Basic `
- **Content-Type:** `application/json`
- **Params:**
- appId (string): The ID of the app.
- **Body:** No body required.
- **Response:** `200 OK`
### Auto Promote App
- **Description:** Deploys an app by pulling the latest changes from Git and promoting the latest version to the production environment.
- **URL:** `/api/ext/apps/:appId/promote`
- **Method:** POST
- **Authorization:** `Basic `
- **Params:**
- appId (string): ID of the app to deploy.
- **Body:** No body required.
- **Response:** `200 OK`