Skip to main content

Account & Settings

Endpoints for managing your account quota, contacts, and domain verification.

Quota​

GET /quota

Returns your current billing period usage and plan limits.

Response​

{
"period": {
"year": 2026,
"month": 2,
"month_name": "February 2026"
},
"actions": {
"used": 47,
"limit": 5000
},
"sms": {
"used": 12,
"limit": 100
},
"ai_suggestions": {
"used": 3,
"limit": 50,
"percentage": 6.0
},
"plan": "pro"
}

Usage resets on the 1st of each month at 00:00 UTC. Actions in cancelled status still count toward your monthly usage. Specific limits depend on your plan.


Contacts​

Manage reusable recipient entries that can be referenced by ID in approval recipients instead of raw email addresses or phone numbers.

List Contacts​

GET /contacts
{
"data": [
{
"id": "contact-uuid-1",
"name": "John Smith",
"email": "john@example.com",
"phone": "+15551234567",
"created_at": "2026-01-01T10:00:00Z",
"updated_at": "2026-01-01T10:00:00Z"
}
]
}

Create Contact​

POST /contacts
FieldTypeRequiredDescription
namestringYesDisplay name (max 255 chars)
emailstringNo*Email address
phonestringNo*Phone number in E.164 format (e.g., +15551234567)

*At least one of email or phone is required.

Get Contact​

GET /contacts/{id}

Update Contact​

PUT /contacts/{id}

All fields are optional. Only provided fields are updated.

Delete Contact​

DELETE /contacts/{id}

Usage in Approvals​

Reference contacts by ID in the gate.recipients array using the format contact:{id}:email or contact:{id}:phone:

{
"mode": "approval",
"gate": {
"message": "Please approve deployment",
"recipients": ["contact:contact-uuid-1:email", "contact:contact-uuid-2:phone"],
"channels": ["email", "sms"]
}
}

The system looks up each contact's information and sends through the specified channel.


Domain Verification​

Domain verification is required when your account exceeds usage thresholds to a single domain:

  • More than 10 actions per day to the same domain
  • More than 100 actions per month to the same domain

Until verified, new actions targeting that domain will be rejected with a 422 error.

List Domains​

GET /domains

Returns all domains associated with your account and their verification status.

{
"data": [
{
"domain": "api.example.com",
"verified": true,
"verified_at": "2026-01-01T10:00:00Z",
"method": "dns"
},
{
"domain": "hooks.myapp.io",
"verified": false,
"verified_at": null,
"method": null
}
]
}

Start Verification​

POST /domains/{domain}/verify

Initiates the verification process and returns instructions for both supported methods.

{
"domain": "api.example.com",
"verification_token": "cml_abc123def456",
"verification_methods": {
"dns": {
"type": "TXT",
"value": "callmelater-verification=cml_abc123def456"
},
"file": {
"url": "https://api.example.com/.well-known/callmelater-verify.txt",
"content": "callmelater-verification=cml_abc123def456"
}
}
}

Method 1 -- DNS TXT Record: Add a TXT record with the provided value to your domain's DNS. Allow up to 24 hours for propagation, then check verification status.

Method 2 -- File Verification: Create a publicly accessible file at https://yourdomain.com/.well-known/callmelater-verify.txt containing the verification string.

Get Domain​

GET /domains/{domain}

Returns verification instructions and current status for a specific domain.

Remove Domain​

DELETE /domains/{domain}

Removes the domain from your account. You will need to re-verify if you exceed thresholds again.

Notes​

  • Subdomains are verified independently (api.example.com and www.example.com are separate)
  • Once verified, domain verification does not expire
  • Wildcard verification is not supported