curl -X POST https://api.v2.dealmachine.com/v1/signup \
-H "Content-Type: application/json" \
-d '{
"email": "developer@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"phone_number": "+15551234567"
}'
const response = await fetch('https://api.v2.dealmachine.com/v1/signup', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'developer@example.com',
first_name: 'Ada',
last_name: 'Lovelace',
phone_number: '+15551234567',
}),
});
const signup = await response.json();
console.log(signup.api_key);
import requests
response = requests.post(
'https://api.v2.dealmachine.com/v1/signup',
json={
'email': 'developer@example.com',
'first_name': 'Ada',
'last_name': 'Lovelace',
'phone_number': '+15551234567'
}
)
signup = response.json()
print(signup['api_key'])
{
"api_key": "dm_sk_live_xxxxxxxxxxxxxxxxxxxxxxxx",
"key_id": "key_abc123def456",
"organization": {
"id": 42,
"name": "Ada Lovelace's Team",
"slug": "team-user-123"
},
"message": "Account created. Store this API key securely."
}
{
"error": {
"code": "email_already_exists",
"message": "An account with this email already exists",
"request_id": "req_abc123"
}
}
Account
Sign Up
POST
/
v1
/
signup
curl -X POST https://api.v2.dealmachine.com/v1/signup \
-H "Content-Type: application/json" \
-d '{
"email": "developer@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"phone_number": "+15551234567"
}'
const response = await fetch('https://api.v2.dealmachine.com/v1/signup', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'developer@example.com',
first_name: 'Ada',
last_name: 'Lovelace',
phone_number: '+15551234567',
}),
});
const signup = await response.json();
console.log(signup.api_key);
import requests
response = requests.post(
'https://api.v2.dealmachine.com/v1/signup',
json={
'email': 'developer@example.com',
'first_name': 'Ada',
'last_name': 'Lovelace',
'phone_number': '+15551234567'
}
)
signup = response.json()
print(signup['api_key'])
{
"api_key": "dm_sk_live_xxxxxxxxxxxxxxxxxxxxxxxx",
"key_id": "key_abc123def456",
"organization": {
"id": 42,
"name": "Ada Lovelace's Team",
"slug": "team-user-123"
},
"message": "Account created. Store this API key securely."
}
{
"error": {
"code": "email_already_exists",
"message": "An account with this email already exists",
"request_id": "req_abc123"
}
}
Create a DealMachine account and receive an API key. No authentication is required.
This endpoint is intended for API onboarding flows. The new account starts with subscription status
When the limit is exceeded, the API returns
none, so data endpoints return 403 subscription_required until checkout is completed.
Calling this endpoint confirms acceptance of the DealMachine Terms of Service and Privacy Policy for the account being created.
curl -X POST https://api.v2.dealmachine.com/v1/signup \
-H "Content-Type: application/json" \
-d '{
"email": "developer@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"phone_number": "+15551234567"
}'
const response = await fetch('https://api.v2.dealmachine.com/v1/signup', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'developer@example.com',
first_name: 'Ada',
last_name: 'Lovelace',
phone_number: '+15551234567',
}),
});
const signup = await response.json();
console.log(signup.api_key);
import requests
response = requests.post(
'https://api.v2.dealmachine.com/v1/signup',
json={
'email': 'developer@example.com',
'first_name': 'Ada',
'last_name': 'Lovelace',
'phone_number': '+15551234567'
}
)
signup = response.json()
print(signup['api_key'])
{
"api_key": "dm_sk_live_xxxxxxxxxxxxxxxxxxxxxxxx",
"key_id": "key_abc123def456",
"organization": {
"id": 42,
"name": "Ada Lovelace's Team",
"slug": "team-user-123"
},
"message": "Account created. Store this API key securely."
}
{
"error": {
"code": "email_already_exists",
"message": "An account with this email already exists",
"request_id": "req_abc123"
}
}
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Account email address |
first_name | string | No | First name |
last_name | string | No | Last name |
phone_number | string | No | Phone number in E.164 format. Required only when the configured Clerk instance requires phone numbers |
Rate Limits
POST /v1/signup is rate limited per IP address:
| Window | Limit |
|---|---|
| Hour | 5 |
| Day | 20 |
429 signup_rate_limited with a Retry-After header.
Response Fields
| Field | Type | Description |
|---|---|---|
api_key | string | The API key. Store it securely because it is shown once. |
key_id | string | API key identifier |
organization.id | number | Organization ID |
organization.name | string | Organization name |
organization.slug | string | Organization slug |
Use the returned key with
dm login --key dm_sk_live_xxx if you want the CLI to store it locally.⌘I