API Overview & Authentication
Overview
The AutomateNexus CRM API provides a RESTful interface for integrating your applications with AutomateNexus CRM. You can use the API to manage contacts, deals, tasks, activities, and more programmatically. This guide covers authentication, rate limiting, error handling, pagination, and general API conventions.
Base URL
All API requests should be made to the following base URL:
https://app.automatenexuscrm.com/functions/v1/api
All requests must use HTTPS. HTTP requests will be rejected with a 301 Moved Permanently redirect.
Authentication
The AutomateNexus CRM API uses Bearer token authentication. You must include your API key in the Authorization header of every request.
Generating an API Key
Navigate to Settings → API → API Keys in your AutomateNexus CRM dashboard.
Click Generate New API Key.
Enter a descriptive name for the key (e.g., "Production Integration" or "Zapier Connection").
Select the appropriate permissions scope:
Full Access — Read and write access to all resources.
Read Only — Read access to all resources, no modifications allowed.
Custom — Granular permissions for specific resource types.
Click Generate Key. Copy the key immediately — it will not be shown again.
Pro Tip: Create separate API keys for each integration. This way, you can revoke access to a single integration without affecting others.
Using the API Key
Include your API key as a Bearer token in the Authorization header:
curl -X GET "https://app.automatenexuscrm.com/functions/v1/api/contacts" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json"
Warning: Never expose your API key in client-side code, public repositories, or browser JavaScript. Always make API calls from your server-side application.
Request Format
All request bodies must be sent as JSON with the Content-Type: application/json header. Parameters for GET requests should be passed as URL query parameters.
# POST request examplecurl -X POST "https://app.automatenexuscrm.com/functions/v1/api/contacts" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "first_name": "Jane", "last_name": "Smith", "email": "jane@example.com" }'
Response Format
All responses are returned as JSON with a consistent envelope structure:
{ "success": true, "data": { ... }, "meta": { "request_id": "req_abc123def456", "timestamp": "2026-03-21T10:30:00Z" }}
For list endpoints, the response includes pagination metadata:
{ "success": true, "data": [ ... ], "meta": { "total": 150, "limit": 25, "next_cursor": "eyJpZCI6MTUwfQ==", "has_more": true }}
Error Handling
When an error occurs, the API returns an appropriate HTTP status code along with an error response body:
{ "success": false, "error": { "code": "validation_error", "message": "The email field is required.", "details": { "email": ["The email field is required."] } }}
Error Code Reference
400 Bad Request — The request body is malformed or missing required fields. Check the
detailsfield for specific validation errors.401 Unauthorized — The API key is missing, invalid, or expired. Verify your Authorization header.
403 Forbidden — The API key does not have permission to access this resource. Check your key's permission scope.
404 Not Found — The requested resource does not exist. Verify the resource ID in your URL.
409 Conflict — The request conflicts with the current state of the resource (e.g., duplicate email address).
422 Unprocessable Entity — The request is well-formed but contains semantic errors. Check business logic constraints.
429 Too Many Requests — You have exceeded the rate limit. Wait and retry after the time specified in the
Retry-Afterheader.500 Internal Server Error — An unexpected error occurred on our end. If this persists, contact support with the
request_id.
Rate Limiting
API requests are rate-limited to ensure fair usage and platform stability:
Standard Plan: 100 requests per minute per API key.
Professional Plan: 300 requests per minute per API key.
Enterprise Plan: 500 requests per minute per API key, with burst allowance up to 1,000.
Rate limit headers are included in every response:
X-RateLimit-Limit: 100X-RateLimit-Remaining: 87X-RateLimit-Reset: 1711018260
When you exceed the rate limit, you receive a 429 Too Many Requests response. The Retry-After header indicates how many seconds to wait before retrying.
Best Practice: Implement exponential backoff in your integration. Start with a 1-second delay and double it on each retry, up to a maximum of 60 seconds.
Pagination
List endpoints use cursor-based pagination for efficient traversal of large datasets. Each response includes a next_cursor value that you pass as a query parameter to get the next page:
# First pageGET /v1/contacts?limit=25 # Next pageGET /v1/contacts?limit=25&cursor=eyJpZCI6MTUwfQ==
Pagination parameters:
limit (optional) — Number of records per page. Default: 25. Maximum: 100.
cursor (optional) — Cursor token from a previous response's
meta.next_cursorfield.
When meta.has_more is false, you have reached the last page.
Filtering and Sorting
Most list endpoints support filtering and sorting via query parameters:
# Filter contacts by status and sort by creation dateGET /v1/contacts?status=active&sort=-created_at&limit=50
Sorting conventions:
Prefix with
-for descending order (e.g.,-created_at).No prefix for ascending order (e.g.,
created_at).Multiple sort fields can be comma-separated:
sort=-priority,created_at.
API Versioning
The API version is included in the URL path (/v1/). When breaking changes are introduced, a new version will be released (e.g., /v2/). Previous versions remain available for at least 12 months after a new version is released.
Check the X-API-Version response header to confirm which version you are using. Subscribe to the AutomateNexus CRM developer changelog for advance notice of version changes.
SDKs and Libraries
Official SDKs are available to simplify integration:
Node.js:
npm install @automatenexus/sdkPython:
pip install automatenexus-pythonPHP:
composer require automatenexus/php-sdk
Node.js Example
const AutomateNexus = require('@automatenexus/sdk');const client = new AutomateNexus({ apiKey: 'YOUR_API_KEY' }); const contacts = await client.contacts.list({ status: 'active', limit: 50 });console.log(contacts.data);
Python Example
from automatenexus import Client client = Client(api_key="YOUR_API_KEY")contacts = client.contacts.list(status="active", limit=50)print(contacts.data)
Webhooks vs. Polling
For real-time data synchronization, we strongly recommend using Webhooks instead of polling the API. Webhooks push data to your endpoint when events occur, reducing API calls and latency. See the Webhooks API article for setup instructions.
Testing and Sandbox
Use the AutomateNexus CRM Sandbox Environments feature to test your API integrations without affecting production data. Create a sandbox from Settings → Sandboxes → Create Sandbox and use the sandbox-specific API key for testing.
Support and Resources
API Status: Check the current API health at
status.automatenexuscrm.com.Developer Support: Contact the developer support team via Help → Developer Support in your dashboard.
Community: Join the developer community forum to share integrations and get help from other developers.
Changelog: Subscribe to API changelog notifications at Settings → API → Changelog.
Troubleshooting
Common Issues
"401 Unauthorized" on every request: Ensure you are using
Bearer YOUR_KEY(not just the key alone) in the Authorization header. Check for extra whitespace."403 Forbidden" for specific endpoints: Your API key may have restricted permissions. Go to Settings → API → API Keys and verify the scope.
Empty response data: Check your filter parameters. Overly restrictive filters may return zero results.
Timeout errors: For large data exports, use pagination with smaller page sizes (limit=25) instead of requesting all records at once.
Rate limit exceeded frequently: Implement request queuing and batch operations where possible. Use bulk endpoints for mass operations.