Pushify API Documentation
Deploy, manage, and monitor your applications programmatically. Perfect for CI/CD pipelines, automation scripts, and custom integrations.
Description
Managed server billing
RESTful API
Simple REST endpoints with JSON responses
Secure
Scope-based API key permissions
CI/CD Ready
Webhook triggers and deploy API
Base URL
https://api.pushify.dev/api/v1Quick Start
Create an API Key
Go to Settings → API Keys and create a key with the required scopes.
Make a Request
Use your API key in the Authorization header to authenticate.
Automate
Integrate with GitHub Actions, GitLab CI, or any CI/CD tool.
Explore
Authentication
All API requests require an API key. Include it in the Authorization header as a Bearer token.
Header Format
Authorization: Bearer pk_live_YOUR_API_KEYExample Request
curl -X GET "https://api.pushify.dev/api/v1/projects" \
-H "Authorization: Bearer pk_live_YOUR_API_KEY" \
-H "Content-Type: application/json"Available Scopes
Limit API key access by selecting specific scopes when creating a key.
projects:readList and view projectsprojects:writeCreate, update, delete projectsdeployments:readView deployments and logsdeployments:writeTrigger, redeploy, rollback deploysdeployments:cancelCancel pending or running deploymentslogs:readRead deployment build and deploy logsenvvars:readView environment variablesenvvars:writeManage environment variablesservers:readView serversservers:writeManage serversdatabases:readView databasesdatabases:writeManage databasesdomains:readView domainsdomains:writeManage domainsSecurity
Dashboard session only
Projects
Manage your projects programmatically. Create, update, configure, and delete projects.
Deployments
Trigger and manage deployments. Monitor build progress, view logs, and rollback when needed.
Environment Variables
Manage environment variables for your projects. Changes take effect on next deployment.
Sensitive Values
Domains
Add custom domains to your projects. Manage DNS settings, SSL certificates, and Nginx configuration.
Servers
Provision and manage servers. Create cloud servers, control their state, and monitor status.
Not available via API key
Databases
Create and manage databases on your servers. Supports PostgreSQL, MySQL, Redis, and MongoDB.
Webhooks & CI/CD
Automatically deploy when you push to GitHub. Pushify listens for webhook events and triggers deployments.
How It Works
Connect GitHub
Link your GitHub account in project settings.
Push to Branch
Push code to the configured branch (e.g. main).
Auto Deploy
Pushify receives the webhook and starts a deployment automatically.
Manual Webhook URL
Each project has a unique webhook URL for manual integration with other Git providers.
POST https://api.pushify.dev/api/v1/webhooks/github/:projectId
Headers:
X-Hub-Signature-256: sha256=<HMAC signature>
Content-Type: application/json
Body:
{
"ref": "refs/heads/main",
"head_commit": {
"id": "abc123",
"message": "Deploy new feature"
}
}GitHub Actions Example
Trigger deployments directly from GitHub Actions using the Deployments API.
# .github/workflows/deploy.yml
name: Deploy to Pushify
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Trigger deployment
run: |
curl -X POST "https://api.pushify.dev/api/v1/projects/${{ secrets.PROJECT_ID }}/deployments" \
-H "Authorization: Bearer ${{ secrets.PUSHIFY_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"branch": "main",
"commitHash": "${{ github.sha }}",
"commitMessage": "${{ github.event.head_commit.message }}"
}'Webhook Secret
GET /projects/:id/webhook endpoint.Error Handling
The API uses standard HTTP status codes and returns detailed error messages in JSON format.
HTTP Status Codes
| Code | Description |
|---|---|
| 200 | Success |
| 201 | Created - Resource created successfully |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Insufficient permissions / scope |
| 404 | Not Found - Resource does not exist |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
Error Response Format
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}Common Error Codes
UNAUTHORIZEDAPI key is missing, invalid, or expiredINSUFFICIENT_SCOPEAPI key lacks required permissionsNOT_FOUNDRequested resource was not foundVALIDATION_ERRORRequest body or parameters are invalidRATE_LIMITEDToo many requests, slow downCONFLICTResource already exists or state conflictRate Limits
API requests are rate-limited per API key. Limits vary by plan.
| Plan | Rate Limit |
|---|---|
| Free | 60 requests/min |
| Hobby | 120 requests/min |
| Pro | 300 requests/min |
| Business | 600 requests/min |
| Enterprise | Unlimited |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Error Handling Example
async function apiRequest(endpoint, options = {}) {
const response = await fetch('https://api.pushify.dev/api/v1' + endpoint, {
...options,
headers: {
'Authorization': 'Bearer ' + process.env.PUSHIFY_API_KEY,
'Content-Type': 'application/json',
...options.headers,
},
});
if (!response.ok) {
const { error } = await response.json();
throw new Error(error.message || 'API request failed');
}
return response.json();
}