---
title: "List triggered emails"
method: GET
path: "/v1/projectId/{projectId}/triggered-emails"
tags: ["Triggered Emails"]
---

# List triggered emails

`GET /v1/projectId/{projectId}/triggered-emails`

## Request

- Base URL: `https://api.bluefox.email`
- URL: `https://api.bluefox.email/v1/projectId/{projectId}/triggered-emails`
- Auth: HTTP bearer

## Path parameters

- `projectId` string, required

## Query parameters

- `limit` integer
- `skip` integer
- `sort` 'name' | 'createdAt' | 'updatedAt'
- `order` 'asc' | 'desc'
- `filter[<field>]` string

## Response `200`

OK

- object
  - `status` integer
  - `result` object
    - `items` TriggeredEmail[]
      - `_id` string
      - `name` string
      - `subject` string
      - `previewText` string
      - `subscriberListId` string
      - `senderIdentity` string
      - `replyTo` string
      - `type` 'chamaileon' | 'html' | 'text'
      - `excludeUnengaged` boolean
      - `feeds` object[]
        - `url` string, required
        - `feedType` 'rss-xml' | 'json', required: "rss-xml" covers both RSS and Atom XML feeds - which one it actually is gets auto-detected from the feed content itself, which changes the array key inside the template (see variableName below).
        - `variableName` string, required: No spaces allowed. This becomes a top-level Handlebars variable in the document (see the `document` field on the parent email for the templating syntax). The feed's parsed items are NOT directly at `{{variableName}}` - they're nested under a feed-shape-dependent array key you loop over with the custom `each` helper: - feedType "rss-xml" that turns out to be RSS: `{{#each <variableName>.item}}...{{/each}}` (array key is the literal word "item", singular) - feedType "rss-xml" that turns out to be Atom: `{{#each <variableName>.entry}}...{{/each}}` (array key is "entry") - feedType "json": the array key is whatever field the source JSON actually uses for its list (e.g. "items", "articles") - inspect the feed's JSON to find it, it is not fixed. Inside the loop, each item's own fields are whatever the feed provides (e.g. RSS gives `{{this.title}}`, `{{this.link}}`, `{{this.pubDate}}`) - there is no fixed schema, it mirrors the feed's actual content one-to-one.
        - `maxItems` integer: Informational only - NOT enforced when the email is sent. To actually limit how many items render, pass limit (and optionally skip) as hash arguments on the each tag itself, e.g. `{{#each news.item limit=5 skip=0}}`.
        - `required` boolean
        - `availableFields` string[]: Informational only, for the app UI - not enforced or used when rendering.
      - `createdAt` string, date-time
      - `updatedAt` string, date-time
    - `count` integer: Total matching items across all pages, not just this page.
    - `next` string, nullable: Full URL (path + query string) of the next page, or null if this is the last page.

## Other responses

- `403`: Missing or invalid API key

---

[API](https://skmtc.dev/bluefox/apis/bluefox-email-public-api.md) · [All operations](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/revisions/fa1a0a835c7f?raw)
