---
title: "Meta Capi Relay"
method: POST
path: "/api/capi"
tags: ["Analytics"]
---

# Meta Capi Relay

`POST /api/capi`

Relay a browser-fired Meta Pixel event to the Conversions API, sharing the
Pixel's ``event_id`` so Meta dedups the two copies into one.

Forward-only: enriches with server IP / User-Agent and ``external_id`` (the
device id) but does NOT persist anything — ``guest_user.ext_ids`` is written
via the checkout attribution flow. Runs in a background task so the funnel
never blocks on Meta, and ``send_capi_event`` is a no-op without Meta creds.

## Request body

- CapiEvent
  - `event_name` string, required
  - `event_id` string, required
  - `event_source_url` string, nullable
  - `custom_data` object
  - `device_id` string, nullable
  - `email` string, nullable
  - `fbp` string, nullable
  - `fbc` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/explee/apis/explee-api.md) · [All operations](https://skmtc.dev/explee/apis/explee-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/explee/explee-api/revisions/f169bc6e9447/schema)
