---
title: "POST /v1/merchants/:id/gate-events"
method: POST
path: "/v1/merchants/{id}/gate-events"
tags: ["aifp"]
---

# POST /v1/merchants/:id/gate-events

`POST /v1/merchants/{id}/gate-events`

## Request

- Base URL: `https://api.aifinpay.io`
- URL: `https://api.aifinpay.io/v1/merchants/{id}/gate-events`
- Auth: API key in header `AIFP-Merchant-Secret`

Server-side opt-in gate observations for registered canonical route patterns. Atomic merchant-scoped deduplication for 48 hours. These events affect request counters only, never payments, revenue or quota.

## Path parameters

- `id` string, required: Server-issued identifier

## Request body

- object
  - `events` object[], required
    - `id` string, uuid, required
    - `kind` '402' | 'serve', required
    - `resource` string, required: Exact registered canonical route_pattern; no URL, query, customer-specific path or content.
    - `at` string, date-time, required: UTC Z timestamp; no older than24h, at most5min ahead.

## Response `200`

Recorded atomically or already recorded

- object
  - `accepted` integer, required
  - `duplicates` integer, required

## Other responses

- `400`: Invalid batch or unregistered resource
- `403`: Invalid merchant secret
- `429`: IP or merchant batch limit exceeded
- `503`: Storage unavailable; retry unchanged event IDs

---

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