Menu

Reference

Setter

Setter: 9 operations (setter.variants.list, setter.variants.create, setter.variants.get, setter.variants.update, setter.variants.archive, setter.variants.promote, setter.variants.publish, setter.variants.start_test, setter.variants.versions.list).

MethodPathOperation
GET/v1/reps/{rep_id}/setter/variantssetter.variants.list
POST/v1/reps/{rep_id}/setter/variantssetter.variants.create
GET/v1/setter/variants/{variant_id}setter.variants.get
PATCH/v1/setter/variants/{variant_id}setter.variants.update
POST/v1/setter/variants/{variant_id}/archivesetter.variants.archive
POST/v1/setter/variants/{variant_id}/promotesetter.variants.promote
POST/v1/setter/variants/{variant_id}/publishsetter.variants.publish
POST/v1/setter/variants/{variant_id}/start-testsetter.variants.start_test
GET/v1/setter/variants/{variant_id}/versionssetter.variants.versions.list

setter.variants.list

GET/v1/reps/{rep_id}/setter/variants

List a rep's AI Setter variants, newest first.

Archived variants are left out, as in the app's editor; read one by id to see it.

Operation idsetter.variants.list
Scopessetter:read
Rate class`read`
IdempotencyNot applicable
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
rep_idstringyesA rep (connected Instagram account) id.

Response 200

FieldTypeRequiredDescription
dataobject[]yes

Errors

StatusCodeWhen
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`REP_NOT_FOUND_404`The rep does not exist in this workspace, is archived, or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl "https://api.dmhero.ai/v1/reps/string/setter/variants" \
  -H "Authorization: Bearer $DMHERO_API_KEY"
JSON Schema
Response 200
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "rep_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "testing",
              "live",
              "archived"
            ]
          },
          "traffic_weight": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "version": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Bumped by every change to a content field."
          },
          "name": {
            "type": "string"
          },
          "goal_text": {
            "type": "string"
          },
          "goal_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "goal_tool": {
            "type": "string",
            "enum": [
              "manual",
              "calendly",
              "cal_com",
              "google_calendar"
            ]
          },
          "goal_link_status": {
            "type": "string",
            "enum": [
              "none",
              "connected"
            ]
          },
          "key_elements_text": {
            "type": "string"
          },
          "avoid_text": {
            "type": "string"
          },
          "offer_text": {
            "type": "string"
          },
          "icp_text": {
            "type": "string"
          },
          "qualifying_text": {
            "type": "string"
          },
          "disqualify_text": {
            "type": "string"
          },
          "tone_text": {
            "type": "string"
          },
          "style_text": {
            "type": "string"
          },
          "language_text": {
            "type": "string"
          },
          "phrases_text": {
            "type": "string"
          },
          "rep_name": {
            "type": "string"
          },
          "rep_role": {
            "type": "string"
          },
          "reaction_frequency": {
            "type": "string",
            "enum": [
              "off",
              "rare",
              "normal",
              "frequent"
            ]
          },
          "reaction_emojis": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reaction_rules": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "emoji": {
                  "type": "string",
                  "description": "One of the allowed reaction emoji."
                },
                "when": {
                  "type": "string",
                  "description": "The moment it fits, in the operator's words. At most 200 characters."
                }
              },
              "required": [
                "emoji",
                "when"
              ],
              "additionalProperties": false
            }
          },
          "message_style": {
            "type": "string",
            "enum": [
              "single",
              "multi"
            ]
          },
          "objection_mode": {
            "type": "string",
            "enum": [
              "stop",
              "rebut"
            ]
          },
          "handoff_text": {
            "type": "string"
          },
          "handoff_on_uncertain": {
            "type": "boolean"
          },
          "few_shot": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "prospect": {
                  "type": "string",
                  "description": "A prospect message. At most 600 characters."
                },
                "reply": {
                  "type": "string",
                  "description": "The ideal reply. At most 600 characters."
                }
              },
              "required": [
                "prospect",
                "reply"
              ],
              "additionalProperties": false
            }
          },
          "objections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "objection": {
                  "type": "string",
                  "description": "A known objection. At most 600 characters."
                },
                "approach": {
                  "type": "string",
                  "description": "How to handle it. At most 600 characters."
                }
              },
              "required": [
                "objection",
                "approach"
              ],
              "additionalProperties": false
            }
          },
          "booking_config": {
            "type": "object",
            "properties": {
              "duration_min": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "buffer_min": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "working_hours": {
                "type": "object",
                "properties": {
                  "mon": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  },
                  "tue": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  },
                  "wed": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  },
                  "thu": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  },
                  "fri": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  },
                  "sat": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  },
                  "sun": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "prefixItems": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "items": false,
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                    }
                  }
                },
                "required": [
                  "mon",
                  "tue",
                  "wed",
                  "thu",
                  "fri",
                  "sat",
                  "sun"
                ],
                "additionalProperties": false
              },
              "min_notice_min": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "allow_same_day": {
                "type": "boolean"
              },
              "horizon_days": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "hard_cap_days": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "Never offered or booked beyond it. Fixed at 60; read-only."
              },
              "max_per_day": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "meeting_form": {
                "type": "string",
                "enum": [
                  "meet",
                  "phone"
                ]
              },
              "event_title": {
                "type": "string"
              },
              "event_description": {
                "type": "string"
              },
              "prospect_tz_mode": {
                "type": "string",
                "enum": [
                  "campaign",
                  "fixed"
                ]
              },
              "prospect_tz": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "target_calendar_id": {
                "type": "string"
              },
              "busy_calendar_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "duration_min",
              "buffer_min",
              "working_hours",
              "min_notice_min",
              "allow_same_day",
              "horizon_days",
              "hard_cap_days",
              "max_per_day",
              "meeting_form",
              "event_title",
              "event_description",
              "prospect_tz_mode",
              "prospect_tz",
              "target_calendar_id",
              "busy_calendar_ids"
            ],
            "additionalProperties": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          }
        },
        "required": [
          "id",
          "rep_id",
          "status",
          "traffic_weight",
          "version",
          "name",
          "goal_text",
          "goal_link",
          "goal_tool",
          "goal_link_status",
          "key_elements_text",
          "avoid_text",
          "offer_text",
          "icp_text",
          "qualifying_text",
          "disqualify_text",
          "tone_text",
          "style_text",
          "language_text",
          "phrases_text",
          "rep_name",
          "rep_role",
          "reaction_frequency",
          "reaction_emojis",
          "reaction_rules",
          "message_style",
          "objection_mode",
          "handoff_text",
          "handoff_on_uncertain",
          "few_shot",
          "objections",
          "booking_config",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}

setter.variants.create

POST/v1/reps/{rep_id}/setter/variants

Create a draft AI Setter variant for a rep.

The variant starts as a draft; publish it, or start an A/B test with it, to serve conversations. Fields left out take the editor's defaults.

Operation idsetter.variants.create
Scopessetter:write
Rate class`write`
Idempotency`Idempotency-Key` accepted
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
rep_idstringyesA rep (connected Instagram account) id.

Request body

FieldTypeRequiredDescription
namestringyesShown in the variant list. 1 to 80 characters.
avoid_textstringno
booking_configobjectnoThe Google Calendar booking rules, read only while goal_tool is google_calendar. Sent whole: a field left out takes its default.
disqualify_textstringno
few_shotobject[]noAt most 3; a fully blank row is dropped.
goal_linkstring | nullnoThe CTA link; null or empty clears it. At most 2000 characters.
goal_link_status"none" | "connected"no
goal_textstringnoScript: the goal. Every text field takes up to 4000 characters.
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"noHow the CTA is fulfilled.
handoff_on_uncertainbooleannoAlso hand off when the model is unsure.
handoff_textstringnoWhen to hand a live thread to a human.
icp_textstringno
key_elements_textstringno
language_textstringno
message_style"single" | "multi"noOne message, or several short bubbles.
objection_mode"stop" | "rebut"noOn a soft objection: stop, or rebut and persuade.
objectionsobject[]noAt most 6; a fully blank row is dropped.
offer_textstringno
phrases_textstringno
qualifying_textstringno
reaction_emojisstring[]noAt most 4, from the allowed reaction emoji.
reaction_frequency"off" | "rare" | "normal" | "frequent"no
reaction_rulesobject[]noAt most 6.
rep_namestringno
rep_rolestringno
style_textstringno
tone_textstringno
traffic_weightintegernoA/B share, 0 to 100. start_test is the usual way to set it. On a testing variant it must be at least 1 and keep the rep's testing weights within 100, else 400 traffic_weight_invalid or traffic_weight_sum_exceeded; on any other status it is stored and serves nothing until start_test sets it again.. -9007199254740991 to 9007199254740991

Response 201

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
400`VALIDATION_FAILED_400`A field is missing or outside the editor's limits. fields maps each field path (booking_config.<field> for the booking rules) to the reason, e.g. text_too_long, out_of_range, traffic_weight_sum_exceeded.
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
403`GOOGLE_CALENDAR_NOT_ENABLED_403`Booking in Google Calendar is not enabled for this organization, and the call would move the variant onto goal_tool google_calendar or change the booking rules of a variant on it.
404`REP_NOT_FOUND_404`The rep does not exist in this workspace, is archived, or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl -X POST "https://api.dmhero.ai/v1/reps/string/setter/variants" \
  -H "Authorization: Bearer $DMHERO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
JSON Schema
Request body
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Shown in the variant list. 1 to 80 characters."
    },
    "goal_text": {
      "type": "string",
      "description": "Script: the goal. Every text field takes up to 4000 characters."
    },
    "goal_link": {
      "description": "The CTA link; null or empty clears it. At most 2000 characters.",
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ],
      "description": "How the CTA is fulfilled."
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "At most 4, from the allowed reaction emoji."
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ]
      },
      "description": "At most 6."
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ],
      "description": "One message, or several short bubbles."
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ],
      "description": "On a soft objection: stop, or rebut and persuade."
    },
    "handoff_text": {
      "type": "string",
      "description": "When to hand a live thread to a human."
    },
    "handoff_on_uncertain": {
      "type": "boolean",
      "description": "Also hand off when the model is unsure."
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ]
      },
      "description": "At most 3; a fully blank row is dropped."
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ]
      },
      "description": "At most 6; a fully blank row is dropped."
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "description": "Meeting length in minutes, 10 to 240. Default 45.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "description": "Minutes kept free around a meeting, 0 to 120. Default 0.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "description": "Up to 4 non-overlapping intervals per day; at least one day must have hours. Default Monday to Friday 09:00 to 17:00.",
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "additionalProperties": false
        },
        "min_notice_min": {
          "description": "Minimum notice in minutes, 0 to 10080. Default 180.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "description": "Default true.",
          "type": "boolean"
        },
        "horizon_days": {
          "description": "Days ahead offered first, 1 to 60. Default 14.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "description": "Read-only. Accepted only as 60, so a config read back can be sent again unchanged.",
          "type": "number",
          "const": 60
        },
        "max_per_day": {
          "description": "Bookings per day, 1 to 50; null for no limit. Default null.",
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "description": "Default meet.",
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "description": "Prospect-visible event title, at most 200 characters.",
          "type": "string"
        },
        "event_description": {
          "description": "Prospect-visible event description, at most 2000 characters.",
          "type": "string"
        },
        "prospect_tz_mode": {
          "description": "campaign: the campaign's time zone; fixed: prospect_tz, which is then required.",
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "description": "An IANA time zone.",
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "description": "The calendar events land in. Default primary.",
          "type": "string"
        },
        "busy_calendar_ids": {
          "description": "Calendars checked for conflicts, at most 10 counting the target, which is always added.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "description": "The Google Calendar booking rules, read only while goal_tool is google_calendar. Sent whole: a field left out takes its default."
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "A/B share, 0 to 100. start_test is the usual way to set it. On a testing variant it must be at least 1 and keep the rep's testing weights within 100, else 400 traffic_weight_invalid or traffic_weight_sum_exceeded; on any other status it is stored and serves nothing until start_test sets it again."
    }
  },
  "required": [
    "name"
  ]
}
Response 201
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.get

GET/v1/setter/variants/{variant_id}

Read one AI Setter variant, any status.

Operation idsetter.variants.get
Scopessetter:read
Rate class`read`
IdempotencyNot applicable
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Response 200

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl "https://api.dmhero.ai/v1/setter/variants/string" \
  -H "Authorization: Bearer $DMHERO_API_KEY"
JSON Schema
Response 200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.update

PATCH/v1/setter/variants/{variant_id}

Change any field of an AI Setter variant.

Send only the fields to change. A change to a content field snapshots the previous content into the version history and bumps version; a patch whose content equals the stored content cuts no version (updated_at still moves, and the change is audited). An empty patch, or a booking_config equal to the stored one alone, writes nothing. booking_config is replaced whole. A live variant serves its new content from its next reply.

Operation idsetter.variants.update
Scopessetter:write
Rate class`write`
IdempotencyNot applicable
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Request body

FieldTypeRequiredDescription
avoid_textstringno
booking_configobjectnoThe Google Calendar booking rules, read only while goal_tool is google_calendar. Sent whole: a field left out takes its default.
disqualify_textstringno
few_shotobject[]noAt most 3; a fully blank row is dropped.
goal_linkstring | nullnoThe CTA link; null or empty clears it. At most 2000 characters.
goal_link_status"none" | "connected"no
goal_textstringnoScript: the goal. Every text field takes up to 4000 characters.
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"noHow the CTA is fulfilled.
handoff_on_uncertainbooleannoAlso hand off when the model is unsure.
handoff_textstringnoWhen to hand a live thread to a human.
icp_textstringno
key_elements_textstringno
language_textstringno
message_style"single" | "multi"noOne message, or several short bubbles.
namestringnoShown in the variant list. 1 to 80 characters.
objection_mode"stop" | "rebut"noOn a soft objection: stop, or rebut and persuade.
objectionsobject[]noAt most 6; a fully blank row is dropped.
offer_textstringno
phrases_textstringno
qualifying_textstringno
reaction_emojisstring[]noAt most 4, from the allowed reaction emoji.
reaction_frequency"off" | "rare" | "normal" | "frequent"no
reaction_rulesobject[]noAt most 6.
rep_namestringno
rep_rolestringno
style_textstringno
tone_textstringno
traffic_weightintegernoA/B share, 0 to 100. start_test is the usual way to set it. On a testing variant it must be at least 1 and keep the rep's testing weights within 100, else 400 traffic_weight_invalid or traffic_weight_sum_exceeded; on any other status it is stored and serves nothing until start_test sets it again.. -9007199254740991 to 9007199254740991

Response 200

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
400`VALIDATION_FAILED_400`A field is missing or outside the editor's limits. fields maps each field path (booking_config.<field> for the booking rules) to the reason, e.g. text_too_long, out_of_range, traffic_weight_sum_exceeded.
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
403`GOOGLE_CALENDAR_NOT_ENABLED_403`Booking in Google Calendar is not enabled for this organization, and the call would move the variant onto goal_tool google_calendar or change the booking rules of a variant on it.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl -X PATCH "https://api.dmhero.ai/v1/setter/variants/string" \
  -H "Authorization: Bearer $DMHERO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Variant B",
  "goal_text": "Book a 30 minute intro call.",
  "booking_config": {
    "duration_min": 30,
    "working_hours": {
      "mon": [
        [
          "09:00",
          "17:00"
        ]
      ],
      "wed": [
        [
          "09:00",
          "12:00"
        ]
      ]
    }
  }
}'
JSON Schema
Request body
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Shown in the variant list. 1 to 80 characters."
    },
    "goal_text": {
      "type": "string",
      "description": "Script: the goal. Every text field takes up to 4000 characters."
    },
    "goal_link": {
      "description": "The CTA link; null or empty clears it. At most 2000 characters.",
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ],
      "description": "How the CTA is fulfilled."
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "At most 4, from the allowed reaction emoji."
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ]
      },
      "description": "At most 6."
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ],
      "description": "One message, or several short bubbles."
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ],
      "description": "On a soft objection: stop, or rebut and persuade."
    },
    "handoff_text": {
      "type": "string",
      "description": "When to hand a live thread to a human."
    },
    "handoff_on_uncertain": {
      "type": "boolean",
      "description": "Also hand off when the model is unsure."
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ]
      },
      "description": "At most 3; a fully blank row is dropped."
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ]
      },
      "description": "At most 6; a fully blank row is dropped."
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "description": "Meeting length in minutes, 10 to 240. Default 45.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "description": "Minutes kept free around a meeting, 0 to 120. Default 0.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "description": "Up to 4 non-overlapping intervals per day; at least one day must have hours. Default Monday to Friday 09:00 to 17:00.",
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "additionalProperties": false
        },
        "min_notice_min": {
          "description": "Minimum notice in minutes, 0 to 10080. Default 180.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "description": "Default true.",
          "type": "boolean"
        },
        "horizon_days": {
          "description": "Days ahead offered first, 1 to 60. Default 14.",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "description": "Read-only. Accepted only as 60, so a config read back can be sent again unchanged.",
          "type": "number",
          "const": 60
        },
        "max_per_day": {
          "description": "Bookings per day, 1 to 50; null for no limit. Default null.",
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "description": "Default meet.",
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "description": "Prospect-visible event title, at most 200 characters.",
          "type": "string"
        },
        "event_description": {
          "description": "Prospect-visible event description, at most 2000 characters.",
          "type": "string"
        },
        "prospect_tz_mode": {
          "description": "campaign: the campaign's time zone; fixed: prospect_tz, which is then required.",
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "description": "An IANA time zone.",
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "description": "The calendar events land in. Default primary.",
          "type": "string"
        },
        "busy_calendar_ids": {
          "description": "Calendars checked for conflicts, at most 10 counting the target, which is always added.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "description": "The Google Calendar booking rules, read only while goal_tool is google_calendar. Sent whole: a field left out takes its default."
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "A/B share, 0 to 100. start_test is the usual way to set it. On a testing variant it must be at least 1 and keep the rep's testing weights within 100, else 400 traffic_weight_invalid or traffic_weight_sum_exceeded; on any other status it is stored and serves nothing until start_test sets it again."
    }
  }
}
Response 200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.archive

POST/v1/setter/variants/{variant_id}/archive

Retire a variant, or stop its A/B test.

The live variant cannot be archived: publish another one, or switch the rep's setter off, first.

Operation idsetter.variants.archive
Scopessetter:write
Rate class`write`
Idempotency`Idempotency-Key` accepted
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Response 200

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.
409`SETTER_VARIANT_LIVE_409`The variant is live. Publish another variant, or switch the rep's setter off, before archiving it.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl -X POST "https://api.dmhero.ai/v1/setter/variants/string/archive" \
  -H "Authorization: Bearer $DMHERO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
JSON Schema
Response 200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.promote

POST/v1/setter/variants/{variant_id}/promote

End the rep's A/B test with this variant as the winner.

The variant becomes the only live one; the previous live variant and the other challengers are archived. Conversations already assigned to a loser keep it.

Operation idsetter.variants.promote
Scopessetter:write
Rate class`write`
Idempotency`Idempotency-Key` accepted
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Response 200

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl -X POST "https://api.dmhero.ai/v1/setter/variants/string/promote" \
  -H "Authorization: Bearer $DMHERO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
JSON Schema
Response 200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.publish

POST/v1/setter/variants/{variant_id}/publish

Make a variant the rep's live variant.

The rep's previous live variant is archived in the same transaction. Testing challengers keep running.

Operation idsetter.variants.publish
Scopessetter:write
Rate class`write`
Idempotency`Idempotency-Key` accepted
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Response 200

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl -X POST "https://api.dmhero.ai/v1/setter/variants/string/publish" \
  -H "Authorization: Bearer $DMHERO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
JSON Schema
Response 200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.start_test

POST/v1/setter/variants/{variant_id}/start-test

Put a variant into the rep's A/B test as a challenger.

The variant serves traffic_weight percent of new conversations and the live variant takes the rest. Calling it again on a testing variant resets its weight. The live variant cannot be a challenger, and a rep's testing weights stay within 100. Archive the variant to stop its test.

Operation idsetter.variants.start_test
Scopessetter:write
Rate class`write`
Idempotency`Idempotency-Key` accepted
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Request body

FieldTypeRequiredDescription
traffic_weightintegeryesThe challenger's share, 1 to 100.. -9007199254740991 to 9007199254740991

Response 200

FieldTypeRequiredDescription
avoid_textstringyes
booking_configobjectyes
created_atdate-timeyes
disqualify_textstringyes
few_shotobject[]yes
goal_linkstring | nullyes
goal_link_status"none" | "connected"yes
goal_textstringyes
goal_tool"manual" | "calendly" | "cal_com" | "google_calendar"yes
handoff_on_uncertainbooleanyes
handoff_textstringyes
icp_textstringyes
iduuidyes
key_elements_textstringyes
language_textstringyes
message_style"single" | "multi"yes
namestringyes
objection_mode"stop" | "rebut"yes
objectionsobject[]yes
offer_textstringyes
phrases_textstringyes
qualifying_textstringyes
reaction_emojisstring[]yes
reaction_frequency"off" | "rare" | "normal" | "frequent"yes
reaction_rulesobject[]yes
rep_iduuidyes
rep_namestringyes
rep_rolestringyes
status"draft" | "testing" | "live" | "archived"yes
style_textstringyes
tone_textstringyes
traffic_weightintegeryes-9007199254740991 to 9007199254740991
updated_atdate-timeyes
versionintegeryesBumped by every change to a content field.. -9007199254740991 to 9007199254740991

Errors

StatusCodeWhen
400`VALIDATION_FAILED_400`A field is missing or outside the editor's limits. fields maps each field path (booking_config.<field> for the booking rules) to the reason, e.g. text_too_long, out_of_range, traffic_weight_sum_exceeded.
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl -X POST "https://api.dmhero.ai/v1/setter/variants/string/start-test" \
  -H "Authorization: Bearer $DMHERO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "traffic_weight": 1
}'
JSON Schema
Request body
{
  "type": "object",
  "properties": {
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "The challenger's share, 1 to 100."
    }
  },
  "required": [
    "traffic_weight"
  ]
}
Response 200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "rep_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "testing",
        "live",
        "archived"
      ]
    },
    "traffic_weight": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Bumped by every change to a content field."
    },
    "name": {
      "type": "string"
    },
    "goal_text": {
      "type": "string"
    },
    "goal_link": {
      "type": [
        "string",
        "null"
      ]
    },
    "goal_tool": {
      "type": "string",
      "enum": [
        "manual",
        "calendly",
        "cal_com",
        "google_calendar"
      ]
    },
    "goal_link_status": {
      "type": "string",
      "enum": [
        "none",
        "connected"
      ]
    },
    "key_elements_text": {
      "type": "string"
    },
    "avoid_text": {
      "type": "string"
    },
    "offer_text": {
      "type": "string"
    },
    "icp_text": {
      "type": "string"
    },
    "qualifying_text": {
      "type": "string"
    },
    "disqualify_text": {
      "type": "string"
    },
    "tone_text": {
      "type": "string"
    },
    "style_text": {
      "type": "string"
    },
    "language_text": {
      "type": "string"
    },
    "phrases_text": {
      "type": "string"
    },
    "rep_name": {
      "type": "string"
    },
    "rep_role": {
      "type": "string"
    },
    "reaction_frequency": {
      "type": "string",
      "enum": [
        "off",
        "rare",
        "normal",
        "frequent"
      ]
    },
    "reaction_emojis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reaction_rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "One of the allowed reaction emoji."
          },
          "when": {
            "type": "string",
            "description": "The moment it fits, in the operator's words. At most 200 characters."
          }
        },
        "required": [
          "emoji",
          "when"
        ],
        "additionalProperties": false
      }
    },
    "message_style": {
      "type": "string",
      "enum": [
        "single",
        "multi"
      ]
    },
    "objection_mode": {
      "type": "string",
      "enum": [
        "stop",
        "rebut"
      ]
    },
    "handoff_text": {
      "type": "string"
    },
    "handoff_on_uncertain": {
      "type": "boolean"
    },
    "few_shot": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "prospect": {
            "type": "string",
            "description": "A prospect message. At most 600 characters."
          },
          "reply": {
            "type": "string",
            "description": "The ideal reply. At most 600 characters."
          }
        },
        "required": [
          "prospect",
          "reply"
        ],
        "additionalProperties": false
      }
    },
    "objections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "objection": {
            "type": "string",
            "description": "A known objection. At most 600 characters."
          },
          "approach": {
            "type": "string",
            "description": "How to handle it. At most 600 characters."
          }
        },
        "required": [
          "objection",
          "approach"
        ],
        "additionalProperties": false
      }
    },
    "booking_config": {
      "type": "object",
      "properties": {
        "duration_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "buffer_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "working_hours": {
          "type": "object",
          "properties": {
            "mon": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "tue": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "wed": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "thu": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "fri": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sat": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            },
            "sun": {
              "type": "array",
              "items": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2,
                "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
              }
            }
          },
          "required": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "additionalProperties": false
        },
        "min_notice_min": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "allow_same_day": {
          "type": "boolean"
        },
        "horizon_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hard_cap_days": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Never offered or booked beyond it. Fixed at 60; read-only."
        },
        "max_per_day": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "meeting_form": {
          "type": "string",
          "enum": [
            "meet",
            "phone"
          ]
        },
        "event_title": {
          "type": "string"
        },
        "event_description": {
          "type": "string"
        },
        "prospect_tz_mode": {
          "type": "string",
          "enum": [
            "campaign",
            "fixed"
          ]
        },
        "prospect_tz": {
          "type": [
            "string",
            "null"
          ]
        },
        "target_calendar_id": {
          "type": "string"
        },
        "busy_calendar_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "duration_min",
        "buffer_min",
        "working_hours",
        "min_notice_min",
        "allow_same_day",
        "horizon_days",
        "hard_cap_days",
        "max_per_day",
        "meeting_form",
        "event_title",
        "event_description",
        "prospect_tz_mode",
        "prospect_tz",
        "target_calendar_id",
        "busy_calendar_ids"
      ],
      "additionalProperties": false
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "rep_id",
    "status",
    "traffic_weight",
    "version",
    "name",
    "goal_text",
    "goal_link",
    "goal_tool",
    "goal_link_status",
    "key_elements_text",
    "avoid_text",
    "offer_text",
    "icp_text",
    "qualifying_text",
    "disqualify_text",
    "tone_text",
    "style_text",
    "language_text",
    "phrases_text",
    "rep_name",
    "rep_role",
    "reaction_frequency",
    "reaction_emojis",
    "reaction_rules",
    "message_style",
    "objection_mode",
    "handoff_text",
    "handoff_on_uncertain",
    "few_shot",
    "objections",
    "booking_config",
    "created_at",
    "updated_at"
  ],
  "additionalProperties": false
}

setter.variants.versions.list

GET/v1/setter/variants/{variant_id}/versions

List a variant's earlier contents, newest version first.

The current content is on the variant itself, not in this list.

Operation idsetter.variants.versions.list
Scopessetter:read
Rate class`read`
IdempotencyNot applicable
KeysDeveloper keys
RepsA key restricted to reps sees only data of its own reps

Path parameters

NameTypeRequiredDescription
variant_idstringyesA setter variant id.

Query parameters

NameTypeRequiredDescription
limitintegerno1 to 200, default 50
cursorstringno1 to 2048 characters

Response 200

FieldTypeRequiredDescription
dataobject[]yes
has_morebooleanyes
next_cursorstring | nullyes

Errors

StatusCodeWhen
403`API_SETTER_NOT_IN_PLAN_403`The organization's plan does not include the AI Setter.
404`SETTER_VARIANT_NOT_FOUND_404`The variant does not exist, or its rep is not in this workspace or is outside the key's rep restriction.

Every operation can also answer the shared errors: authentication, scopes, rate limits and validation.

Example

bash
curl "https://api.dmhero.ai/v1/setter/variants/string/versions" \
  -H "Authorization: Bearer $DMHERO_API_KEY"
JSON Schema
Response 200
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "variant_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "version": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "The version the variant had before the edit."
          },
          "config": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "goal_text": {
                "type": "string"
              },
              "goal_link": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "goal_tool": {
                "type": "string"
              },
              "goal_link_status": {
                "type": "string"
              },
              "key_elements_text": {
                "type": "string"
              },
              "avoid_text": {
                "type": "string"
              },
              "offer_text": {
                "type": "string"
              },
              "icp_text": {
                "type": "string"
              },
              "qualifying_text": {
                "type": "string"
              },
              "disqualify_text": {
                "type": "string"
              },
              "tone_text": {
                "type": "string"
              },
              "style_text": {
                "type": "string"
              },
              "language_text": {
                "type": "string"
              },
              "phrases_text": {
                "type": "string"
              },
              "rep_name": {
                "type": "string"
              },
              "rep_role": {
                "type": "string"
              },
              "reaction_frequency": {
                "type": "string"
              },
              "reaction_emojis": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "reaction_rules": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "emoji": {
                      "type": "string",
                      "description": "One of the allowed reaction emoji."
                    },
                    "when": {
                      "type": "string",
                      "description": "The moment it fits, in the operator's words. At most 200 characters."
                    }
                  },
                  "required": [
                    "emoji",
                    "when"
                  ],
                  "additionalProperties": false
                }
              },
              "message_style": {
                "type": "string"
              },
              "objection_mode": {
                "type": "string"
              },
              "handoff_text": {
                "type": "string"
              },
              "handoff_on_uncertain": {
                "type": "boolean"
              },
              "few_shot": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "prospect": {
                      "type": "string",
                      "description": "A prospect message. At most 600 characters."
                    },
                    "reply": {
                      "type": "string",
                      "description": "The ideal reply. At most 600 characters."
                    }
                  },
                  "required": [
                    "prospect",
                    "reply"
                  ],
                  "additionalProperties": false
                }
              },
              "objections": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "objection": {
                      "type": "string",
                      "description": "A known objection. At most 600 characters."
                    },
                    "approach": {
                      "type": "string",
                      "description": "How to handle it. At most 600 characters."
                    }
                  },
                  "required": [
                    "objection",
                    "approach"
                  ],
                  "additionalProperties": false
                }
              },
              "booking_config": {
                "type": "object",
                "properties": {
                  "duration_min": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "buffer_min": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "working_hours": {
                    "type": "object",
                    "properties": {
                      "mon": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      },
                      "tue": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      },
                      "wed": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      },
                      "thu": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      },
                      "fri": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      },
                      "sat": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      },
                      "sun": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "prefixItems": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "string"
                            }
                          ],
                          "items": false,
                          "minItems": 2,
                          "maxItems": 2,
                          "description": "[from, to] as HH:MM in the owner's (the target calendar's) time zone; to may be 24:00."
                        }
                      }
                    },
                    "required": [
                      "mon",
                      "tue",
                      "wed",
                      "thu",
                      "fri",
                      "sat",
                      "sun"
                    ],
                    "additionalProperties": false
                  },
                  "min_notice_min": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "allow_same_day": {
                    "type": "boolean"
                  },
                  "horizon_days": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "hard_cap_days": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "Never offered or booked beyond it. Fixed at 60; read-only."
                  },
                  "max_per_day": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "meeting_form": {
                    "type": "string",
                    "enum": [
                      "meet",
                      "phone"
                    ]
                  },
                  "event_title": {
                    "type": "string"
                  },
                  "event_description": {
                    "type": "string"
                  },
                  "prospect_tz_mode": {
                    "type": "string",
                    "enum": [
                      "campaign",
                      "fixed"
                    ]
                  },
                  "prospect_tz": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "target_calendar_id": {
                    "type": "string"
                  },
                  "busy_calendar_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "duration_min",
                  "buffer_min",
                  "working_hours",
                  "min_notice_min",
                  "allow_same_day",
                  "horizon_days",
                  "hard_cap_days",
                  "max_per_day",
                  "meeting_form",
                  "event_title",
                  "event_description",
                  "prospect_tz_mode",
                  "prospect_tz",
                  "target_calendar_id",
                  "busy_calendar_ids"
                ],
                "additionalProperties": false
              }
            },
            "additionalProperties": false,
            "description": "A field the snapshot predates is absent."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          }
        },
        "required": [
          "id",
          "variant_id",
          "version",
          "config",
          "created_at"
        ],
        "additionalProperties": false
      }
    },
    "has_more": {
      "type": "boolean"
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "data",
    "has_more",
    "next_cursor"
  ],
  "additionalProperties": false
}
Setter | DM Hero Developers