---
title: "Acknowledge ALL matching Fulfillments"
method: POST
path: "/me/fulfillments/ack-all"
tags: ["fulfillments"]
---

# Acknowledge ALL matching Fulfillments

`POST /me/fulfillments/ack-all`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/me/fulfillments/ack-all`
- Auth: API key in header `Authorization`

Mark the caller's read-receipt (type=seen, default) or the receiver paid attestation (type=paid) on EVERY live fulfillment matching the filter — no id list, no page cap — so "mark all seen" clears badges beyond the loaded page. Filter axes (direction / contact / created_after window / self_payments) mirror the per-contact unseen-count badge, so the ack clears exactly what the badge counts. Idempotent; returns the number newly acknowledged.

## Request body

- InternalDeliveryHttpHandlerAckAllFulfillmentsRequest
  - `contact` string: scope to one counterparty (its account id)
  - `created_after` string: RFC3339 window floor (match the badge read's floor)
  - `direction` string: "sent" | "received" | "" (all)
  - `self_payments` string: include (default) | exclude | only
  - `type` string: "seen" (default) | "paid"

## Response `200`

OK

- InternalDeliveryHttpHandlerBulkAckFulfillmentsResponse
  - `data` InternalDeliveryHttpHandlerBulkAckResult
    - `skipped` integer
    - `updated` integer
  - `success` boolean

## Other responses

- `400`: Bad Request
- `401`: Unauthorized

---

[API](https://skmtc.dev/instruxi/apis/enforcer-api.md) · [All operations](https://skmtc.dev/instruxi/apis/enforcer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/instruxi/apis/enforcer-api/revisions/fa82bc1becc0?raw)
