Skip to content

API reference

Create newsletter schedule

newsletters.CreateNewsletterScheduleWriteMember delegation

Create a recurring newsletter preparation schedule. Public callers use manual approval: each prepared issue must be reviewed and sent by a person in Brigg. Returns schedule_id and, when run_now is true, the first issue_id. Poll GetNewsletterIssue for preparation status.

POST/v1/operations/newsletters.CreateNewsletterSchedule
On this page

Access & visibility

Allow newsletters.CreateNewsletterSchedule on your API key.

Acting member required. Send Brigg-Act-As with an approved member account ID. The key supplies permissions; the member selects whose data is used.

The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply.

Set up authentication · Choose permissions

Request fields

Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.

namestringRequired

Display name.

At least 1 character. At most 120 characters.

frequencystringRequired

How often the schedule prepares a newsletter issue.

Allowed: "weekly", "biweekly", "monthly".

start_atintegerRequired

Epoch ms of the first issue, wall-clock in timezone.

Greater than 0.

timezonestringRequired

IANA time zone, for example Europe/Oslo.

At least 1 character. At most 64 characters.

audienceobjectOptional

Selected recipients or audience definition for this newsletter.

Nested fields
modestringRequired

all selects all contacts; tags selects contacts carrying at least one selected tag; manual uses only the supplied email addresses.

Allowed: "all", "tags", "manual".

tagsarray of stringRequired

Stable contact tag keys. Used only in tags mode.

extraarray of stringRequired

Explicit additional email addresses. In manual mode these are the entire audience.

sourcesobjectOptional

Sources used to prepare the newsletter's content.

Nested fields
websiteobjectRequired

Company website URL, including https://.

Nested fields
enabledbooleanRequired

Whether this feature is enabled.

urlstringRequired

Absolute URL, including its scheme.

blogobjectRequired

Blog content source configured for this newsletter.

Nested fields
enabledbooleanRequired

Whether this feature is enabled.

urlstringRequired

Absolute URL, including its scheme.

meetingsbooleanRequired

Use information from shared workspace meetings.

new_clientsbooleanRequired

Use recently added CRM companies.

instructionsstringRequired

Additional instructions for preparing each issue.

instructions_mdstring or nullOptional

Editorial instructions in Markdown for preparing the newsletter.

template_idstring or nullOptional

Select an existing newsletter and use its content_id as the schedule template. A Word or meeting template cannot be used here. workspace.ListBundles.

approval"manual"Required

Each issue is prepared for a person to review and send in Brigg. Automatic sending must be configured in Brigg.

Always "manual".

run_nowbooleanOptional

Also mint the first issue immediately, without consuming the first scheduled slot.

Preparation, review and sending are separate

A schedule produces issues. An issue has its own issue_id; its generated content has a separate newsletter_id. Read Get newsletter issue until that content and its review_url are available. A schedule start or run response does not mean preparation has finished.

Public callers use manual approval. A person reviews and sends the issue in Brigg; preparing content or saving a draft does not send it to the audience. Send newsletter test email sends a test to the acting member, not the subscriber list.

A schedule's start_at is Unix milliseconds and its timezone is an IANA zone used for recurrence. run_now creates an extra first issue without consuming the first scheduled slot. Pause a schedule with paused: true when you want to stop future preparation while retaining the schedule.

Response

Returns 200 OK with a JSON body.

schedule_idstringRequired

Schedule identifier.

next_run_atnumberRequired

Epoch ms of the first scheduled issue.

issueobject or nullRequired

The first issue's outcome; null unless run_now was given.

Nested fields
okbooleanRequired

Whether the action completed successfully.

issue_idstringOptional

Issue identifier.

newsletter_idstringOptional

Newsletter identifier.

errorstringOptional

Failure details for the preparation attempt.

messagestringOptional

Status or failure explanation returned for the preparation attempt.

Errors & retries

Set BRIGG_REQUEST_ID once for each logical action. The samples send it as Idempotency-Key. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.

For rate limits, follow the server’s retry guidance and back off. See HTTP errors and safe retries and limits.

HTTP status Code What to do
400 invalid_json Send a JSON object with Content-Type: application/json.
400 invalid_input Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters.
401 invalid_key The workspace API key is missing, invalid or revoked.
403 forbidden Check the key’s operation and resource grants. Supply Brigg-Act-As with a member authorized by the key’s delegation grant. The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply.
404 not_found The requested operation or resource is not available to this credential.
429 rate_limited Wait for Retry-After before retrying. Reuse the original Idempotency-Key.

Next steps

Download OpenAPI · Versioning & retirement

JSON schemas

Use the complete schemas for validation or client generation.

Full request JSON schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Display name."
    },
    "frequency": {
      "type": "string",
      "enum": [
        "weekly",
        "biweekly",
        "monthly"
      ],
      "description": "How often the schedule prepares a newsletter issue."
    },
    "start_at": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Epoch ms of the first issue, wall-clock in `timezone`."
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "IANA time zone, for example Europe/Oslo."
    },
    "audience": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "all",
            "tags",
            "manual"
          ],
          "description": "all selects all contacts; tags selects contacts carrying at least one selected tag; manual uses only the supplied email addresses."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stable contact tag keys. Used only in tags mode."
        },
        "extra": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
          },
          "description": "Explicit additional email addresses. In manual mode these are the entire audience."
        }
      },
      "required": [
        "mode",
        "tags",
        "extra"
      ],
      "additionalProperties": false,
      "$schema": "http://json-schema.org/draft-07/schema#",
      "description": "Selected recipients or audience definition for this newsletter."
    },
    "sources": {
      "type": "object",
      "properties": {
        "website": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Whether this feature is enabled."
            },
            "url": {
              "type": "string",
              "description": "Absolute URL, including its scheme."
            }
          },
          "required": [
            "enabled",
            "url"
          ],
          "additionalProperties": false,
          "description": "Company website URL, including https://."
        },
        "blog": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Whether this feature is enabled."
            },
            "url": {
              "type": "string",
              "description": "Absolute URL, including its scheme."
            }
          },
          "required": [
            "enabled",
            "url"
          ],
          "additionalProperties": false,
          "description": "Blog content source configured for this newsletter."
        },
        "web_search": {
          "type": "boolean",
          "description": "Research relevant public web sources."
        },
        "meetings": {
          "type": "boolean",
          "description": "Use information from shared workspace meetings."
        },
        "new_clients": {
          "type": "boolean",
          "description": "Use recently added CRM companies."
        },
        "instructions": {
          "type": "string",
          "description": "Additional instructions for preparing each issue."
        }
      },
      "required": [
        "website",
        "blog",
        "web_search",
        "meetings",
        "new_clients",
        "instructions"
      ],
      "additionalProperties": false,
      "$schema": "http://json-schema.org/draft-07/schema#",
      "description": "Sources used to prepare the newsletter's content."
    },
    "instructions_md": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4000
        },
        {
          "type": "null"
        }
      ],
      "description": "Editorial instructions in Markdown for preparing the newsletter."
    },
    "template_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "description": "Select an existing newsletter and use its content_id as the schedule template. A Word or meeting template cannot be used here. [workspace.ListBundles](/reference/workspace/ListBundles)."
    },
    "approval": {
      "type": "string",
      "const": "manual",
      "description": "Each issue is prepared for a person to review and send in Brigg. Automatic sending must be configured in Brigg."
    },
    "run_now": {
      "type": "boolean",
      "description": "Also mint the first issue immediately, without consuming the first scheduled slot."
    }
  },
  "required": [
    "name",
    "frequency",
    "start_at",
    "timezone",
    "approval"
  ],
  "additionalProperties": false,
  "examples": [
    {
      "name": "Example project",
      "frequency": "weekly",
      "start_at": 1794301200000,
      "timezone": "Europe/Oslo",
      "approval": "manual"
    }
  ]
}
Full response JSON schema
{
  "type": "object",
  "properties": {
    "schedule_id": {
      "type": "string",
      "description": "Schedule identifier."
    },
    "next_run_at": {
      "type": "number",
      "description": "Epoch ms of the first scheduled issue."
    },
    "issue": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "description": "Whether the action completed successfully."
        },
        "issue_id": {
          "type": "string",
          "description": "Issue identifier."
        },
        "newsletter_id": {
          "type": "string",
          "description": "Newsletter identifier."
        },
        "error": {
          "type": "string",
          "description": "Failure details for the preparation attempt."
        },
        "message": {
          "type": "string",
          "description": "Status or failure explanation returned for the preparation attempt."
        }
      },
      "required": [
        "ok"
      ],
      "description": "The first issue's outcome; null unless run_now was given.",
      "additionalProperties": false
    }
  },
  "required": [
    "schedule_id",
    "next_run_at",
    "issue"
  ],
  "additionalProperties": false,
  "examples": [
    {
      "schedule_id": "e_example",
      "next_run_at": 1794301200000,
      "issue": null
    }
  ]
}

Search by operation name or what you want to build.

Use arrow keys to browse. Enter opens a result.