Signup via API
The Signup API allows coding agents and automation tools to create DeployHQ accounts programmatically. This is the only unauthenticated API endpoint.
Create an account
POST /api/v1/signup
Required parameters
email- Email address for the account administratorpassword- Password for the account (must meet Identity service requirements)
Optional parameters
account_name- Name for the account (used to generate the subdomain). If not provided, auto-generated from the email address (e.g.,dev@example.combecomesdev-example-com).full_name- Full name of the account administrator (defaults to "{account_name} Admin")package- Billing package (defaults topro). All accounts start with a trial period.coupon- Coupon code to apply to the new accountnewsletter_opt_in- Subscribe to the newsletter (true/false)signup_source- Identifier for the signup source (e.g., "claude-code", "cursor")client- Client identifier for tracking (e.g., "deployhq-cli", "mcp-server")utm_params- UTM tracking parameters as a JSON object
Example request
curl -X POST https://deployhq.com/api/v1/signup \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"email": "developer@example.com",
"password": "your-secure-password",
"account_name": "my-company"
}'
Example response
{
"account": {
"identifier": "billy-svc-abc123",
"name": "My Company",
"subdomain": "my-company",
"url": "https://my-company.deployhq.com"
},
"api_key": "a1b2c3d4e5f6...",
"ssh_public_key": {
"id": "kp-abc123",
"public_key": "ssh-ed25519 AAAA...",
"fingerprint": "SHA256:..."
},
"oauth_urls": {
"github": "https://github.com/login/oauth/authorize?...",
"gitlab": "https://gitlab.com/oauth/authorize?...",
"bitbucket": "https://bitbucket.org/site/oauth2/authorize?..."
},
"mcp_config": {
"account": "my-company",
"api_key": "a1b2c3d4e5f6...",
"email": "developer@example.com"
},
"email_verified": false
}
Using the returned credentials
After signup, use the returned api_key with the account email for HTTP Basic Authentication on all subsequent API calls:
curl -u developer@example.com:a1b2c3d4e5f6... \
https://my-company.deployhq.com/projects.json \
-H "Accept: application/json"
The ssh_public_key should be added to your repository hosting provider (GitHub, GitLab, Bitbucket) to allow DeployHQ to access your repositories. Visit the returned oauth_urls to connect your repository provider accounts.
Email verification
Accounts are created immediately but deployment is gated until the administrator email is verified. Check the email_verified field in the response. A verification email is sent automatically on account creation.
Error responses
All error responses follow this format:
{
"status": "error",
"errors": ["Description of the error"]
}
Status codes
| Status | Meaning |
|---|---|
| 201 | Account created successfully |
| 400 | Missing or invalid parameters (email, password) |
| 401 | Email exists but password is incorrect |
| 403 | Account is temporarily locked due to too many failed attempts |
| 409 | Account name is not available (all subdomain variations exhausted) |
| 422 | Registration failed, or account has two-factor authentication enabled (must use web signup) |
| 429 | Too many signup attempts from this IP address (limit: 3 per hour) |
| 503 | Billing service temporarily unavailable |
Rate limiting
The signup endpoint is limited to 3 requests per IP address per hour. If you exceed this limit, you will receive a 429 response. Wait and try again later.
Post-signup next steps
- Verify your email address using the link sent to your inbox
- Connect a repository provider using the OAuth URLs
- Create a project and configure servers
- Start deploying