---
title: "Record what the platform decided about a filed complaint"
method: POST
path: "/projects/{project_id}/case-complaints/{complaint_id}/outcome"
tags: ["Case actions"]
---

# Record what the platform decided about a filed complaint

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

## Request

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

Records the latest outcome of a complaint recorded with record_complaint_filing: pending, ad_removed, rejected or withdrawn, with the date (YYYY-MM-DD, not in the future) and an optional note. It is added to the case timeline; repeating the same outcome and date without a note records nothing new. Requires the write scope and an idempotency key.

## 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.
- `complaint_id` string, required

## 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.
  - `outcome` 'pending' | 'ad_removed' | 'rejected' | 'withdrawn', required
  - `outcome_on` string, required: YYYY-MM-DD in your time zone.
  - `note` string

## Response `200`

Record what the platform decided about a filed complaint

- 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)
