Access the Keap API with managed OAuth authentication. Manage contacts, companies, tags, tasks, orders, opportunities, campaigns, and more for CRM and marketing automation.
Reference
Get Current User
GET /keap/crm/rest/v2/oauth/connect/userinfoResponse:
{
"email": "user@example.com",
"sub": "1",
"id": "4236128",
"keap_id": "user@example.com",
"family_name": "Doe",
"given_name": "John",
"is_admin": true
}List Contacts
GET /keap/crm/rest/v2/contactsQuery parameters:
page_size- Number of results per page (default 50, max 1000)page_token- Token for next pagefilter- Filter expressionorder_by- Sort orderfields- Fields to include in response
Response:
{
"contacts": [
{
"id": "9",
"family_name": "Park",
"given_name": "John"
}
],
"next_page_token": ""
}Get Contact
GET /keap/crm/rest/v2/contacts/{contact_id}Create Contact
POST /keap/crm/rest/v2/contacts
Content-Type: application/json
{
"given_name": "John",
"family_name": "Doe",
"email_addresses": [
{"email": "john@example.com", "field": "EMAIL1"}
],
"phone_numbers": [
{"number": "555-1234", "field": "PHONE1"}
]
}Response:
{
"id": "13",
"family_name": "Doe",
"given_name": "John"
}Update Contact
PATCH /keap/crm/rest/v2/contacts/{contact_id}
Content-Type: application/json
{
"given_name": "Jane"
}Delete Contact
DELETE /keap/crm/rest/v2/contacts/{contact_id}Returns 204 on success.
Get Contact Notes
GET /keap/crm/rest/v2/contacts/{contact_id}/notesCreate Contact Note
POST /keap/crm/rest/v2/contacts/{contact_id}/notes
Content-Type: application/json
{
"body": "Note content here",
"title": "Note Title"
}List Companies
GET /keap/crm/rest/v2/companiesGet Company
GET /keap/crm/rest/v2/companies/{company_id}Create Company
POST /keap/crm/rest/v2/companies
Content-Type: application/json
{
"company_name": "Acme Corp",
"phone_number": {"number": "555-1234", "type": "MAIN"},
"website": "https://acme.com"
}Update Company
PATCH /keap/crm/rest/v2/companies/{company_id}
Content-Type: application/json
{
"company_name": "Acme Corporation"
}Delete Company
DELETE /keap/crm/rest/v2/companies/{company_id}List Tags
GET /keap/crm/rest/v2/tagsResponse:
{
"tags": [
{
"id": "91",
"name": "Nurture Subscriber",
"description": "",
"category": {"id": "10"},
"create_time": "2017-04-24T17:26:26Z",
"update_time": "2017-04-24T17:26:26Z"
}
],
"next_page_token": ""
}Get Tag
GET /keap/crm/rest/v2/tags/{tag_id}Create Tag
POST /keap/crm/rest/v2/tags
Content-Type: application/json
{
"name": "VIP Customer",
"description": "High value customers"
}Update Tag
PATCH /keap/crm/rest/v2/tags/{tag_id}
Content-Type: application/json
{
"name": "Premium Customer"
}Delete Tag
DELETE /keap/crm/rest/v2/tags/{tag_id}List Contacts with Tag
GET /keap/crm/rest/v2/tags/{tag_id}/contactsApply Tags to Contacts
POST /keap/crm/rest/v2/tags/{tag_id}/contacts:applyTags
Content-Type: application/json
{
"contact_ids": ["1", "2", "3"]
}Remove Tags from Contacts
POST /keap/crm/rest/v2/tags/{tag_id}/contacts:removeTags
Content-Type: application/json
{
"contact_ids": ["1", "2", "3"]
}List Tag Categories
GET /keap/crm/rest/v2/tags/categoriesCreate Tag Category
POST /keap/crm/rest/v2/tags/categories
Content-Type: application/json
{
"name": "Customer Segments"
}List Tasks
GET /keap/crm/rest/v2/tasksGet Task
GET /keap/crm/rest/v2/tasks/{task_id}Create Task
POST /keap/crm/rest/v2/tasks
Content-Type: application/json
{
"title": "Follow up call",
"description": "Call to discuss proposal",
"due_date": "2026-02-15T10:00:00Z",
"contact": {"id": "9"}
}Update Task
PATCH /keap/crm/rest/v2/tasks/{task_id}
Content-Type: application/json
{
"completed": true
}Delete Task
DELETE /keap/crm/rest/v2/tasks/{task_id}List Opportunities
GET /keap/crm/rest/v2/opportunitiesGet Opportunity
GET /keap/crm/rest/v2/opportunities/{opportunity_id}Create Opportunity
POST /keap/crm/rest/v2/opportunities
Content-Type: application/json
{
"opportunity_title": "New Deal",
"contact": {"id": "9"},
"stage": {"id": "1"},
"estimated_close_date": "2026-03-01"
}Update Opportunity
PATCH /keap/crm/rest/v2/opportunities/{opportunity_id}
Content-Type: application/json
{
"stage": {"id": "2"}
}Delete Opportunity
DELETE /keap/crm/rest/v2/opportunities/{opportunity_id}List Opportunity Stages
GET /keap/crm/rest/v2/opportunities/stagesList Orders
GET /keap/crm/rest/v2/ordersGet Order
GET /keap/crm/rest/v2/orders/{order_id}Create Order
POST /keap/crm/rest/v2/orders
Content-Type: application/json
{
"contact": {"id": "9"},
"order_date": "2026-02-08",
"order_title": "Product Order"
}Add Order Item
POST /keap/crm/rest/v2/orders/{order_id}/items
Content-Type: application/json
{
"product": {"id": "1"},
"quantity": 2
}List Products
GET /keap/crm/rest/v2/productsGet Product
GET /keap/crm/rest/v2/products/{product_id}Create Product
POST /keap/crm/rest/v2/products
Content-Type: application/json
{
"product_name": "Consulting Package",
"product_price": 500.00,
"product_short_description": "1 hour consulting"
}List Campaigns
GET /keap/crm/rest/v2/campaignsGet Campaign
GET /keap/crm/rest/v2/campaigns/{campaign_id}List Campaign Sequences
GET /keap/crm/rest/v2/campaigns/{campaign_id}/sequencesAdd Contacts to Sequence
POST /keap/crm/rest/v2/campaigns/{campaign_id}/sequences/{sequence_id}:addContacts
Content-Type: application/json
{
"contact_ids": ["1", "2"]
}Remove Contacts from Sequence
POST /keap/crm/rest/v2/campaigns/{campaign_id}/sequences/{sequence_id}:removeContacts
Content-Type: application/json
{
"contact_ids": ["1", "2"]
}List Emails
GET /keap/crm/rest/v2/emailsGet Email
GET /keap/crm/rest/v2/emails/{email_id}Send Email
POST /keap/crm/rest/v2/emails:send
Content-Type: application/json
{
"contacts": [{"id": "9"}],
"subject": "Hello",
"html_content": "<p>Email body</p>"
}List Users
GET /keap/crm/rest/v2/usersGet User
GET /keap/crm/rest/v2/users/{user_id}List Subscriptions
GET /keap/crm/rest/v2/subscriptionsGet Subscription
GET /keap/crm/rest/v2/subscriptions/{subscription_id}List Affiliates
GET /keap/crm/rest/v2/affiliatesGet Affiliate
GET /keap/crm/rest/v2/affiliates/{affiliate_id}List Automations
GET /keap/crm/rest/v2/automationsGet Automation
GET /keap/crm/rest/v2/automations/{automation_id}