REST API reference
REsimpli API
15 endpoints for REsimpli. Each one is a POST with a JSON body, called with your API key.
- Base URL
- https://cotlet.dev/api/v1/resimpli
- Connects with
- Your own REsimpli account
- Integration page
- REsimpli
| Endpoint | Access | Description |
|---|---|---|
| list_leads | read | Leads with property address, pipeline, status, assignee and tags. |
| get_lead | read | Full lead: contacts, property, status, notes, tags, tasks and recent activity. |
| list_pipelines | read | Your pipelines and the statuses in each, with IDs, as set up in your account. |
| list_automations | read | Your lead automations, including drips, with name and whether each is on. |
| get_skip_trace_results | read | Phone numbers and emails found for a lead. |
| create_lead | write | New seller lead with contact details and property address. |
| update_lead_status | write | Move a lead to another status, or to a status in another pipeline. |
| add_lead_note | write | Add a note to the lead, visible to your team. |
| tag_lead | write | Add or remove tags on a lead. |
| assign_lead | write | Assign a lead to a team member. |
| create_task | write | Set up a task on a lead with a due time and assignee. |
| skip_trace_lead | write | Run a skip trace on the lead's property owner. |
| enroll_lead_in_automation | write | Add a lead to an automation; its steps can text, email or mail the seller. |
| remove_lead_from_automation | write | Stop a running automation for one lead. Steps not yet sent are skipped. |
| send_sms | write | Text a lead from your REsimpli campaign number. Shows in the lead's inbox. |
List leads
readPOST https://cotlet.dev/api/v1/resimpli/list_leads
Lists leads from your account, newest first. Filter by search text, pipeline, status IDs or tag. Pages hold up to 100 leads; raise page for the next one. Use lead_id from each item in the other tools.
Parameters
| Name | Type | Description |
|---|---|---|
| search | string | Name, phone, email or property address. |
| pipeline_id | string | Pipeline ID from list_pipelines. |
| status_ids | string[] | Status IDs from list_pipelines. |
| tag | string | Only leads with this tag. |
| page | integer | Page number. Default: 1. |
| limit | integer | 1 to 100. Default: 25. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/list_leads \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("resimpli", "list_leads") const result = await cotlet.call('resimpli', 'list_leads'); cotlet call resimpli list_leads Example response
{
"leads": [
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"name": "Dana Whitfield",
"property_address": "12 Oak St, Columbus, OH 43215",
"pipeline": "Acquisitions",
"status": "Contact Made",
"assignee": "Sam Rivera",
"tags": [
"D4D October"
]
}
],
"page": 1,
"has_more": true
} Get lead
readPOST https://cotlet.dev/api/v1/resimpli/get_lead
Returns one lead with contacts, property, current status, notes, tags, open tasks, the automations it is in and recent activity. Use it before changing a lead so your agent sees what your team already did.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/get_lead \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2"}' result = client.call("resimpli", "get_lead", {"lead_id":"lead_8c41d2"}) const result = await cotlet.call('resimpli', 'get_lead', {"lead_id":"lead_8c41d2"}); cotlet call resimpli get_lead --data '{"lead_id":"lead_8c41d2"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"name": "Dana Whitfield",
"phones": [
"6145550142"
],
"property_address": "12 Oak St, Columbus, OH 43215",
"pipeline": "Acquisitions",
"status": "Contact Made",
"assignee": {
"user_id": "u_41",
"name": "Sam Rivera"
},
"tags": [
"D4D October"
],
"notes": [
{
"text": "Open to an offer this week.",
"created_at": "2026-10-08T15:10:00-04:00"
}
],
"tasks": [],
"automations": []
} List pipelines
readPOST https://cotlet.dev/api/v1/resimpli/list_pipelines
Returns your pipelines in the order set in your account, each with its statuses in order. Names and IDs are yours, not defaults. Use the IDs in list_leads and update_lead_status.
Parameters
No parameters.
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/list_pipelines \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("resimpli", "list_pipelines") const result = await cotlet.call('resimpli', 'list_pipelines'); cotlet call resimpli list_pipelines Example response
{
"pipelines": [
{
"pipeline_id": "pl_acq",
"name": "Acquisitions",
"statuses": [
{
"status_id": "64a0d5b2c91e7f0012ab33a1",
"name": "Contact Made"
},
{
"status_id": "64a0d5b2c91e7f0012ab33c6",
"name": "Under Contract"
}
]
}
]
} List automations
readPOST https://cotlet.dev/api/v1/resimpli/list_automations
Returns the automations in your account with their name and on or off state. Pass automation_id to enroll_lead_in_automation.
Parameters
No parameters.
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/list_automations \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("resimpli", "list_automations") const result = await cotlet.call('resimpli', 'list_automations'); cotlet call resimpli list_automations Example response
{
"automations": [
{
"automation_id": "65b7e0a3d2c4f1009e8a1b52",
"name": "Reactivation",
"active": true
}
]
} POST https://cotlet.dev/api/v1/resimpli/get_skip_trace_results
Returns the phone numbers and emails the skip traces on this lead found. A lead with no skip trace returns an empty list. It does not start a skip trace; skip_trace_lead does.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/get_skip_trace_results \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2"}' result = client.call("resimpli", "get_skip_trace_results", {"lead_id":"lead_8c41d2"}) const result = await cotlet.call('resimpli', 'get_skip_trace_results', {"lead_id":"lead_8c41d2"}); cotlet call resimpli get_skip_trace_results --data '{"lead_id":"lead_8c41d2"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"results": [
{
"phones": [
"6145550142",
"6145550177"
],
"emails": [
"dana.w@example.com"
]
}
]
} Create lead
writePOST https://cotlet.dev/api/v1/resimpli/create_lead
Creates a lead and returns its ID and the status it starts in. It reaches no one. It runs without asking by default, and delete the lead in REsimpli to undo it.
Parameters
| Name | Type | Description |
|---|---|---|
| first_name required | string | Seller first name. |
| last_name | string | Seller last name. |
| phone required | string | 10-digit phone number. |
| string | Seller email. | |
| property_address | string | Full property address. |
| marketing_campaign_id | string | Campaign the lead came from. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/create_lead \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"first_name":"first name","phone":"phone"}' result = client.call("resimpli", "create_lead", {"first_name":"first name","phone":"phone"}) const result = await cotlet.call('resimpli', 'create_lead', {"first_name":"first name","phone":"phone"}); cotlet call resimpli create_lead --data '{"first_name":"first name","phone":"phone"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20499",
"name": "Dana Whitfield",
"property_address": "12 Oak St, Columbus, OH 43215",
"status": "New Lead",
"created_at": "2026-10-11T09:12:00-04:00"
} Update lead status
writePOST https://cotlet.dev/api/v1/resimpli/update_lead_status
Moves one lead to another status and returns the new and previous status. Pass pipeline_id to move it to a status in another pipeline. It reaches no one directly and runs without asking by default; one more call moves the lead back.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| status_id required | string | Status ID from list_pipelines. |
| pipeline_id | string | Target pipeline, if it changes. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/update_lead_status \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"66f1c2a9e4b0a1d3c8f20417","status_id":"64a0d5b2c91e7f0012ab33c6"}' result = client.call("resimpli", "update_lead_status", {"lead_id":"66f1c2a9e4b0a1d3c8f20417","status_id":"64a0d5b2c91e7f0012ab33c6"}) const result = await cotlet.call('resimpli', 'update_lead_status', {"lead_id":"66f1c2a9e4b0a1d3c8f20417","status_id":"64a0d5b2c91e7f0012ab33c6"}); cotlet call resimpli update_lead_status --data '{"lead_id":"66f1c2a9e4b0a1d3c8f20417","status_id":"64a0d5b2c91e7f0012ab33c6"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"property_address": "12 Oak St, Columbus, OH 43215",
"pipeline": "Acquisitions",
"status": "Under Contract",
"previous_status": "Contact Made",
"updated_at": "2026-10-11T14:32:05-04:00"
} Add lead note
writePOST https://cotlet.dev/api/v1/resimpli/add_lead_note
Adds a note to the lead's history under your name. Your team sees it; the seller does not. It runs without asking by default.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| text required | string | Note text. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/add_lead_note \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2","text":"text"}' result = client.call("resimpli", "add_lead_note", {"lead_id":"lead_8c41d2","text":"text"}) const result = await cotlet.call('resimpli', 'add_lead_note', {"lead_id":"lead_8c41d2","text":"text"}); cotlet call resimpli add_lead_note --data '{"lead_id":"lead_8c41d2","text":"text"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"note_id": "n_9d21",
"text": "Offer accepted at $142,000.",
"created_at": "2026-10-11T14:33:10-04:00"
} Tag lead
writePOST https://cotlet.dev/api/v1/resimpli/tag_lead
Adds and removes tags on one lead in a single call and returns the lead's tags after the change. It runs without asking by default and one more call reverses it.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| add | string[] | Tags to add. |
| remove | string[] | Tags to remove. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/tag_lead \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2"}' result = client.call("resimpli", "tag_lead", {"lead_id":"lead_8c41d2"}) const result = await cotlet.call('resimpli', 'tag_lead', {"lead_id":"lead_8c41d2"}); cotlet call resimpli tag_lead --data '{"lead_id":"lead_8c41d2"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20499",
"tags": [
"D4D October"
]
} Assign lead
writePOST https://cotlet.dev/api/v1/resimpli/assign_lead
Assigns the lead to one team member and replaces the current assignee. The call fails if the user_id is not on your team. It runs without asking by default and one more call reassigns it.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| user_id required | string | Team member ID from get_lead. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/assign_lead \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2","user_id":"user_8c41d2"}' result = client.call("resimpli", "assign_lead", {"lead_id":"lead_8c41d2","user_id":"user_8c41d2"}) const result = await cotlet.call('resimpli', 'assign_lead', {"lead_id":"lead_8c41d2","user_id":"user_8c41d2"}); cotlet call resimpli assign_lead --data '{"lead_id":"lead_8c41d2","user_id":"user_8c41d2"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"assignee": {
"user_id": "u_41",
"name": "Sam Rivera"
}
} Create task
writePOST https://cotlet.dev/api/v1/resimpli/create_task
Creates a task on the lead with a title, due time and assignee, and returns its ID. The due time needs a time zone. The assignee is you unless you name someone else. It runs without asking by default.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| title required | string | What to do. |
| due_at required | datetime | ISO 8601 with time zone. |
| assignee_id | string | Team member. Default: you. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/create_task \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2","title":"title","due_at":"2026-10-01T09:00:00Z"}' result = client.call("resimpli", "create_task", {"lead_id":"lead_8c41d2","title":"title","due_at":"2026-10-01T09:00:00Z"}) const result = await cotlet.call('resimpli', 'create_task', {"lead_id":"lead_8c41d2","title":"title","due_at":"2026-10-01T09:00:00Z"}); cotlet call resimpli create_task --data '{"lead_id":"lead_8c41d2","title":"title","due_at":"2026-10-01T09:00:00Z"}' Example response
{
"task_id": "t_5530",
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"title": "Call back about 12 Oak St",
"due_at": "2026-10-12T10:00:00-04:00",
"assignee": "You"
} POST https://cotlet.dev/api/v1/resimpli/skip_trace_lead
Starts a skip trace for the lead in your REsimpli account and returns once it is queued; read the outcome with get_skip_trace_results. REsimpli's own skip tracing pricing applies. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/skip_trace_lead \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2"}' result = client.call("resimpli", "skip_trace_lead", {"lead_id":"lead_8c41d2"}) const result = await cotlet.call('resimpli', 'skip_trace_lead', {"lead_id":"lead_8c41d2"}); cotlet call resimpli skip_trace_lead --data '{"lead_id":"lead_8c41d2"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"status": "queued",
"requested_at": "2026-10-11T09:20:00-04:00"
} POST https://cotlet.dev/api/v1/resimpli/enroll_lead_in_automation
Adds one lead to an automation and returns its state. The automation's steps can text, email or mail the seller on the schedule you set in REsimpli. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| automation_id required | string | Automation ID from list_automations. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/enroll_lead_in_automation \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"66f1c2a9e4b0a1d3c8f20417","automation_id":"65b7e0a3d2c4f1009e8a1b52"}' result = client.call("resimpli", "enroll_lead_in_automation", {"lead_id":"66f1c2a9e4b0a1d3c8f20417","automation_id":"65b7e0a3d2c4f1009e8a1b52"}) const result = await cotlet.call('resimpli', 'enroll_lead_in_automation', {"lead_id":"66f1c2a9e4b0a1d3c8f20417","automation_id":"65b7e0a3d2c4f1009e8a1b52"}); cotlet call resimpli enroll_lead_in_automation --data '{"lead_id":"66f1c2a9e4b0a1d3c8f20417","automation_id":"65b7e0a3d2c4f1009e8a1b52"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"automation_id": "65b7e0a3d2c4f1009e8a1b52",
"status": "enrolled"
} POST https://cotlet.dev/api/v1/resimpli/remove_lead_from_automation
Stops the automation for one lead. Steps already sent stay sent; the rest are skipped. It reaches no one, so it runs without asking by default.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| automation_id required | string | Automation ID from get_lead. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/remove_lead_from_automation \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2","automation_id":"automation_8c41d2"}' result = client.call("resimpli", "remove_lead_from_automation", {"lead_id":"lead_8c41d2","automation_id":"automation_8c41d2"}) const result = await cotlet.call('resimpli', 'remove_lead_from_automation', {"lead_id":"lead_8c41d2","automation_id":"automation_8c41d2"}); cotlet call resimpli remove_lead_from_automation --data '{"lead_id":"lead_8c41d2","automation_id":"automation_8c41d2"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"automation_id": "65b7e0a3d2c4f1009e8a1b52",
"status": "removed"
} POST https://cotlet.dev/api/v1/resimpli/send_sms
Sends a text to one lead from your REsimpli number, and the message shows in the lead's conversation. Use to_phone to pick one of the lead's numbers. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| lead_id required | string | Lead ID from list_leads. |
| body required | string | Message text. |
| to_phone | string | Which of the lead's numbers. Default: primary. |
Request
curl -X POST https://cotlet.dev/api/v1/resimpli/send_sms \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lead_id":"lead_8c41d2","body":"body"}' result = client.call("resimpli", "send_sms", {"lead_id":"lead_8c41d2","body":"body"}) const result = await cotlet.call('resimpli', 'send_sms', {"lead_id":"lead_8c41d2","body":"body"}); cotlet call resimpli send_sms --data '{"lead_id":"lead_8c41d2","body":"body"}' Example response
{
"lead_id": "66f1c2a9e4b0a1d3c8f20417",
"message_id": "sms_7712",
"to": "6145550142",
"status": "sent",
"sent_at": "2026-10-11T09:25:00-04:00"
}