Automations
Pulse automations: what starts each one, and the messages it sends.
List automation runs
The runs of your brokerage's automations, newest first, or oldest first with updated_since. A run is one automation working through its steps for one deal or contact.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
automation_idReturn only the runs of this automation.
deal_idReturn only the runs about this deal. Send deal_id or contact_id, not both.
contact_idReturn only the runs about this contact.
statusReturn only runs in this state.
List automation runs › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
List an automation run's steps
What each step of the run did or will do, in the order they fall due, as the run panel in BrokerPlus shows it: the draft it wrote, the message it sent, the task it made, or why it was skipped or stopped.
path Parameters
idResource id.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
List an automation run's steps › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Start an automation run now
Starts a scheduled run now instead of at its time, the same as Run now on the run in BrokerPlus. Its steps can reach the client. The response is the run. Read what each step did with GET /v1/automation-runs/{id}/steps. A key with the no_sending limit gets 403.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Start an automation run now › Responses
Success
successAlways true on a successful response.
The requested record.
Cancel an automation run
Removes a scheduled run before it starts. This only stops messages. A run that has started is not cancelled here; the broker stops its steps in BrokerPlus.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Cancel an automation run › Responses
Success
successAlways true on a successful response.
The requested record.
Read the automation catalog
Everything an automation can be built from, as the app's builder offers it: each event that starts one and its config, each kind of step and its params, who a message can go to, the fields a check can compare (with the brokerage's custom fields), and the node kinds of a graph. Read it before you build an automation.
Read the automation catalog › Responses
Success
successAlways true on a successful response.
The requested record.
List automations
The Pulse automations on the broker's board, each with its steps in order. A step with ask_before_sending set files a draft for the broker to review instead of sending.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
typeOnly automations started by this event, for example stage.transitioned.
enabledSend true for automations that run, or false for those that are off.
List automations › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Create an automation
Builds an automation from any event and any steps in the catalog, through the same checks as the app's builder. Send steps for a list, or graph for branches and waits. The automation is saved OFF. Turn it on with POST /automations/{id}/turn-on. A step that reaches a client asks before sending unless you set ask_before_sending to false. A step that writes its own words to a client is refused: save the words as a template and send the template.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Create an automation › Request Body
nameThe name the broker sees.
descriptionWhat the automation is for.
typeThe event that starts it: a trigger type from GET /v1/automations/catalog. The default is stage.transitioned. With a graph, the graph's trigger node names the type.
The settings of the event, as the catalog lists them for the type. For example { "stageId": "..." } on stage.transitioned, or { "statuses": ["approved"] } on deal.status_changed.
stage_idA short form of config.stageId on stage.transitioned: the stage that starts it, from GET /v1/pipelines. Null or absent starts it on each stage change.
Checks a deal or contact must pass before it starts. A group: { "match": "all", "rules": [{ "field": "deal.loanAmount", "op": "gte", "value": 500000 }] }. The catalog lists the fields and the operators.
repeat_policyonce_per_subject runs one time for each deal or contact. The default depends on the type.
anchor_offset_daysOn a type that starts from a date: the days from that date that it starts. A negative number is before.
canvas_idThe canvas group to file it under. Null is no group.
The steps, in the order they run. Send steps or graph.
A drawing with branches, waits or repeats, in the shape GET /v1/automations/{id} returns. Send steps or graph, not both.
Create an automation › Responses
Success
successAlways true on a successful response.
The requested record.
Delete an automation
Turns the automation off and removes it from the board. Steps still waiting in its runs do not run. Its runs stay readable through GET /automation-runs.
path Parameters
idResource id.
Delete an automation › Responses
Success
successAlways true on a successful response.
The requested record.
Change an automation
Send only what you change. steps or graph replaces every step. A change to what the automation does (its event settings, checks, or steps) turns it OFF, A change to only name, description, or canvas_id leaves it on or off as it was.
path Parameters
idResource id.
Change an automation › Request Body
nameThe name the broker sees.
descriptionWhat the automation is for.
The settings of the event, as the catalog lists them for the type. For example { "stageId": "..." } on stage.transitioned, or { "statuses": ["approved"] } on deal.status_changed.
stage_idA short form of config.stageId on stage.transitioned: the stage that starts it, from GET /v1/pipelines. Null or absent starts it on each stage change.
Checks a deal or contact must pass before it starts. A group: { "match": "all", "rules": [{ "field": "deal.loanAmount", "op": "gte", "value": 500000 }] }. The catalog lists the fields and the operators.
repeat_policyonce_per_subject runs one time for each deal or contact. The default depends on the type.
anchor_offset_daysOn a type that starts from a date: the days from that date that it starts. A negative number is before.
canvas_idThe canvas group to file it under. Null is no group.
The steps, in the order they run. Send steps or graph.
A drawing with branches, waits or repeats, in the shape GET /v1/automations/{id} returns. Send steps or graph, not both.
Change an automation › Responses
Success
successAlways true on a successful response.
The requested record.
Duplicate an automation
Makes a copy named <name> copy with the same event, checks and steps. The copy is saved OFF.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Duplicate an automation › Responses
Success
successAlways true on a successful response.
The requested record.
Turn an automation on
Turns the automation on now, the same as its switch in BrokerPlus. The response is 200 with the automation. When the automation can message clients (can_message_clients: true), its steps can reach clients from now on, and a key with the no_sending limit is refused. An automation that is already on answers 200 with no change.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Turn an automation on › Responses
Success
successAlways true on a successful response.
The requested record.
Turn an automation off
Turns the automation off now. Steps still waiting in its runs do not run. An automation that is already off answers with no change.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Turn an automation off › Responses
Success
successAlways true on a successful response.
The requested record.
List canvas groups
The groups the automations are filed under on the automation canvas, in the order BrokerPlus shows them: the highest position first. Only the groups of the broker's own teams are listed. An automation with no group has canvas_id null.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
List canvas groups › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Create a canvas group
Makes a group on the automation canvas, on the broker's active team, the same as New group in BrokerPlus. File an automation in it with canvas_id on POST /v1/automations or PATCH /v1/automations/{id}.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Create a canvas group › Request Body
nameThe group's name, 1 to 120 characters.
descriptionWhat the group is for, up to 500 characters. Null clears it.
positionWhere the group sits, 0 to 1000; the highest is at the top. Leave it out to put a new group on top.
Create a canvas group › Responses
Success
successAlways true on a successful response.
The requested record.
Delete a canvas group
Deletes the group and every automation in it, the same as Delete group in BrokerPlus. The automations are turned off first, and their run history stays.
path Parameters
idResource id.
Delete a canvas group › Responses
Success
successAlways true on a successful response.
The requested record.
Update a canvas group
Renames, describes or moves a group. It does not change its automations or turn anything on or off.
path Parameters
idResource id.
Update a canvas group › Request Body
nameThe group's name, 1 to 120 characters.
descriptionWhat the group is for, up to 500 characters. Null clears it.
positionWhere the group sits, 0 to 1000; the highest is at the top. Leave it out to put a new group on top.
Update a canvas group › Responses
Success
successAlways true on a successful response.
The requested record.
Turn a canvas group on
Turns on every automation in the group now, the same as the group's switch in BrokerPlus. results has a line for each automation. If an automation that is off can message clients and your key has the no_sending limit, nothing changes.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Turn a canvas group on › Responses
Success
successAlways true on a successful response.
The requested record.
Turn a canvas group off
Turns off every automation in the group now, in one change.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Turn a canvas group off › Responses
Success
successAlways true on a successful response.
The requested record.
List automation stops
The clients that automations do not message, newest first: Stop automated outreach on a contact in BrokerPlus, and the block list in Pulse. A stage that stops automated messages, and a client tag automation, can also make or join a stop.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only stops made at or after it, in created_at order and then id order, oldest first. A stop never changes: it is made, and later lifted. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the created_at and id of the last row you read. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
contact_idReturn only the stops on this client.
deal_idReturn only the stops for this deal.
automation_typeReturn only the stops that hold back this kind of automation, including the stops on every automation.
List automation stops › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Stop automations messaging a client
Stops automations from messaging a client, the same as Stop automated outreach in BrokerPlus. Without deal_id and automation_types it stops every automation for every deal of the client, and takes them off the equity reports they get a copy of as a realtor. This only stops messages, so it happens now. A second call with the same body changes nothing. Lift a stop with POST /automations/stops/{id}/lift.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Stop automations messaging a client › Request Body
contact_idThe client to stop messaging. Find it with GET /v1/contacts.
deal_idStop only for this deal of the client. Leave it out or send null for every deal.
automation_typesStop only these kinds of automation, as type values from GET /v1/automations/catalog. Leave it out or send null for every automation.
Stop automations messaging a client › Responses
Success
successAlways true on a successful response.
The requested record.
Lift an automation stop
Lifts the stop now, so automations can message the client again. The response is 200, and the stop is gone. A stop that a stage holds (held_by_stage) comes back while the client's deal stays in that stage. A key with the no_sending limit is refused.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Lift an automation stop › Responses
Success
successAlways true on a successful response.
The requested record.