The iClosed.io API gives you programmatic access to contacts, calls, deals, transactions, events, and custom fields — everything you need to build sales automation, sync with your CRM, or extend the iClosed platform. The API is REST-based, returns JSON, and authenticates via a Bearer API key.
| Environment | Base URL |
|---|---|
| Production | https://public.api.iclosed.io |
Make your first API call in three steps.
1. Set your API key
export ICLOSED_API_KEY=iclosed_YOUR_API_KEY2. Fetch your calls
curl "https://public.api.iclosed.io/v1/eventCalls?eventType=UPCOMING&limit=5" \
-H "Authorization: Bearer $ICLOSED_API_KEY"3. Create a contact
curl -X POST https://public.api.iclosed.io/v1/contacts \
-H "Authorization: Bearer $ICLOSED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"firstName": "Jane", "lastName": "Doe", "email": "jane@example.com"}'All requests require a valid API key in the Authorization header:
Authorization: Bearer iclosed_<your-api-key>Both Bearer (with a space) and the iclosed_ prefix are required. See Authentication for full details.
Startup: 20 requests per endpoint per 10-second window per account. Business: 100 requests per endpoint per 10-second window. Exceeding this returns 429 Too Many Requests with a JSON body:
{
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests, please try again later.",
"retryAfter": 3,
"limit": { "points": 20, "windowSec": 10 }
}Read retryAfter and wait that many seconds before retrying. See Rate Limiting.
The API uses standard HTTP status codes. Every error includes a JSON body.
| Code | Meaning |
|---|---|
200 | Success |
201 | Created |
400 | Bad request — see message.details.fieldErrors for per-field validation errors |
401 | Unauthorized — missing or invalid API key |
403 | Forbidden — key lacks permission |
404 | Not found — resource or endpoint does not exist |
429 | Too many requests — rate limit exceeded |
5xx | Server error — retry with backoff |
See Errors for the full catalog including application-level error codes.
The current version is v1. All endpoint paths are prefixed /v1/. Non-breaking additions (new fields, new endpoints) are made without a version bump. Breaking changes are released as /v2/ with at least 60 days of overlap. See Changelog.
| Path | Method | Description |
|---|---|---|
POST /v1/contacts | POST | Create or upsert a contact |
PUT /v1/contacts | PUT | Update a contact |
POST /v1/contacts/delete | POST | Delete contact(s) |
POST /v1/contacts/createContactNote | POST | Add a note to a contact |
GET /v1/deals | GET | List or get deals |
POST /v1/deals | POST | Create a deal |
PUT /v1/deals | PUT | Update a deal |
POST /v1/deals/delete | POST | Delete deal(s) |
GET /v1/transactions | GET | List or get transactions |
POST /v1/transactions | POST | Create a transaction |
PUT /v1/transactions | PUT | Update a transaction |
DELETE /v1/transactions | DELETE | Delete a transaction |
GET /v1/events/timeSlots | GET | Get event time slots |
POST /v1/events/eventDates | POST | Get available booking dates |
PUT /v1/events/status | PUT | Update event status |
POST /v1/eventCalls | POST | Create (book) an event call |
GET /v1/eventCalls | GET | Search / list event calls |
PUT /v1/eventCalls/reschedule | PUT | Reschedule a call |
PUT /v1/eventCalls/cancel | PUT | Cancel a call |
POST /v1/fields/inviteeAnswers | POST | Insert invitee answers |
GET /v1/fields/objects | GET | Get custom fields by object type |
POST /v1/outcomes | POST | Add or update a call outcome |
GET /v1/users | GET | Search users |
POST /v1/setterClaims/assignOwner | POST | Assign setter owner |
For full request/response schemas see the API Reference or download the OpenAPI YAML.
- Create an API key in your account settings
- Read Authentication for security best practices
- Follow the Event Call Booking guide for an end-to-end walkthrough
- Explore Webhooks for real-time event notifications
- Connect the iClosed MCP server to use API docs directly from your AI assistant
| Page | Description |
|---|---|
| Authentication | API keys, header format, security |
| Rate Limiting | Limits, response headers, backoff |
| Errors | HTTP codes and app-level error strings |
| Guides Introduction | All integration walkthroughs |
| Event Call Booking Guide | End-to-end booking walkthrough |
| Webhooks | Real-time event notifications |
| Data Models | Contact, Call, Deal, Transaction, Event schemas |
| Pagination | Paginating list endpoints |
| Changelog | API version history |
| Glossary | iClosed-specific terms |
- App: https://app.iclosed.io
- Support: https://app.iclosed.io/support
- API Reference: https://api-docs-iclosed.redocly.app/openapi/v1/openapi