Skip to content
Last updated

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.


Base URLs

EnvironmentBase URL
Productionhttps://public.api.iclosed.io

Quick Start

Make your first API call in three steps.

1. Set your API key

export ICLOSED_API_KEY=iclosed_YOUR_API_KEY

2. 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"}'

Authentication

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.


Rate Limiting

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.


Error Handling

The API uses standard HTTP status codes. Every error includes a JSON body.

CodeMeaning
200Success
201Created
400Bad request — see message.details.fieldErrors for per-field validation errors
401Unauthorized — missing or invalid API key
403Forbidden — key lacks permission
404Not found — resource or endpoint does not exist
429Too many requests — rate limit exceeded
5xxServer error — retry with backoff

See Errors for the full catalog including application-level error codes.


API Versioning

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.


Quick Reference: All Endpoints

PathMethodDescription
POST /v1/contactsPOSTCreate or upsert a contact
PUT /v1/contactsPUTUpdate a contact
POST /v1/contacts/deletePOSTDelete contact(s)
POST /v1/contacts/createContactNotePOSTAdd a note to a contact
GET /v1/dealsGETList or get deals
POST /v1/dealsPOSTCreate a deal
PUT /v1/dealsPUTUpdate a deal
POST /v1/deals/deletePOSTDelete deal(s)
GET /v1/transactionsGETList or get transactions
POST /v1/transactionsPOSTCreate a transaction
PUT /v1/transactionsPUTUpdate a transaction
DELETE /v1/transactionsDELETEDelete a transaction
GET /v1/events/timeSlotsGETGet event time slots
POST /v1/events/eventDatesPOSTGet available booking dates
PUT /v1/events/statusPUTUpdate event status
POST /v1/eventCallsPOSTCreate (book) an event call
GET /v1/eventCallsGETSearch / list event calls
PUT /v1/eventCalls/reschedulePUTReschedule a call
PUT /v1/eventCalls/cancelPUTCancel a call
POST /v1/fields/inviteeAnswersPOSTInsert invitee answers
GET /v1/fields/objectsGETGet custom fields by object type
POST /v1/outcomesPOSTAdd or update a call outcome
GET /v1/usersGETSearch users
POST /v1/setterClaims/assignOwnerPOSTAssign setter owner

For full request/response schemas see the API Reference or download the OpenAPI YAML.


Next Steps

  1. Create an API key in your account settings
  2. Read Authentication for security best practices
  3. Follow the Event Call Booking guide for an end-to-end walkthrough
  4. Explore Webhooks for real-time event notifications
  5. Connect the iClosed MCP server to use API docs directly from your AI assistant

Documentation Index

PageDescription
AuthenticationAPI keys, header format, security
Rate LimitingLimits, response headers, backoff
ErrorsHTTP codes and app-level error strings
Guides IntroductionAll integration walkthroughs
Event Call Booking GuideEnd-to-end booking walkthrough
WebhooksReal-time event notifications
Data ModelsContact, Call, Deal, Transaction, Event schemas
PaginationPaginating list endpoints
ChangelogAPI version history
GlossaryiClosed-specific terms

Support