Sign inGet Started

Validate a broadcast

POST
/v1/email/broadcasts/{broadcast_id}/validate
const params = {
  template: {
    parameters: {
      title: "Welcome",
      offer: "OCTOBER20",
      discount: 20,
      featured: false,
    },
  },
};
const result = await bird.broadcasts.validate(
  "eb_01krdgeqcxet5s7t44vh8rt9mg",
  params,
);
console.log(result.ready_for_admission, result.problems);
Response200
{
  "resolution": {
    "template_id": "emt_01krdgeqcxet5s7t44vh8rt9mg",
    "observed_version_id": "emv_01krdgeqcxet5s7t44vh8rt9mg",
    "requested_language": "pt-BR",
    "effective_language": "pt-BR",
    "default_language": "pt-BR"
  },
  "problems": [
    {
      "code": "parameter_required",
      "phase": "validation",
      "severity": "error",
      "pointer": "/template/parameters/first_name",
      "site": "subject",
      "budget": "output_bytes",
      "contact_id": "con_01krdgeqcxet5s7t44vh8rt9mg"
    }
  ]
}

Check the saved broadcast or the changes supplied in this request against the template's published content. This does not save changes, select a template version for sending or evaluate recipients. Requires template read permission in addition to broadcast read. Each call computes a fresh result. An Idempotency-Key header is accepted but does not replay an earlier result.

Parameters

broadcast_idstring

Broadcast identifier.

Request Payload

template
nullable object

Replaces the template, language or parameters for this request. Null removes the template for this request.

Show child parameters
template.id
string

Select this template. Changing the ID clears the old language, parameters and parameter overrides before supplied replacements. Repeating the same ID retains those values and clears the selected template version, so the next preparation uses the template's latest published version. Omit id to retain the selected template. Adding parameters to a draft created before parameters existed may clear its selected version so it uses the template's latest published version. To clear a draft's selection, set template itself to null.

template.language
nullable string

The BCP-47 language tag that goes to the whole audience, such as en or pt-BR. It must be an exact match for a language on the template's published version, so fr-CA does not select fr. Leave it out to keep the language already selected. If you change the template id in the same request, the old language is cleared with the old template. Set this to null to use the published version's default language, unless the template has language_source_required set.

template.parameters
object

Complete template input map. Each value is a string, number, boolean or null and is used exactly as given, so text containing braces or code-like syntax is never evaluated. Objects and lists are not accepted. Use bird.contact.first_name in the template for contact data. Names must be bare input names outside the bird namespace. Omission retains the map unless the template ID changes, which clears it; an empty object clears it, and null is invalid. The compact map is limited to 16384 UTF-8 bytes and 128 names. Individual email parameters keep their own format.

template.parameter_overrides
object

Complete map of per-language parameter values, keyed by a BCP-47 language tag of at most 35 characters such as es or pt-BR. Each language holds only the names whose value differs for that language; a name it leaves out uses the value in parameters, including later changes to it. A value that is present always applies, even when it is "", 0, false, null or equal to the parameters value. To return a name to the parameters value, send the map without it. Sending this map, even as {}, applies language rules to the broadcast: parameters must hold every input the default language's content, sender name, reply-to or headers use, and an input only the selected language uses may come from that language's entry instead. A broadcast that never sends it keeps the selected-language rules. Values for the default language, or for a language the broadcast does not send, are kept but not used. Omission retains the map unless the template ID changes, which clears it; an empty object removes every override, null is invalid and a language with no names is removed. Tags are stored in canonical BCP-47 form, so two spellings of one tag are refused. The compact map is limited to 16384 UTF-8 bytes, and parameters and every language together are limited to 128 distinct names.

from
string or object

Replaces the sender for this request. Give it as a plain address, as Jane <jane@acme.com> to include a display name, or as an object with an address and a name.

Show child parameters
reply_to
nullable array

Replaces the reply-to addresses for this request. Null removes them.

headers
object

Replaces the custom headers for this request rather than adding to them. Up to 25 of them, each value up to 998 characters. The header rules for updating a broadcast apply.

Response Payload

ready_for_admission
boolean
required

Whether the current template and supplied broadcast inputs pass validation, including checks that the sender and audience can be used. Sending also checks permissions, limits, the audience's recipients and their values, so true does not guarantee the broadcast sends.

resolution
object

The published template version and language that were checked. Absent when no published template could be selected.

Show child attributes
problems
array of object
required

The problems found. Empty when ready_for_admission is true.

Show child attributes
unused_parameters
array of string
required

Names supplied in template.parameters, or in the selected language's template.parameter_overrides entry, that the selected content and envelope do not use. Rendering the selected content ignores them. With template.parameter_overrides, this can include a name in base_parameters that only the default language uses, and template.parameters must still hold its value.

base_parameters
array of string

Input names template.parameters must hold, returned with resolution. Without template.parameter_overrides these are the inputs the selected language uses. With it they are every input the default language's content or the envelope uses, including names the selected language does not use.

override_parameters
array of string

Input names only the selected language uses, returned with resolution. Each may come from that language's entry in template.parameter_overrides or from template.parameters. Always empty without template.parameter_overrides.

Continue with the documentation, guides and examples for this topic.