For survey creation, start with survey_authoring_help. Call it empty for the generated index, then fetch focused paths such as quick-start, questions/scale or logic/visible-if. The older compact authoring pack remains an API endpoint, but it is no longer advertised as an MCP tool.
Start
4 toolsget_started
Explain what Dayalogs Surveys is and the recommended MCP workflow for creating and previewing schema-first surveys.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_capabilities
Return Dayalogs API capabilities, granted scopes, reserved contexts and endpoint map.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_mcp_changes
Return Dayalogs MCP release notes and tool/API changes by version.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_mcp_backlog
Return MCP-facing planned backlog items and target versions.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}Authoring
7 toolssurvey_authoring_help
Return focused Dayalogs survey authoring help. Call with no arguments for the generated index, with path for a folder or file, or with keywords to find relevant help.
View input JSON schema
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Optional help path. Empty input returns the generated index. Examples: quick-start, questions/scale, questions/scale/help.md."
},
"keyword": {
"type": "string",
"description": "Optional single keyword search. Examples: smiley, csat, contact, endings."
},
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional keyword list. When present, matching files must contain all terms."
}
},
"required": []
}get_survey_schema
Return the live Dayalogs survey JSON schema contract. This is large; for drafting surveys, call survey_authoring_help first and use the full schema only for exact field-level constraints.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_survey_interface_texts
Return supported respondent UI locales and the public survey.renderer.* keys that can be overridden with interface_literals.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}validate_survey
Validate a Dayalogs survey definition without importing it.
View input JSON schema
{
"type": "object",
"properties": {
"survey": {
"type": "object",
"description": "Dayalogs survey definition object."
},
"definition": {
"type": "object",
"description": "Alias for survey."
},
"survey_json": {
"type": "string",
"description": "Dayalogs survey definition encoded as a JSON string."
}
},
"required": []
}get_theme_schema
Return the live Dayalogs survey theme/style JSON schema contract.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_theme_authoring_pack
Return theme/style authoring guidance, schema and examples as structured JSON.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}validate_theme
Validate a Dayalogs survey theme/style config without persisting it.
View input JSON schema
{
"type": "object",
"properties": {
"config": {
"type": "object",
"description": "Dayalogs survey theme/style config object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Dayalogs survey theme/style config encoded as a JSON string."
}
},
"required": []
}Survey read
9 toolslist_surveys
List current surveys in the authenticated account.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_survey
Return one current survey definition by slug.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_definition
Return the canonical JSON definition for one current survey, with validation/import contract endpoints.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}list_survey_versions
List all persisted versions for a survey slug.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_version
Return a specific persisted survey version and its definition.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"description": "Survey version number.",
"minimum": 1
}
},
"required": [
"slug",
"version"
]
}get_survey_stats
Return response, version and link stats for a survey.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_quality
Return quality data for all survey versions or optionally for one concrete version.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"description": "Optional concrete survey version. Omit to aggregate all versions.",
"minimum": 1
}
},
"required": [
"slug"
]
}get_survey_cost_estimate
Return response unit price and maximum known cost estimate for a survey. If no hard cap exists, returns unbounded=true plus scenario costs.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_flow
Return a rendered flow summary for one current survey by slug.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}Survey edit
6 toolsimport_survey
Validate and import a Dayalogs survey definition with explicit intent. Use mode=create only for a new logical survey. Use mode=update only after reading the existing survey, and pass its stable survey_id plus current version_id as expected_version_id. Omitting intent returns guidance without mutating data. Importing edits the definition only; use get_preview_url during authoring and do not start collection unless the user explicitly asks.
create, updateView input JSON schema
{
"type": "object",
"properties": {
"survey": {
"type": "object",
"description": "Dayalogs survey definition object."
},
"definition": {
"type": "object",
"description": "Alias for survey."
},
"survey_json": {
"type": "string",
"description": "Dayalogs survey definition encoded as a JSON string."
},
"mode": {
"type": "string",
"enum": [
"create",
"update"
],
"description": "Explicit import intent. Use create for a new logical survey or update for a new version of an existing survey. Omit only to request non-mutating intent guidance."
},
"survey_id": {
"type": "integer",
"minimum": 1,
"description": "Stable logical survey id. Required when mode=update; obtain it from get_survey or list_surveys."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed before editing. Required when mode=update and used as an optimistic concurrency guard."
},
"validate": {
"type": "boolean",
"description": "Whether to validate before importing. Defaults to true."
}
},
"required": []
}update_survey_settings
Update safe top-level survey settings and create a validated new version. expected_version_id is mandatory. On version_conflict, explain the intervening actor and changes to the user before reconciling; never retry by only replacing the expected id.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"title": {
"type": "string",
"description": "Optional new internal/source title. Use literals if the source-locale survey.title literal should differ."
},
"source_locale": {
"type": "string",
"description": "Optional two-letter source locale."
},
"supported_locales": {
"type": "array",
"description": "Optional full supported locale list. Must include source_locale after validation.",
"items": {
"type": "string"
}
},
"interface_locales": {
"type": "object",
"description": "Optional mapping from content locale to respondent UI locale, for example {\"ru\":\"en\"}. Values: en, fr, de, nl, it, es, ca, pt, eu, gl.",
"additionalProperties": {
"type": "string"
}
},
"interface_literals": {
"type": [
"object",
"null"
],
"description": "Optional per-survey overrides for public respondent UI text, keyed by content locale and public survey.renderer.* translation key.",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"settings": {
"type": [
"object",
"null"
],
"description": "Optional respondent runtime settings. Use {\"navigation\":{\"allow_back\":false}} to disable respondent back navigation, or {\"quality\":{\"enabled_challenges\":{\"honeypot\":true}}} to control quality scoring inputs.",
"additionalProperties": false,
"properties": {
"navigation": {
"type": "object",
"additionalProperties": false,
"properties": {
"allow_back": {
"type": "boolean",
"description": "Whether respondents can navigate back to previous pages. Defaults to true."
}
}
},
"quality": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled_challenges": {
"type": "object",
"description": "Optional per-survey quality challenge toggles. Disable individual checks without removing the quality layer entirely.",
"additionalProperties": false,
"properties": {
"time": {
"type": "boolean"
},
"paste_open_answers": {
"type": "boolean"
},
"focus_away": {
"type": "boolean"
},
"honeypot": {
"type": "boolean"
},
"client_signal": {
"type": "boolean"
},
"answer_patterns": {
"type": "boolean"
},
"repeated_ip": {
"type": "boolean"
},
"repeated_environment": {
"type": "boolean"
}
}
}
}
}
}
},
"intro": {
"type": "object",
"description": "Optional complete intro object. Partial intro patches are not merged; pass the complete intro shape."
},
"privacy_notice": {
"type": [
"object",
"null"
],
"description": "Optional complete privacy notice object, or null to remove it."
},
"literals": {
"type": [
"object",
"null"
],
"description": "Optional locale-keyed literal map, or null to remove literals."
},
"partial_response_ttl_minutes": {
"type": [
"integer",
"null"
],
"description": "Optional inactivity timeout in minutes for resumable partial attempts, or null to reset to default.",
"minimum": 15
}
},
"required": [
"slug",
"expected_version_id"
]
}recalculate_survey_quality
Force a quality recalculation across all versions or optionally for one concrete version.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"description": "Optional concrete survey version. Omit to aggregate all versions.",
"minimum": 1
}
},
"required": [
"slug"
]
}patch_survey_fragment
Replace a survey fragment using the mandatory expected_version_id concurrency guard. On version_conflict, explain the intervening actor and changes to the user before reconciling; never retry by only replacing the expected id.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"kind": {
"type": "string",
"description": "Fragment kind accepted by the Dayalogs flow editor, for example header, block, question or ending."
},
"fragment_id": {
"type": "string"
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"fragment": {
"type": "object"
},
"json": {
"type": "string",
"description": "Alternative to fragment: JSON object string for the replacement fragment."
}
},
"required": [
"slug",
"kind",
"fragment_id",
"expected_version_id"
]
}append_to_survey
Append or insert a new top-level block using the mandatory expected_version_id concurrency guard. Conflicts must be explained and reconciled with the user.
start, endView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"block": {
"type": "object",
"description": "New top-level block object to insert at the survey root. The block may contain nested blocks and question references; pass new question definitions in questions."
},
"questions": {
"type": "array",
"description": "Optional new question definitions to add to the survey question catalog before inserting the block.",
"items": {
"type": "object"
}
},
"position": {
"type": "string",
"enum": [
"start",
"end"
],
"description": "Insert at the beginning or end of the top-level survey blocks. Defaults to end."
},
"after_block_id": {
"type": "string",
"description": "Optional existing top-level block id after which the new block should be inserted."
},
"before_block_id": {
"type": "string",
"description": "Optional existing top-level block id before which the new block should be inserted."
}
},
"required": [
"slug",
"expected_version_id",
"block"
]
}append_to_block
Append or insert a block item using the mandatory expected_version_id concurrency guard. Conflicts must be explained and reconciled with the user.
start, endView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"block_id": {
"type": "string",
"description": "Existing block id that will receive the new item."
},
"item": {
"type": "object",
"description": "Flow item to insert: a nested block object or {type:\"question\", question:\"q1\"}. Use block.presentation.mode=\"grouped\" when direct questions must share one screen."
},
"questions": {
"type": "array",
"description": "Optional new question definitions to add to the survey question catalog before inserting the item.",
"items": {
"type": "object"
}
},
"position": {
"type": "string",
"enum": [
"start",
"end"
],
"description": "Insert at the beginning or end of the target block items. Defaults to end."
},
"after_item_id": {
"type": "string",
"description": "Optional existing item id/question id after which the new item should be inserted."
},
"before_item_id": {
"type": "string",
"description": "Optional existing item id/question id before which the new item should be inserted."
}
},
"required": [
"slug",
"expected_version_id",
"block_id",
"item"
]
}Translations
4 toolsget_translation_source
Return source-locale literal keys and text for a survey, optionally with an existing target translation for one locale.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"target_locale": {
"type": "string",
"description": "Optional target locale to include existing target text in each returned entry."
},
"locale": {
"type": "string",
"description": "Alias for target_locale."
}
},
"required": [
"slug"
]
}list_survey_translations
Return translation status by locale, including missing counts and available target locales.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"include_entries": {
"type": "boolean",
"description": "Include source/target entries for each locale. Defaults to false."
},
"include_literals": {
"type": "boolean",
"description": "Alias for include_entries."
}
},
"required": [
"slug"
]
}validate_survey_translation
Validate a complete locale translation map without saving it.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"locale": {
"type": "string",
"description": "Two-letter target locale, for example es or en."
},
"target_locale": {
"type": "string",
"description": "Alias for locale."
},
"source_hash": {
"type": "string",
"description": "Optional source hash returned by get_translation_source. If present, Dayalogs rejects stale saves."
},
"translations": {
"type": "object",
"description": "Complete translation map keyed by literal key, for example {\"survey.title\":\"...\"}."
},
"literals": {
"type": "object",
"description": "Alias for translations."
},
"entries": {
"type": "array",
"description": "Alternative translation shape: array of {key,target} entries returned by get_translation_source.",
"items": {
"type": "object"
}
}
},
"required": [
"slug",
"locale"
]
}save_survey_translation
Save a complete locale translation map into the current survey without creating a new survey version.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"locale": {
"type": "string",
"description": "Two-letter target locale, for example es or en. This value is also used in the save URL."
},
"target_locale": {
"type": "string",
"description": "Alias for locale."
},
"source_hash": {
"type": "string",
"description": "Optional source hash returned by get_translation_source. If present, Dayalogs rejects stale saves."
},
"translations": {
"type": "object",
"description": "Complete translation map keyed by literal key, for example {\"survey.title\":\"...\"}."
},
"literals": {
"type": "object",
"description": "Alias for translations."
},
"entries": {
"type": "array",
"description": "Alternative translation shape: array of {key,target} entries returned by get_translation_source.",
"items": {
"type": "object"
}
}
},
"required": [
"slug",
"locale"
]
}Preview & design
5 toolsget_preview_url
Create and return admin and public preview URLs for a current survey. The public preview does not persist responses. During authoring, share public_preview_url with the user, not respondent access links.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"locale": {
"type": "string",
"description": "Optional locale, for example ca, es or en."
},
"ttl_minutes": {
"type": "integer",
"description": "Public preview lifetime between 15 and 10080 minutes.",
"minimum": 15,
"maximum": 10080
}
},
"required": [
"slug"
]
}get_survey_design
Return the respondent-facing design settings for a survey, including assigned style and logo metadata.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}update_survey_design
Assign a base style, ready custom style, or clear the explicit style for a survey.
left, center, rightleft, center, rightinherit, override, disabledinherit, override, disabledView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"style": {
"type": [
"string",
"object",
"null"
],
"description": "Style assignment: none/default, base:{key}, theme:{id}, or {type:\"base\", key:\"...\"} / {type:\"theme\", id:123}."
},
"style_selection": {
"type": [
"string",
"object",
"null"
],
"description": "Alias for style."
},
"base_key": {
"type": "string",
"description": "Assign a locked base style by key."
},
"style_base_key": {
"type": "string",
"description": "Alias for base_key."
},
"theme_id": {
"type": "integer",
"minimum": 1,
"description": "Assign a ready custom style by id."
},
"style_theme_id": {
"type": "integer",
"minimum": 1,
"description": "Alias for theme_id."
},
"clear_style": {
"type": "boolean",
"description": "Clear the explicit survey style and fall back to the default."
},
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Survey-level logo alignment override."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
},
"clear_logo_alignment": {
"type": "boolean",
"description": "Clear the survey-level logo alignment override and inherit the account default."
},
"logo_mode": {
"type": "string",
"enum": [
"inherit",
"override",
"disabled"
],
"description": "Survey logo behavior: inherit the account/default logo, use the uploaded survey logo, or hide the logo."
},
"header_logo_mode": {
"type": "string",
"enum": [
"inherit",
"override",
"disabled"
],
"description": "Alias for logo_mode."
},
"disable_logo": {
"type": "boolean",
"description": "Hide the header logo on this survey."
},
"hide_logo": {
"type": "boolean",
"description": "Alias for disable_logo."
},
"inherit_logo": {
"type": "boolean",
"description": "Return to the account/default header logo."
},
"clear_logo_override": {
"type": "boolean",
"description": "Alias for inherit_logo."
}
},
"required": [
"slug"
]
}upload_survey_logo
Upload a survey-specific header logo override from base64 content and optional alignment.
left, center, rightleft, center, rightView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"content_base64": {
"type": "string",
"description": "Base64 image content. Data URLs are accepted."
},
"filename": {
"type": "string",
"description": "Original filename for metadata."
},
"mime_type": {
"type": "string",
"description": "image/png, image/jpeg or image/webp. Optional when content_base64 is a data URL."
},
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Optional logo alignment to save with the upload."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
}
},
"required": [
"slug",
"content_base64"
]
}delete_survey_logo
Remove the survey-specific header logo override, falling back to account branding or Dayalogs default.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}Publishing
2 toolsgo_live_survey
Start response collection for the current survey version. This publishes real respondent access and requires confirm_publish=true after the user explicitly asks to start collection/go live. Without confirmation, the tool returns a preview URL and does not change collection state.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"confirm_publish": {
"type": "boolean",
"description": "Must be true to start real response collection. Set it only after the user explicitly asks to start collection, publish, or go live."
}
},
"required": [
"slug"
]
}stop_survey_collection
Stop response collection for the current survey version. Existing links remain configured, but respondent entry shows a friendly unavailable page.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}Quotas
5 toolslist_survey_quotas
List survey-level quotas plus read-only link and link set quota summaries and condition source metadata.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_quota
Create a survey-level quota with label, limit, optional count, active flag and Dayalogs condition JSON.
View input JSON schema
{
"type": "object",
"properties": {
"quota_id": {
"type": "string",
"description": "Optional stable quota id. Defaults to a slugified label."
},
"id": {
"type": "string",
"description": "Alias for quota_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Quota display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Quota threshold."
},
"count": {
"type": "integer",
"minimum": 0,
"description": "Current accepted count. Optional; defaults to 0 on create."
},
"active": {
"type": "boolean",
"description": "Whether the quota is active. Defaults to true on create."
},
"condition": {
"type": "object",
"description": "Dayalogs condition JSON. Use {question, op, value}, {var, op, value}, groups {all:[...]}, {any:[...]}, or {not:{...}}. Operators are normalized to canonical forms such as eq, not_eq, contains, gt, gte, lt, lte, answered and not_answered."
},
"if": {
"type": "object",
"description": "Alias for condition."
},
"condition_json": {
"type": "string",
"description": "Alternative to condition: JSON object string."
},
"clear_condition": {
"type": "boolean",
"description": "On update, remove the quota condition and turn it into a total survey quota."
}
},
"required": [
"slug",
"label",
"limit"
]
}update_survey_quota
Update a survey-level quota label, limit, count, active flag or condition.
View input JSON schema
{
"type": "object",
"properties": {
"quota_id": {
"type": "string",
"description": "Survey-level quota id."
},
"id": {
"type": "string",
"description": "Alias for quota_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Quota display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Quota threshold."
},
"count": {
"type": "integer",
"minimum": 0,
"description": "Current accepted count. Optional; defaults to 0 on create."
},
"active": {
"type": "boolean",
"description": "Whether the quota is active. Defaults to true on create."
},
"condition": {
"type": "object",
"description": "Dayalogs condition JSON. Use {question, op, value}, {var, op, value}, groups {all:[...]}, {any:[...]}, or {not:{...}}. Operators are normalized to canonical forms such as eq, not_eq, contains, gt, gte, lt, lte, answered and not_answered."
},
"if": {
"type": "object",
"description": "Alias for condition."
},
"condition_json": {
"type": "string",
"description": "Alternative to condition: JSON object string."
},
"clear_condition": {
"type": "boolean",
"description": "On update, remove the quota condition and turn it into a total survey quota."
}
},
"required": [
"slug",
"quota_id"
]
}delete_survey_quota
Delete a survey-level quota. Link and link set quotas are managed through link and link set tools.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"quota_id": {
"type": "string",
"description": "Survey-level quota id."
},
"id": {
"type": "string",
"description": "Alias for quota_id."
}
},
"required": [
"slug",
"quota_id"
]
}set_survey_quota_version_inclusion
Include or exclude one survey version from effective quota progress without deleting responses or counters. Exclusion requires an explicit user confirmation and audit reason; without confirmation the tool returns a normal confirmation_required result and does not mutate quota state.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Concrete survey version number."
},
"included": {
"type": "boolean",
"description": "false excludes this version contribution; true restores it."
},
"quota_id": {
"type": "string",
"description": "Optional quota id. Omit to apply to every survey-level quota."
},
"reason": {
"type": "string",
"description": "Audit reason. Required when excluding a version."
},
"confirm_exclusion": {
"type": "boolean",
"description": "Must be true when included=false, after the user explicitly confirms excluding this version from quota progress."
}
},
"required": [
"slug",
"version",
"included"
]
}Responses
4 toolslist_survey_responses
List completed survey responses with pagination and optional version/date/link/ending filters.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": [
"string",
"integer"
],
"description": "current, all or a specific version number. Defaults to current."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number. Defaults to 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Responses per page. Defaults to 25, maximum 100."
},
"submitted_from": {
"type": "string",
"description": "Optional ISO-8601 lower datetime bound."
},
"submitted_to": {
"type": "string",
"description": "Optional ISO-8601 upper datetime bound."
},
"ending_key": {
"type": "string",
"description": "Optional ending key filter."
},
"share_link_id": {
"type": "integer",
"description": "Optional share-link id filter."
}
},
"required": [
"slug"
]
}get_survey_response
Return one completed survey response, including variables, share-link metadata and individual answer rows.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"response_id": {
"type": "integer",
"minimum": 1,
"description": "Survey response id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for response_id."
}
},
"required": [
"slug",
"response_id"
]
}delete_survey_response
Delete one completed survey response from the current account. Use carefully; this mirrors the admin delete action.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"response_id": {
"type": "integer",
"minimum": 1,
"description": "Survey response id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for response_id."
}
},
"required": [
"slug",
"response_id"
]
}export_survey_responses
Export survey responses in json, ndjson, csv, xlsx or sav. Binary exports are returned as base64 content.
json, ndjson, csv, xlsx, savcompleted, all, partialscode, aliasView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"format": {
"type": "string",
"enum": [
"json",
"ndjson",
"csv",
"xlsx",
"sav"
],
"description": "Export format. Defaults to json."
},
"versions": {
"type": [
"string",
"integer",
"array"
],
"items": {
"type": "integer"
},
"description": "current, all, one version number, comma-separated version numbers, or an array of version numbers. Defaults to current."
},
"version": {
"type": [
"string",
"integer"
],
"description": "Alias for versions when selecting a single version/current/all."
},
"attempts": {
"type": "string",
"enum": [
"completed",
"all",
"partials"
],
"description": "Whether to export completed responses, partial attempts, or both. Defaults to completed."
},
"partial_min_completion_percent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Optional minimum completion percent when partial attempts are included."
},
"partial_reached_target": {
"type": "string",
"description": "Optional question id/code/alias that a partial attempt must have reached."
},
"option_value_mode": {
"type": "string",
"enum": [
"code",
"alias"
],
"description": "Use option numeric codes or option aliases in tabular exports when aliases exist."
}
},
"required": [
"slug"
]
}Audiences
7 toolsget_audience_summary
Return account audience counts, top tags, saved segment summaries and recent imports.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}list_audience_contacts
Search and paginate contacts in the current account, optionally filtering by all provided tag slugs or names.
View input JSON schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Optional text search across name, email, phone, external id and UUID."
},
"query": {
"type": "string",
"description": "Alias for q."
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Optional tag slugs/names. Multiple tags are combined with AND. Accepts an array or comma-separated string."
},
"tag_slugs": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Alias for tags."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number. Defaults to 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Contacts per page. Defaults to 20, maximum 100."
}
},
"required": []
}get_audience_contact
Return one contact with tags, extra JSON, account-level data and survey-scoped data.
View input JSON schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"minimum": 1,
"description": "Audience contact id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for contact_id."
}
},
"required": [
"contact_id"
]
}create_audience_import
Create a JSON-first audience import session. The caller should transform Excel, CRM, Word or copied lists into normalized contact JSON before appending chunks.
View input JSON schema
{
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Human import name, for example \"Directors escoles juny 2026\"."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Optional import tags as array or comma-separated string. Dayalogs also adds an import-YYMMDD-HHMM tag automatically."
},
"tag_names": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Alias for tags."
},
"data_survey_slug": {
"type": "string",
"description": "Optional survey slug. When set, each contact data object is stored as survey-scoped @contact.survey_data for that survey."
},
"survey_slug": {
"type": "string",
"description": "Alias for data_survey_slug."
},
"source_metadata": {
"type": "object",
"description": "Optional metadata about the upstream source, such as CRM name, file title or agent trace id."
},
"metadata": {
"type": "object",
"description": "Alias for source_metadata."
}
},
"required": [
"label"
]
}append_audience_import_contacts
Append a chunk of normalized contact JSON to an open audience import. Uses chunk_id for idempotency and persists contacts immediately.
View input JSON schema
{
"type": "object",
"properties": {
"import_id": {
"type": "integer",
"minimum": 1,
"description": "Audience import id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for import_id."
},
"chunk_id": {
"type": "string",
"description": "Optional idempotency key. Re-sending the same chunk_id is a no-op."
},
"contacts": {
"type": "array",
"description": "Chunk of already-normalized Dayalogs contact JSON objects. Do not send raw Excel/CSV rows here.",
"items": {
"type": "object",
"description": "Normalized contact object. Canonical fields: external_id, email, phone, first_name, last_name, full_name, age, gender, tags, extra, data, survey_data.",
"properties": {
"external_id": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"full_name": {
"type": "string"
},
"age": {
"type": [
"integer",
"string"
]
},
"gender": {
"type": "string"
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
}
},
"extra": {
"type": "object",
"description": "Unmapped flat or structured metadata. Exposed under @contact.extra and merged into contact payload."
},
"data": {
"type": "object",
"description": "Structured account-level contact data, or survey-scoped data when the import session has data_survey_slug."
},
"survey_data": {
"type": "object",
"description": "Optional object keyed by survey slug, each value a JSON object."
}
}
}
},
"items": {
"type": "array",
"description": "Alias for contacts.",
"items": {
"type": "object",
"description": "Normalized contact object. Canonical fields: external_id, email, phone, first_name, last_name, full_name, age, gender, tags, extra, data, survey_data.",
"properties": {
"external_id": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"full_name": {
"type": "string"
},
"age": {
"type": [
"integer",
"string"
]
},
"gender": {
"type": "string"
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
}
},
"extra": {
"type": "object",
"description": "Unmapped flat or structured metadata. Exposed under @contact.extra and merged into contact payload."
},
"data": {
"type": "object",
"description": "Structured account-level contact data, or survey-scoped data when the import session has data_survey_slug."
},
"survey_data": {
"type": "object",
"description": "Optional object keyed by survey slug, each value a JSON object."
}
}
}
},
"contacts_json": {
"type": "string",
"description": "Alternative to contacts: JSON string containing an array of normalized contact objects."
}
},
"required": [
"import_id"
]
}get_audience_import_status
Return import status, counters, processed chunks, warnings/errors and metadata for an audience import session.
View input JSON schema
{
"type": "object",
"properties": {
"import_id": {
"type": "integer",
"minimum": 1,
"description": "Audience import id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for import_id."
}
},
"required": [
"import_id"
]
}commit_audience_import
Finalize an open audience import session. Contacts are already persisted during chunk append; commit marks the import complete.
View input JSON schema
{
"type": "object",
"properties": {
"import_id": {
"type": "integer",
"minimum": 1,
"description": "Audience import id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for import_id."
}
},
"required": [
"import_id"
]
}Tags
5 toolslist_tags
List global account tags and current contact assignment counts.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}suggest_tags
Autocomplete existing global account tags by name or slug.
View input JSON schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Text to search in tag name or slug."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Maximum suggestions. Defaults to 8."
}
},
"required": [
"q"
]
}create_tag
Create a global account tag that can be used by audiences now and other resource types later.
View input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Tag display name."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
}
},
"required": [
"name"
]
}update_tag
Update a global account tag name or slug.
View input JSON schema
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"minimum": 1,
"description": "Tag id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for tag_id."
},
"name": {
"type": "string",
"description": "Tag display name."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
}
},
"required": [
"tag_id"
]
}delete_tag
Delete a global account tag. If assigned to contacts, pass detach=true to remove assignments.
View input JSON schema
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"minimum": 1,
"description": "Tag id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for tag_id."
},
"detach": {
"type": "boolean",
"description": "When true, delete even if assigned to contacts, detaching those contact assignments."
}
},
"required": [
"tag_id"
]
}Segments
7 toolslist_audience_segments
List saved audience segments with normalized query criteria.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}count_audience_segment
Normalize an audience segment criteria JSON object and return the matching contact count plus a small sample.
View input JSON schema
{
"type": "object",
"properties": {
"criteria": {
"type": "object",
"description": "Segment query object using combinator and rules. Rule sources: tag, field, extra, data, survey_data. Canonical operators: exists, not_exists, eq, not_eq, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, count_eq, count_gt, count_gte, count_lt, count_lte."
},
"criteria_json": {
"type": "string",
"description": "Alternative to criteria: JSON string containing the segment query object."
},
"sample_limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum sample contacts to return. Defaults to 5."
}
},
"required": []
}create_audience_segment
Create a saved audience segment from a normalized criteria JSON object and return the calculated contact count.
View input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Segment display name. Required on create."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
},
"description": {
"type": "string",
"description": "Optional internal description."
},
"criteria": {
"type": "object",
"description": "Segment query object using combinator and rules. Rule sources: tag, field, extra, data, survey_data. Canonical operators: exists, not_exists, eq, not_eq, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, count_eq, count_gt, count_gte, count_lt, count_lte."
},
"criteria_json": {
"type": "string",
"description": "Alternative to criteria: JSON string containing the segment query object."
},
"refresh_count": {
"type": "boolean",
"description": "On update, recalculate last_count even when criteria is unchanged."
}
},
"required": [
"name"
]
}update_audience_segment
Update a saved audience segment name, description, slug or criteria. When criteria changes, Dayalogs recalculates the count.
View input JSON schema
{
"type": "object",
"properties": {
"segment_id": {
"type": "integer",
"minimum": 1,
"description": "Audience segment id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for segment_id."
},
"name": {
"type": "string",
"description": "Segment display name. Required on create."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
},
"description": {
"type": "string",
"description": "Optional internal description."
},
"criteria": {
"type": "object",
"description": "Segment query object using combinator and rules. Rule sources: tag, field, extra, data, survey_data. Canonical operators: exists, not_exists, eq, not_eq, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, count_eq, count_gt, count_gte, count_lt, count_lte."
},
"criteria_json": {
"type": "string",
"description": "Alternative to criteria: JSON string containing the segment query object."
},
"refresh_count": {
"type": "boolean",
"description": "On update, recalculate last_count even when criteria is unchanged."
}
},
"required": [
"segment_id"
]
}delete_audience_segment
Delete a saved audience segment. Contacts are not deleted.
View input JSON schema
{
"type": "object",
"properties": {
"segment_id": {
"type": "integer",
"minimum": 1,
"description": "Audience segment id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for segment_id."
}
},
"required": [
"segment_id"
]
}get_audience_segment_json_paths
List detected JSON paths for contact extra, contact data, or survey-scoped contact data to help build segment rules.
extra, data, survey_dataView input JSON schema
{
"type": "object",
"properties": {
"source": {
"type": "string",
"enum": [
"extra",
"data",
"survey_data"
],
"description": "JSON source to inspect."
},
"survey_slug": {
"type": "string",
"description": "Required when source is survey_data."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"description": "Maximum paths to return. Defaults to 250."
}
},
"required": [
"source"
]
}suggest_audience_segment_values
Suggest existing values for a segment rule field or JSON path. Returns requires_query=true instead of a huge list when too many values exist.
field, extra, data, survey_dataView input JSON schema
{
"type": "object",
"properties": {
"source": {
"type": "string",
"enum": [
"field",
"extra",
"data",
"survey_data"
],
"description": "Source to inspect for existing values."
},
"field": {
"type": "string",
"description": "Required when source is field. Example: email, full_name, age, gender."
},
"path": {
"type": "string",
"description": "Required for extra, data and survey_data sources."
},
"survey_slug": {
"type": "string",
"description": "Required when source is survey_data."
},
"q": {
"type": "string",
"description": "Optional autocomplete query."
},
"query": {
"type": "string",
"description": "Alias for q."
}
},
"required": [
"source"
]
}Links
13 toolslist_survey_links
List respondent access links for a survey, including URLs, status, progress state, quotas, variables, contact and link set metadata.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_link
Create a real respondent access link for a survey. This is not a preview link; use get_preview_url for user review. Requires confirm_real_link=true after the user explicitly asks for a respondent link.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Display label. Optional on create; defaults to the contact display name or \"Single link\"."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"contact_id": {
"type": "integer",
"description": "Optional contact id. If present, Dayalogs creates a personalized link."
},
"email": {
"type": "string",
"description": "Optional email metadata for anonymous single links."
},
"tag_id": {
"type": "integer",
"description": "Optional source tag id for personalized single links."
},
"tag_slug": {
"type": "string",
"description": "Optional source tag slug for personalized single links."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
},
"confirm_real_link": {
"type": "boolean",
"description": "Must be true to create a real respondent access link. Use get_preview_url instead for user review links."
}
},
"required": [
"slug"
]
}update_survey_link
Update a single link label, active date window, or link-level quota when the quota is editable.
View input JSON schema
{
"type": "object",
"properties": {
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Display label. Optional on create; defaults to the contact display name or \"Single link\"."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"contact_id": {
"type": "integer",
"description": "Optional contact id. If present, Dayalogs creates a personalized link."
},
"email": {
"type": "string",
"description": "Optional email metadata for anonymous single links."
},
"tag_id": {
"type": "integer",
"description": "Optional source tag id for personalized single links."
},
"tag_slug": {
"type": "string",
"description": "Optional source tag slug for personalized single links."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
}
},
"required": [
"slug",
"link_id"
]
}delete_survey_link
Delete a link. Dayalogs hard-deletes unused links and soft-deletes links that already have responses, sessions or progress.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
}
},
"required": [
"slug",
"link_id"
]
}activate_survey_link
Manually activate a respondent access link.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
}
},
"required": [
"slug",
"link_id"
]
}deactivate_survey_link
Manually deactivate a respondent access link.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
}
},
"required": [
"slug",
"link_id"
]
}list_survey_link_sets
List survey link sets with quota mode, source tag/segment and link counts.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_link_set
Create a fresh multi-link link set from a tag, saved segment, or explicit contact_ids. Existing links are never reused.
tag, segment, contactsper_link, globalView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Link set display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"source_type": {
"type": "string",
"enum": [
"tag",
"segment",
"contacts"
],
"description": "Create source. On create, Dayalogs can infer this from tag_id/tag_slug, segment_id/segment_slug or contact_ids."
},
"source": {
"type": "string",
"description": "Alias for source_type."
},
"tag_id": {
"type": "integer",
"description": "Source tag id."
},
"tag_slug": {
"type": "string",
"description": "Source tag slug."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"segment_id": {
"type": "integer",
"description": "Source audience segment id."
},
"segment_slug": {
"type": "string",
"description": "Source audience segment slug."
},
"source_segment_id": {
"type": "integer",
"description": "Alias for segment_id."
},
"source_segment_slug": {
"type": "string",
"description": "Alias for segment_slug."
},
"contact_ids": {
"type": "array",
"description": "Explicit contact ids for source_type contacts.",
"items": {
"type": "integer"
}
},
"contacts": {
"type": "array",
"description": "Alias for contact_ids. Can be integers or objects with id/contact_id.",
"items": {
"type": [
"integer",
"object"
]
}
},
"quota_scope": {
"type": "string",
"enum": [
"per_link",
"global"
],
"description": "Quota mode for multi-link link sets. Defaults to per_link."
},
"quota_mode": {
"type": "string",
"description": "Alias for quota_scope."
},
"overwrite_calendar_overrides": {
"type": "boolean",
"description": "On update, apply date changes to links with custom date overrides too."
},
"overwrite_quota_overrides": {
"type": "boolean",
"description": "On update, apply per-link quota changes to links with custom quota overrides too."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
}
},
"required": [
"slug",
"label"
]
}update_survey_link_set
Update a link set label, link date window, quota mode and bulk quota/calendar overrides where applicable.
tag, segment, contactsper_link, globalView input JSON schema
{
"type": "object",
"properties": {
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Link set display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"source_type": {
"type": "string",
"enum": [
"tag",
"segment",
"contacts"
],
"description": "Create source. On create, Dayalogs can infer this from tag_id/tag_slug, segment_id/segment_slug or contact_ids."
},
"source": {
"type": "string",
"description": "Alias for source_type."
},
"tag_id": {
"type": "integer",
"description": "Source tag id."
},
"tag_slug": {
"type": "string",
"description": "Source tag slug."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"segment_id": {
"type": "integer",
"description": "Source audience segment id."
},
"segment_slug": {
"type": "string",
"description": "Source audience segment slug."
},
"source_segment_id": {
"type": "integer",
"description": "Alias for segment_id."
},
"source_segment_slug": {
"type": "string",
"description": "Alias for segment_slug."
},
"contact_ids": {
"type": "array",
"description": "Explicit contact ids for source_type contacts.",
"items": {
"type": "integer"
}
},
"contacts": {
"type": "array",
"description": "Alias for contact_ids. Can be integers or objects with id/contact_id.",
"items": {
"type": [
"integer",
"object"
]
}
},
"quota_scope": {
"type": "string",
"enum": [
"per_link",
"global"
],
"description": "Quota mode for multi-link link sets. Defaults to per_link."
},
"quota_mode": {
"type": "string",
"description": "Alias for quota_scope."
},
"overwrite_calendar_overrides": {
"type": "boolean",
"description": "On update, apply date changes to links with custom date overrides too."
},
"overwrite_quota_overrides": {
"type": "boolean",
"description": "On update, apply per-link quota changes to links with custom quota overrides too."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
}
},
"required": [
"slug",
"link_set_id"
]
}delete_survey_link_set
Delete a link set. Dayalogs hard-deletes unused link sets and soft-deletes link sets with retained activity.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
}
},
"required": [
"slug",
"link_set_id"
]
}activate_survey_link_set
Manually activate a link set.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
}
},
"required": [
"slug",
"link_set_id"
]
}deactivate_survey_link_set
Manually deactivate a link set.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
}
},
"required": [
"slug",
"link_set_id"
]
}export_survey_link_set
Export links from a link set as structured JSON, CSV or XLSX content.
json, csv, xlsxView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
},
"format": {
"type": "string",
"enum": [
"json",
"csv",
"xlsx"
],
"description": "Export format. Defaults to json."
}
},
"required": [
"slug",
"link_set_id"
]
}Embeds
5 toolslist_survey_embeds
List website embed placements for a survey, including generated one-tag loader snippets, allowed origins, lifecycle settings and compatibility warnings.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_embed_compatibility
Check whether the current survey version is suitable for responsive embedded viewports. Warnings are advisory and do not block creating an embed.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_embed
Create a website embed placement. Optionally bind it to an anonymous reusable single-link link set so its fixed metadata and runtime availability rules are used; otherwise the survey default link is resolved or created transparently. Draft embeds can be prepared without confirmation. Activating a real public embed requires exact or wildcard-subdomain allowed origins and confirm_public_embed=true after explicit user approval. Returns a one-tag script snippet.
draft, active, revokedView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable placement name."
},
"share_link_id": {
"type": [
"integer",
"null"
],
"description": "Optional anonymous reusable single-link link set id for this survey. Fixed metadata, dates, quota and cookie protection remain effective at runtime. Null resolves or creates the survey default link."
},
"allowed_origins": {
"type": "array",
"description": "Exact HTTP(S) origins or wildcard subdomain origins such as https://*.example.com. Never use *.",
"items": {
"type": "string"
}
},
"origins": {
"type": "array",
"description": "Alias for allowed_origins.",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"modal"
]
},
"trigger": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"immediate",
"delay",
"scroll",
"launcher",
"programmatic",
"custom_event"
]
},
"delay_ms": {
"type": "integer",
"minimum": 0,
"maximum": 3600000
},
"scroll_percent": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"event_name": {
"type": "string",
"maxLength": 120
},
"launcher_label": {
"type": "string",
"maxLength": 120
}
},
"required": [],
"additionalProperties": false
},
"frequency": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"always",
"session",
"once",
"cooldown"
]
},
"cooldown_days": {
"type": "integer",
"minimum": 1,
"maximum": 3650
}
},
"required": [],
"additionalProperties": false
},
"layout": {
"type": "object",
"properties": {
"desktop_width": {
"type": "integer",
"minimum": 320,
"maximum": 1200
},
"mobile_width": {
"type": "integer",
"minimum": 280,
"maximum": 600
},
"max_height": {
"type": "integer",
"minimum": 320,
"maximum": 1600
},
"drawer_side": {
"type": "string",
"enum": [
"left",
"right"
]
}
},
"required": [],
"additionalProperties": false
},
"appearance": {
"type": "object",
"properties": {
"border_width": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"border_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border_radius": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"shadow": {
"type": "string",
"enum": [
"none",
"soft",
"strong"
]
},
"backdrop_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"backdrop_opacity": {
"type": "integer",
"minimum": 0,
"maximum": 90
}
},
"required": [],
"additionalProperties": false
},
"target_selector": {
"type": [
"string",
"null"
],
"maxLength": 240
},
"locale": {
"type": [
"string",
"null"
]
}
},
"required": [],
"additionalProperties": false
},
"active": {
"type": "boolean",
"description": "Create the placement active. At least one allowed origin is required."
},
"confirm_public_embed": {
"type": "boolean",
"description": "Set true only after the user explicitly approves activating this real public website embed."
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"revoked"
],
"description": "Update lifecycle status. Activating requires at least one allowed origin."
}
},
"required": [
"slug",
"name"
],
"additionalProperties": false
}update_survey_embed
Update an embed placement name, compatible share link, allowed origins, trigger, frequency, responsive layout, locale or status. A null share_link_id restores the compatible default link. Transitioning a draft embed to active requires allowed origins and confirm_public_embed=true after explicit user approval.
draft, active, revokedView input JSON schema
{
"type": "object",
"properties": {
"embed_id": {
"type": "integer",
"description": "Website embed placement id."
},
"id": {
"type": "integer",
"description": "Alias for embed_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable placement name."
},
"share_link_id": {
"type": [
"integer",
"null"
],
"description": "Optional anonymous reusable single-link link set id for this survey. Fixed metadata, dates, quota and cookie protection remain effective at runtime. Null resolves or creates the survey default link."
},
"allowed_origins": {
"type": "array",
"description": "Exact HTTP(S) origins or wildcard subdomain origins such as https://*.example.com. Never use *.",
"items": {
"type": "string"
}
},
"origins": {
"type": "array",
"description": "Alias for allowed_origins.",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"modal"
]
},
"trigger": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"immediate",
"delay",
"scroll",
"launcher",
"programmatic",
"custom_event"
]
},
"delay_ms": {
"type": "integer",
"minimum": 0,
"maximum": 3600000
},
"scroll_percent": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"event_name": {
"type": "string",
"maxLength": 120
},
"launcher_label": {
"type": "string",
"maxLength": 120
}
},
"required": [],
"additionalProperties": false
},
"frequency": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"always",
"session",
"once",
"cooldown"
]
},
"cooldown_days": {
"type": "integer",
"minimum": 1,
"maximum": 3650
}
},
"required": [],
"additionalProperties": false
},
"layout": {
"type": "object",
"properties": {
"desktop_width": {
"type": "integer",
"minimum": 320,
"maximum": 1200
},
"mobile_width": {
"type": "integer",
"minimum": 280,
"maximum": 600
},
"max_height": {
"type": "integer",
"minimum": 320,
"maximum": 1600
},
"drawer_side": {
"type": "string",
"enum": [
"left",
"right"
]
}
},
"required": [],
"additionalProperties": false
},
"appearance": {
"type": "object",
"properties": {
"border_width": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"border_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border_radius": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"shadow": {
"type": "string",
"enum": [
"none",
"soft",
"strong"
]
},
"backdrop_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"backdrop_opacity": {
"type": "integer",
"minimum": 0,
"maximum": 90
}
},
"required": [],
"additionalProperties": false
},
"target_selector": {
"type": [
"string",
"null"
],
"maxLength": 240
},
"locale": {
"type": [
"string",
"null"
]
}
},
"required": [],
"additionalProperties": false
},
"active": {
"type": "boolean",
"description": "Create the placement active. At least one allowed origin is required."
},
"confirm_public_embed": {
"type": "boolean",
"description": "Set true only after the user explicitly approves activating this real public website embed."
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"revoked"
],
"description": "Update lifecycle status. Activating requires at least one allowed origin."
}
},
"required": [
"slug",
"embed_id"
],
"additionalProperties": false
}delete_survey_embed
Revoke a website embed placement. Existing survey responses are retained, but the public embed identifier can no longer launch the survey.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"embed_id": {
"type": "integer",
"description": "Website embed placement id."
},
"id": {
"type": "integer",
"description": "Alias for embed_id."
}
},
"required": [
"slug",
"embed_id"
],
"additionalProperties": false
}Campaigns
12 toolslist_survey_campaigns
List email campaigns for a survey, optionally including archived campaigns.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"include_archived": {
"type": "boolean",
"description": "Include archived campaigns in the list."
},
"archived": {
"type": "boolean",
"description": "Return only archived campaigns."
}
},
"required": [
"slug"
]
}get_survey_campaign
Return one survey email campaign, optionally including recipients and their link status.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"include_recipients": {
"type": "boolean",
"description": "Include recipients. Defaults to true."
}
},
"required": [
"slug",
"campaign_id"
]
}list_survey_campaign_events
List recent provider delivery events for one survey campaign, including delivery, bounce, complaint, reject and delay events.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"description": "Maximum recent events to return. Defaults to 100."
}
},
"required": [
"slug",
"campaign_id"
]
}create_survey_campaign
Create an email campaign for an existing multi-link link set. Campaigns consume link sets; they do not create links.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Campaign display name."
},
"link_set_id": {
"type": "integer",
"description": "Existing multi-link link set id. Required on create."
},
"subject": {
"type": "string",
"description": "Email subject. Required on create. Supports campaign/contact/link placeholders."
},
"sender_name": {
"type": "string",
"description": "From display name. Defaults to organization name."
},
"sender_local_part": {
"type": "string",
"description": "From local part before @. Defaults to surveys."
},
"sender_domain": {
"type": "string",
"description": "Allowed sender domain. Currently dayalogs.com."
},
"from": {
"type": "string",
"description": "Alias for full from email, for example surveys@dayalogs.com."
},
"from_email": {
"type": "string",
"description": "Alias for full from email."
},
"from_name": {
"type": "string",
"description": "Alias for sender_name."
},
"email_template": {
"type": "string",
"description": "Template selector: base:dayalogs-basic, base:dayalogs-plain or custom:<id>."
},
"template": {
"type": "string",
"description": "Alias for email_template."
},
"email_template_id": {
"type": "integer",
"description": "Ready custom email template id. Alias for custom:<id>."
},
"template_id": {
"type": "integer",
"description": "Alias for email_template_id."
},
"email_template_base_key": {
"type": "string",
"description": "Base template key. Alias for base:<key>."
},
"template_base_key": {
"type": "string",
"description": "Alias for email_template_base_key."
},
"body_html": {
"type": "string",
"description": "Campaign email body HTML. Required on create. Use {{ @link.url }} or Dayalogs will append a link."
},
"html": {
"type": "string",
"description": "Alias for body_html."
},
"body": {
"type": "string",
"description": "Alias for body_html."
},
"body_text": {
"type": "string",
"description": "Optional plain-text body override."
},
"text": {
"type": "string",
"description": "Alias for body_text."
},
"disclaimer_html": {
"type": "string",
"description": "Optional legal/disclaimer HTML. Falls back to account default."
},
"disclaimer": {
"type": "string",
"description": "Alias for disclaimer_html."
},
"disclaimer_text": {
"type": "string",
"description": "Optional plain-text disclaimer override."
},
"include_branding": {
"type": "boolean",
"description": "Whether the campaign includes account/survey branding."
},
"save_account_disclaimer": {
"type": "boolean",
"description": "Also save this disclaimer as the account default."
}
},
"required": [
"slug",
"link_set_id",
"subject",
"body_html"
]
}update_survey_campaign
Update a draft email campaign. After send activity, only the campaign name can be changed.
View input JSON schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Campaign display name."
},
"link_set_id": {
"type": "integer",
"description": "Existing multi-link link set id. Required on create."
},
"subject": {
"type": "string",
"description": "Email subject. Required on create. Supports campaign/contact/link placeholders."
},
"sender_name": {
"type": "string",
"description": "From display name. Defaults to organization name."
},
"sender_local_part": {
"type": "string",
"description": "From local part before @. Defaults to surveys."
},
"sender_domain": {
"type": "string",
"description": "Allowed sender domain. Currently dayalogs.com."
},
"from": {
"type": "string",
"description": "Alias for full from email, for example surveys@dayalogs.com."
},
"from_email": {
"type": "string",
"description": "Alias for full from email."
},
"from_name": {
"type": "string",
"description": "Alias for sender_name."
},
"email_template": {
"type": "string",
"description": "Template selector: base:dayalogs-basic, base:dayalogs-plain or custom:<id>."
},
"template": {
"type": "string",
"description": "Alias for email_template."
},
"email_template_id": {
"type": "integer",
"description": "Ready custom email template id. Alias for custom:<id>."
},
"template_id": {
"type": "integer",
"description": "Alias for email_template_id."
},
"email_template_base_key": {
"type": "string",
"description": "Base template key. Alias for base:<key>."
},
"template_base_key": {
"type": "string",
"description": "Alias for email_template_base_key."
},
"body_html": {
"type": "string",
"description": "Campaign email body HTML. Required on create. Use {{ @link.url }} or Dayalogs will append a link."
},
"html": {
"type": "string",
"description": "Alias for body_html."
},
"body": {
"type": "string",
"description": "Alias for body_html."
},
"body_text": {
"type": "string",
"description": "Optional plain-text body override."
},
"text": {
"type": "string",
"description": "Alias for body_text."
},
"disclaimer_html": {
"type": "string",
"description": "Optional legal/disclaimer HTML. Falls back to account default."
},
"disclaimer": {
"type": "string",
"description": "Alias for disclaimer_html."
},
"disclaimer_text": {
"type": "string",
"description": "Optional plain-text disclaimer override."
},
"include_branding": {
"type": "boolean",
"description": "Whether the campaign includes account/survey branding."
},
"save_account_disclaimer": {
"type": "boolean",
"description": "Also save this disclaimer as the account default."
}
},
"required": [
"slug",
"campaign_id"
]
}clone_survey_campaign
Clone a survey email campaign as a new draft campaign.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Source campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"name": {
"type": "string",
"description": "Optional clone name. If omitted, Dayalogs creates a copy name."
}
},
"required": [
"slug",
"campaign_id"
]
}delete_survey_campaign
Delete an unsent campaign or archive it when it already has send activity.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
}
},
"required": [
"slug",
"campaign_id"
]
}archive_survey_campaign
Archive a survey email campaign so it no longer appears in the active campaign list.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
}
},
"required": [
"slug",
"campaign_id"
]
}restore_survey_campaign
Restore an archived survey email campaign.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
}
},
"required": [
"slug",
"campaign_id"
]
}preview_survey_campaign
Render a campaign preview. Pass campaign_id for a saved campaign, or draft fields plus link_set_id for a transient preview.
View input JSON schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"description": "Optional saved campaign id. If present, draft fields are ignored."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Campaign display name."
},
"link_set_id": {
"type": "integer",
"description": "Existing multi-link link set id. Required on create."
},
"subject": {
"type": "string",
"description": "Email subject. Required on create. Supports campaign/contact/link placeholders."
},
"sender_name": {
"type": "string",
"description": "From display name. Defaults to organization name."
},
"sender_local_part": {
"type": "string",
"description": "From local part before @. Defaults to surveys."
},
"sender_domain": {
"type": "string",
"description": "Allowed sender domain. Currently dayalogs.com."
},
"from": {
"type": "string",
"description": "Alias for full from email, for example surveys@dayalogs.com."
},
"from_email": {
"type": "string",
"description": "Alias for full from email."
},
"from_name": {
"type": "string",
"description": "Alias for sender_name."
},
"email_template": {
"type": "string",
"description": "Template selector: base:dayalogs-basic, base:dayalogs-plain or custom:<id>."
},
"template": {
"type": "string",
"description": "Alias for email_template."
},
"email_template_id": {
"type": "integer",
"description": "Ready custom email template id. Alias for custom:<id>."
},
"template_id": {
"type": "integer",
"description": "Alias for email_template_id."
},
"email_template_base_key": {
"type": "string",
"description": "Base template key. Alias for base:<key>."
},
"template_base_key": {
"type": "string",
"description": "Alias for email_template_base_key."
},
"body_html": {
"type": "string",
"description": "Campaign email body HTML. Required on create. Use {{ @link.url }} or Dayalogs will append a link."
},
"html": {
"type": "string",
"description": "Alias for body_html."
},
"body": {
"type": "string",
"description": "Alias for body_html."
},
"body_text": {
"type": "string",
"description": "Optional plain-text body override."
},
"text": {
"type": "string",
"description": "Alias for body_text."
},
"disclaimer_html": {
"type": "string",
"description": "Optional legal/disclaimer HTML. Falls back to account default."
},
"disclaimer": {
"type": "string",
"description": "Alias for disclaimer_html."
},
"disclaimer_text": {
"type": "string",
"description": "Optional plain-text disclaimer override."
},
"include_branding": {
"type": "boolean",
"description": "Whether the campaign includes account/survey branding."
},
"save_account_disclaimer": {
"type": "boolean",
"description": "Also save this disclaimer as the account default."
}
},
"required": [
"slug"
]
}send_survey_campaign_test
Send one saved campaign to test email addresses before queueing the real recipients.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"test_emails": {
"type": [
"array",
"string"
],
"description": "Test recipient emails as an array or comma/newline-separated string.",
"items": {
"type": "string"
}
},
"emails": {
"type": [
"array",
"string"
],
"description": "Alias for test_emails."
},
"test_email": {
"type": "string",
"description": "Single test email alias."
},
"email": {
"type": "string",
"description": "Single test email alias."
}
},
"required": [
"slug",
"campaign_id"
]
}send_survey_campaign
Queue a campaign send. scope=auto enforces the Dayalogs warmup-first workflow.
auto, warmup, remaining, failedView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"scope": {
"type": "string",
"enum": [
"auto",
"warmup",
"remaining",
"failed"
],
"description": "Queue scope. Defaults to auto, which sends warmup first and remaining after warmup is complete."
}
},
"required": [
"slug",
"campaign_id"
]
}Reviews
12 toolslist_my_review_links
List active survey preview-review rounds where the authorized MCP user is a reviewer, including each personal review URL.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}list_review_rounds
List preview-review rounds for one survey.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_review_round
Create a preview-review round with participants. This returns personal review URLs but does not send emails.
collaborative, privateca, es, enmanual, all_reviewed, date, date_or_allView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Review round name."
},
"description": {
"type": "string",
"description": "Optional reviewer-facing/internal description."
},
"visibility": {
"type": "string",
"enum": [
"collaborative",
"private"
],
"description": "collaborative lets reviewers see each other comments; private limits visibility."
},
"review_locale": {
"type": "string",
"enum": [
"ca",
"es",
"en"
],
"description": "Reviewer UI language for this round."
},
"close_mode": {
"type": "string",
"enum": [
"manual",
"all_reviewed",
"date",
"date_or_all"
],
"description": "How the round should close."
},
"closes_at": {
"type": "string",
"description": "ISO-8601 date/time required when close_mode is date or date_or_all."
},
"participants": {
"type": "array",
"description": "Review participants. Invitations are not emailed by this tool; returned review_url values can be sent later through campaigns.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "Reviewer role. Defaults to comment."
}
},
"required": [
"email"
]
}
}
},
"required": [
"slug",
"name",
"participants"
]
}get_review_round
Get one preview-review round, including participants and comments.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}update_review_round
Update editable preview-review round metadata such as name, description, visibility, review language and close rules.
collaborative, privateca, es, enmanual, all_reviewed, date, date_or_allView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
},
"name": {
"type": "string",
"description": "Optional new review round name."
},
"description": {
"type": [
"string",
"null"
],
"description": "Optional reviewer-facing/internal description."
},
"visibility": {
"type": "string",
"enum": [
"collaborative",
"private"
],
"description": "collaborative lets reviewers see each other comments; private limits visibility."
},
"review_locale": {
"type": "string",
"enum": [
"ca",
"es",
"en"
],
"description": "Reviewer UI language for this round."
},
"close_mode": {
"type": "string",
"enum": [
"manual",
"all_reviewed",
"date",
"date_or_all"
],
"description": "How the round should close."
},
"closes_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 date/time required when close_mode is date or date_or_all."
}
},
"required": [
"slug",
"round_id"
]
}list_review_comments
List structured comments and replies for one preview-review round.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}add_review_participant
Add a participant to an open preview-review round. This returns the personal review URL but does not send an email.
comment, decisionView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
},
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "comment can comment/reply; decision can also decide comments in supported review UIs."
}
},
"required": [
"slug",
"round_id",
"email"
]
}create_review_comment
Create a comment or reply in a preview-review round. User-authorized OAuth tokens infer the author from the logged-in user; organization API keys must pass an author object.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
},
"body": {
"type": "string",
"description": "Comment body text."
},
"text": {
"type": "string",
"description": "Alias for body."
},
"kind": {
"type": "string",
"description": "Target kind such as survey, block, question, option or ending."
},
"target_kind": {
"type": "string",
"description": "Alias for kind."
},
"target_id": {
"type": "string",
"description": "Target fragment/question/item id."
},
"element_id": {
"type": "string",
"description": "Alias for target_id."
},
"label": {
"type": "string",
"description": "Human-readable target label."
},
"target_label": {
"type": "string",
"description": "Alias for label."
},
"parent_id": {
"type": "integer",
"minimum": 1,
"description": "Optional parent comment id to create a reply."
},
"author": {
"type": "object",
"description": "Optional author object for organization API keys without user context. Ignored for user-authorized OAuth tokens.",
"properties": {
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "Reviewer role. Defaults to comment."
}
},
"required": [
"email"
]
},
"participant": {
"type": "object",
"description": "Alias for author.",
"properties": {
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "Reviewer role. Defaults to comment."
}
},
"required": [
"email"
]
}
},
"required": [
"slug",
"round_id"
]
}decide_review_comment
Accept, reject, resolve or mark a review comment as applied. Do not decide comments unless the user has explicitly approved each individual decision; requires confirm_decision=true after that approval. This is MCP-only and requires a user-bound token with reviews:decide; organization API keys cannot decide.
approved, rejected, resolved, appliedapproved, rejected, resolved, appliedView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"comment_id": {
"type": "integer",
"minimum": 1,
"description": "Review comment id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for comment_id."
},
"status": {
"type": "string",
"enum": [
"approved",
"rejected",
"resolved",
"applied"
],
"description": "Decision status to set on the comment."
},
"decision": {
"type": "string",
"enum": [
"approved",
"rejected",
"resolved",
"applied"
],
"description": "Alias for status."
},
"decision_note": {
"type": "string",
"description": "Optional decision note."
},
"note": {
"type": "string",
"description": "Alias for decision_note."
},
"confirm_decision": {
"type": "boolean",
"description": "Must be true only after the user explicitly approves this specific review comment decision. Without it, the tool returns confirmation guidance and does not mutate the comment."
}
},
"required": [
"slug",
"comment_id",
"status"
]
}send_review_invitation
Send the review invitation email for one existing review participant.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"participant_id": {
"type": "integer",
"minimum": 1,
"description": "Review participant id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for participant_id."
}
},
"required": [
"slug",
"participant_id"
]
}close_review_round
Close a preview-review round.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}export_review_comments
Export one preview-review round as structured JSON with participants, comments and target positions.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}Branding & styles
11 toolsget_account_branding
Return account-level default respondent-facing branding, including logo and alignment.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}update_account_branding
Update account-level default branding settings such as logo alignment.
left, center, rightleft, center, rightView input JSON schema
{
"type": "object",
"properties": {
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Account default logo alignment."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
}
},
"required": []
}upload_account_logo
Upload the account default header logo from base64 content and optional alignment.
left, center, rightleft, center, rightView input JSON schema
{
"type": "object",
"properties": {
"content_base64": {
"type": "string",
"description": "Base64 image content. Data URLs are accepted."
},
"filename": {
"type": "string",
"description": "Original filename for metadata."
},
"mime_type": {
"type": "string",
"description": "image/png, image/jpeg or image/webp. Optional when content_base64 is a data URL."
},
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Optional logo alignment to save with the upload."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
}
},
"required": [
"content_base64"
]
}delete_account_logo
Remove the account default header logo.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}list_styles
List base and custom styles available in the authenticated account.
View input JSON schema
{
"type": "object",
"properties": {
"include_css": {
"type": "boolean",
"description": "Include full CSS in the response. Defaults to false."
}
},
"required": []
}get_style
Return one custom style by id, optionally including generated CSS.
View input JSON schema
{
"type": "object",
"properties": {
"style_id": {
"type": "integer",
"minimum": 1,
"description": "Custom style id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for style_id."
},
"include_css": {
"type": "boolean",
"description": "Include full CSS. Defaults to true for get_style."
}
},
"required": [
"style_id"
]
}create_style
Create a custom respondent-facing style from a style config, CSS or generator answers.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": []
}import_style
Import and persist a validated style config or scoped CSS as a custom draft style.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": []
}clone_base_style
Clone a locked base style into an editable custom style.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"base_key": {
"type": "string",
"description": "Locked base style key to clone."
},
"name": {
"type": "string",
"description": "Optional new custom style name."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Optional initial status. Defaults to draft."
}
},
"required": [
"base_key"
]
}update_style
Update custom style metadata, status, config or scoped CSS.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"style_id": {
"type": "integer",
"minimum": 1,
"description": "Custom style id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for style_id."
},
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": [
"style_id"
]
}save_style_as
Duplicate an existing custom style under a new name and optional updated config, CSS or status.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"style_id": {
"type": "integer",
"minimum": 1,
"description": "Custom style id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for style_id."
},
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": [
"style_id"
]
}