---
title: "Record that a complaint was filed on a platform's form"
method: POST
path: "/projects/{project_id}/case-complaints"
tags: ["Case actions"]
---

# Record that a complaint was filed on a platform's form

`POST /projects/{project_id}/case-complaints`

## Request

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

Records on a case that a person filed a complaint on the platform's own form: platform, date filed (YYYY-MM-DD, not in the future), the platform's reference number and an optional note. It is added to the case timeline. 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. Requires the write scope and an idempotency key; a retry with the same key returns the same complaint.

## 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.

## Headers

- `Idempotency-Key` string, required: A unique value you choose for this request, such as a UUID. Repeating the same key returns the first result instead of starting paid work again.

## Request body

- object
  - `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.
  - `platform` 'google_ads' | 'microsoft_advertising', required
  - `filed_on` string, required: YYYY-MM-DD in your time zone.
  - `reference` string
  - `note` string

## Response `201`

Record that a complaint was filed on a platform's form

- object
  - `created` boolean, required
  - `complaint` object, required
    - `id` string, required
    - `platform` 'google_ads' | 'microsoft_advertising', required
    - `platform_name` string, required
    - `filed_on` string, required
    - `reference` string, nullable, required
    - `outcome` 'pending' | 'ad_removed' | 'rejected' | 'withdrawn', required
    - `outcome_on` string, nullable, required
  - `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)
