---
title: "List email templates"
method: GET
path: "/v3/email_templates"
tags: ["Email Templates"]
---

# List email templates

`GET /v3/email_templates`

Email templates are reusable subject/body pairs your organization uses to communicate with candidates, prospects, and the hiring team. Each template is categorized by `email_type` (e.g. `candidate_rejection`, `interviewer_invite`, `extending_offer`), which determines where it appears in the UI and which merge tokens — like `{{CANDIDATE_FIRST_NAME}}` or `{{JOB_NAME}}` — are valid in its `subject` and body. Templates are either organization-wide (available to every user who can send that `email_type`) or personal to a single user (`user_id`). The body is returned as `html_body` for HTML notification types and `body` for plain-text types — exactly one of the two is populated for any given template.

## Query parameters

- `cursor` string
- `per_page` integer
- `ids` integer[]
- `created_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `updated_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `fields` string[]
- `email_type` 'candidate_auto_reply' | 'new_candidate' | 'new_internal_candidate' | 'new_referral' | 'new_agency_submission' | 'candidate_hired' | 'approved_to_start_recruiting' | 'offer_fully_approved' | 'job_closed' | 'candidate_rejection' | 'weekly_status' | 'scorecard_reminder' | 'scorecard_repeat_reminder' | 'interviewer_invite' | 'take_home_test_email' | 'daily_recruiting' | 'stage_transition' | 'scorecard_progress' | 'agency_candidate_status' | 'agency_candidate_stage' | 'candidate_email' | 'team_email' | 'none' | 'extending_offer' | 'non_admin_welcome' | 'job_admin_welcome' | 'site_admin_welcome' | 'prospect_referral_receipt' | 'candidate_referral_receipt' | 'candidate_availability_request' | 'candidate_availability_confirmation' | 'approval_request' | 'eeoc_data_request' | 'event_prospect_auto_reply' | 'job_post_request' | 'gdpr_notification' | 'stage_change_for_followers' | 'rejection_for_followers' | 'calendly_request' | 'gdpr_consent_extension' | 'agency_recruiter_assigned' | 'slack_mentions' | 'candidate_self_schedule_request' | 'sourcing_automation_step' | 'candidate_survey' | 'esignature_request' | 'scheduling_link_confirmation' | 'talent_matching_summary' | 'identity_verification_request' | 'identity_verification_daily_digest'
- `from_type` 'user_email' | 'organization_email' | 'my_email_address' | 'inviter' | 'organizer' | 'not_applicable'

## Response `200`

Successful

- object[]
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `email_type` 'candidate_auto_reply' | 'new_candidate' | 'new_internal_candidate' | 'new_referral' | 'new_agency_submission' | 'candidate_hired' | 'approved_to_start_recruiting' | 'offer_fully_approved' | 'job_closed' | 'candidate_rejection' | 'weekly_status' | 'scorecard_reminder' | 'scorecard_repeat_reminder' | 'interviewer_invite' | 'take_home_test_email' | 'daily_recruiting' | 'stage_transition' | 'scorecard_progress' | 'agency_candidate_status' | 'agency_candidate_stage' | 'candidate_email' | 'team_email' | 'none' | 'extending_offer' | 'non_admin_welcome' | 'job_admin_welcome' | 'site_admin_welcome' | 'prospect_referral_receipt' | 'candidate_referral_receipt' | 'candidate_availability_request' | 'candidate_availability_confirmation' | 'approval_request' | 'eeoc_data_request' | 'event_prospect_auto_reply' | 'job_post_request' | 'gdpr_notification' | 'stage_change_for_followers' | 'rejection_for_followers' | 'calendly_request' | 'gdpr_consent_extension' | 'agency_recruiter_assigned' | 'slack_mentions' | 'candidate_self_schedule_request' | 'sourcing_automation_step' | 'candidate_survey' | 'esignature_request' | 'scheduling_link_confirmation' | 'talent_matching_summary' | 'identity_verification_request' | 'identity_verification_daily_digest' — Notification category that determines where the template is offered in the UI and which merge tokens are valid. Values include `candidate_email`, `candidate_rejection`, `interviewer_invite`, `scorecard_reminder`, `extending_offer`, `candidate_auto_reply`, and the other entries of this enum. `none` marks a custom, uncategorized template.
  - `subject` string — Subject line sent on the email. May contain merge tokens (e.g. `{{CANDIDATE_FIRST_NAME}}`) that are substituted with live values at send time.
  - `body` string, nullable — Plain-text body of the template, returned for templates whose notification type is plain text (e.g. `interviewer_invite`, `esignature_request`). `null` for HTML templates — see `html_body` instead. May contain merge tokens that are substituted at send time.
  - `user_id` integer, nullable — Id of the Greenhouse user who owns this personal template. `null` for organization-wide templates, which are owned by the organization and available to every user who can send the template's `email_type`.
  - `name` string — Recruiter-facing label identifying the template in `Send email` dropdowns (e.g. `Reject - Phone Screen`, `Offer - Engineering`). Unique among active templates of the same `email_type` within the same owner scope.
  - `description` string, nullable — Internal note explaining when to use the template, shown to recruiters underneath the template name in the configuration UI. Plain text, not sent to candidates.
  - `recipients` string, nullable — Comma-separated list of additional email addresses that are CC'd on every send. `null` when no extra recipients are configured. Used in addition to — not instead of — `cc_recruiter` and `cc_coordinator`.
  - `default` boolean — If `true`, this template is the organization's default for its `email_type` and is preselected in any workflow that auto-attaches a template (e.g. candidate auto-replies, scorecard reminders). At most one template per `email_type` can be the default.
  - `html_body` string, nullable — HTML body of the template, returned for templates whose notification type is HTML (most candidate-facing types — see `NotificationType`). `null` for plain-text templates — see `body` instead. Sanitized server-side; may contain merge tokens substituted at send time.
  - `office_anywhere` boolean, nullable — If `true`, the template is available to hiring plans for any office. If `false`, the template is scoped to a specific subset of offices configured on the template. `null` for legacy templates predating office scoping.
  - `from_type` 'user_email' | 'organization_email' | 'my_email_address' | 'inviter' | 'organizer' | 'not_applicable' — How the sender's address is resolved at send time. `user_email` uses a shared communal email address configured on the template, `organization_email` uses one of the org's verified global addresses, `my_email_address` substitutes the sending user's address, `inviter` is used for welcome emails (resolves to the user inviting the new user), `organizer` is used for scorecard reminders (resolves to the interview organizer), and `not_applicable` is reserved for `interviewer_invite` and `esignature_request` templates that are sent from external services.
  - `cc_recruiter` boolean — If `true`, the candidate's job recruiter is added to the `cc` list every time the template is sent, in addition to `recipients`.
  - `cc_coordinator` boolean — If `true`, the candidate's job coordinator is added to the `cc` list every time the template is sent, in addition to `recipients`.

---

[API](https://skmtc.dev/greenhouse/apis/auth-api.md) · [All operations](https://skmtc.dev/greenhouse/apis/auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/greenhouse/auth-api/revisions/9517a2e54640/schema)
