---
title: "A ready-to-send message for a case from a template"
method: GET
path: "/projects/{project_id}/outreach-message"
tags: ["Case actions"]
---

# A ready-to-send message for a case from a template

`GET /projects/{project_id}/outreach-message`

## Request

- Base URL: `https://adslighthouse.com/api/v1`
- URL: `https://adslighthouse.com/api/v1/projects/{project_id}/outreach-message`
- Auth: HTTP bearer

Fills a template with one case (advertiser domain, affiliate ID, dates seen, number of observations, search terms, the five newest observations, your brand and trademark) and returns the subject, the plain-text body and, when short enough, a mailto link. Without template_id it uses the first default for the case's audience (affiliate cases and policy cases with an affiliate ID: affiliates; others: advertisers). recipient is optional and only goes into the mailto link. Nothing is filed or sent by this tool: Google Ads and Microsoft Advertising have no API for trademark complaints, so the person submits on the platform's own form, and messages are sent from the person's own email. After the person sends it, call record_outreach_sent. An observation shows an ad was displayed for a search at a moment; it does not prove a purchased keyword, spend or infringement.

## Path parameters

- `project_id` string, required: The project: its id, its brand domain (for example nike.example) or its exact project or brand name. Unknown or ambiguous references return not_found; call list_projects then.

## Query parameters

- `case_type` 'policy' | 'affiliate', required: policy for a case from list_policy_cases; affiliate for a non-compliant affiliate case from list_affiliate_findings.
- `case_id` string: The policy case id. Required when case_type is policy.
- `affiliate_id` string: The affiliate ID exactly as list_affiliate_findings returns it. Required when case_type is affiliate.
- `template_id` string: The template id from list_outreach_templates.
- `recipient` string

## Response `200`

A ready-to-send message for a case from a template

- object
  - `case` object, required
    - `case_type` 'policy' | 'affiliate', required
    - `case_id` string, nullable, required
    - `affiliate_id` string, nullable, required
    - `app_url` string, required: Opens the case for a signed-in account member.
  - `template` object, required
    - `id` string, required: A default's key (such as affiliate-first-notice) or your template's id.
    - `name` string, required
    - `audience` 'affiliate' | 'advertiser', required
    - `stage` 'first_notice' | 'reminder' | 'final_notice' | 'custom', required
    - `subject` string, required
    - `body` string, required
    - `is_default` boolean, required
    - `edited` boolean, required: True for a default your account has edited.
  - `subject` string, required
  - `body` string, required
  - `mailto` string, nullable, required: null when the message is too long for a mail link.
  - `request_id` string

## Other responses

- `400`: Invalid parameters, cursor or body.
- `401`: Missing, invalid, expired or revoked credential.
- `403`: The credential lacks the write scope, the plan does not include the API, or the allowance is used up.
- `404`: Unknown project, keyword or run in this account.
- `409`: The idempotency key was already used for a different request.
- `429`: Rate limit reached. Retry after the Retry-After seconds.
- `503`: The requested service or file is temporarily unavailable.

---

[API](https://skmtc.dev/adslighthouse/apis/ads-lighthouse-api.md) · [All operations](https://skmtc.dev/adslighthouse/apis/ads-lighthouse-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adslighthouse/apis/ads-lighthouse-api/revisions/e1a4a40b11a9?raw)
