---
title: "Enable a built-in template"
method: POST
path: "/v1/built-in-templates/{key}/enable"
tags: ["built-in-templates"]
---

# Enable a built-in template

`POST /v1/built-in-templates/{key}/enable`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/built-in-templates/{key}/enable`
- Auth: HTTP bearer

Enable a built-in scheduled task. A local start time may be chosen on the first enable only, except for a template with a fixed schedule, which refuses one. A later enable restores the task's own preserved schedule and refuses a supplied local_time.

## Path parameters

- `key` string, required

## Headers

- `X-Tenant-Id` string, nullable

## Request body

- EnableBuiltInTemplateRequest
  - `local_time` string, nullable: Local start time as exactly HH:MM on a 24-hour clock, in the caller's own timezone. Accepted on the first enable only, and refused for a template with a fixed schedule.
  - `delivery_channel_id` string, nullable: Channel a per-meeting template delivers to, chosen on the first enable only. Omit it to deliver by direct message. Refused for a scheduled template.
  - `config` object, nullable: The person's picks for a template that has config, chosen on the first enable only. Omit it to use every source the person can use. Refused for a template with no config. The Ad Anomaly Watch needs a settings object on its first enable, and {} means the defaults.

## Response `200`

The enabled built-in template and its schedule.

- EnableBuiltInTemplateResponse
  - `key` string, required
  - `title` string, required
  - `description` string, required
  - `enabled` boolean, required
  - `schedule` string, nullable, required
  - `local_schedule` string, nullable, required
  - `timezone` string, nullable, required
  - `cron_job_id` string, uuid, nullable, required
  - `trigger_kind` 'cron' | 'per_meeting' | 'before_each_meeting', required
  - `instructions_status` 'available' | 'unavailable' | 'unknown', required
  - `teammate_watch_on` boolean
  - `created_by_teammate` boolean
  - `created` boolean
  - `config` union
    - EmailSweepConfig: The one pick an Email Sweep stores. ``None`` reads every mailbox the person owns.
      - `email_accounts` string[], nullable
    - DailyBriefConfig: The two picks a Daily Brief stores. ``None`` reads every source the person can use.
      - `email_accounts` string[], nullable
      - `calendar_source` 'googlecalendar' | 'outlook', nullable
    - AdAnomalyWatchConfig: The settings a person chose for the watch. Every field has a default that needs no answer.
      - `accounts` string[]: The ad accounts to watch, each exactly as the read lists it, for example "google_ads 1234567890". An empty list watches the default account of every connected ad platform.
      - `platform_goals` object: Per platform ("google_ads", "meta", "linkedin"): the result that counts, the goal, and the day the counted result changed. Sending it replaces every platform's entry, so include the unchanged ones.
      - `campaign_goals` CampaignGoal[]: Campaigns with their own goal. Sending it replaces the whole list.
        - `platform` 'google_ads' | 'meta' | 'linkedin', required: "google_ads", "meta" or "linkedin".
        - `campaign_id` string, required: The campaign's number ID from the ad platform, never its name.
        - `metric` 'cpa' | 'roas', required: "cpa" or "roas".
        - `floor` number, required: The break-even line for this campaign, in its metric's unit.
        - `action` string, required: The action agreed with the client when the campaign passes its floor, for example "cut the budget" or "tell me only".
      - `brand_terms` string[]: The advertiser's own name and its spellings. Google Ads searches with one are read apart from the others. An empty list uses the account and workspace names.
      - `proposal_hold_until` string, date, nullable: A day (YYYY-MM-DD). Until then the watch flags but suggests no budget or bid change. Null clears it.
      - `drift_percent` integer: How much worse CPA or ROAS must be, last 7 complete days against the 7 before, to flag. 10 to 100.
      - `min_conversions` integer: Below this count of counted results in either window, a CPA or ROAS change is too thin to judge. 5 to 500.
      - `spike_percent` integer: How far above the normal daily spend one day must be to flag. 100 means twice the norm. 30 to 500.
      - `mention` string, nullable: A person or group named on critical alerts only. Null mentions nobody.
      - `quiet_days` 'silent' | 'weekly_note': "silent" posts nothing on a day with nothing wrong. "weekly_note" also posts one line each Monday.
    - object
  - `config_options` object
  - `email_account_options` MailboxOption[]
    - `value` string, uuid, required
    - `label` string, required
    - `app_slug` 'gmail' | 'outlook', required
  - `needs` BuiltInTemplateNeeds: What the automation's folder says it needs before it can run.
    - `apps` NeededApp[], required: The apps the folder names, with the labels the dashboard shows.
      - `slug` string, required
      - `label` string, required
    - `app_rule` 'any_of' | 'all_of', required: any_of: one of the apps is enough. all_of: every app is needed.
    - `checked` 'before_turning_on' | 'before_each_run', required: When the apps are checked: when the person turns it on, or at each run.
    - `needs_workspace_admin` boolean, required: True when only a workspace admin may add or resume it.
    - `connect_first` ConnectFirstDialog, required
      - `title` string, required
      - `text` string, required
      - `button` string, required
  - `reads_mail` boolean: True when the template reads the person's mailboxes and offers a choice of which.
  - `settings` ConfigFieldSchema[]: The fields the automation's folder declares for the person to fill in. Empty for none.
    - `key` string, required
    - `type` string, required
    - `label` string, required
    - `description` string, nullable
    - `group` string, nullable
    - `required` boolean
    - `default` unknown
    - `options` ConfigFieldOptionSchema[]
      - `value` string, required
      - `label` string, required
    - `minimum` integer, nullable
    - `maximum` integer, nullable
    - `unit` string, nullable
    - `placeholder` string, nullable
  - `fixed_local_time` string, nullable: The local HH:MM a fixed-schedule template always runs at, Monday to Friday, in the person's own timezone and direct messages. Null when the person chooses the schedule.
  - `connection_scope_note` string, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `404`: Not found
- `409`: Conflict
- `422`: Validation error
- `503`: Service unavailable: no reachable delivery destination could be resolved for this actor.

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
