---
title: "Deliver the gate reward after verification and payment"
method: POST
path: "/api/v1/profile/gates/{gateId}/fulfill"
tags: ["Gates"]
---

# Deliver the gate reward after verification and payment

`POST /api/v1/profile/gates/{gateId}/fulfill`

## Request

- Base URL: `https://api.proofable.me`
- URL: `https://api.proofable.me/api/v1/profile/gates/{gateId}/fulfill`
- Auth: none required

Post-verify reward delivery. Requires a verified proof (qHash) for the caller wallet. Paid gates also require paymentCheckoutSessionId (Stripe) or paymentTxHash (USDC). Returns the fulfillment payload and optional rewardProof / rewardPack. Payments are bound to a single gateId + qHash pair. Reuse returns 409 PAYMENT_ALREADY_USED.

## Path parameters

- `gateId` string, required

## Response `200`

Fulfillment result

## Other responses

- `400`: Invalid request, proof not verified, or gate misconfigured
- `401`: Authentication required
- `402`: Payment required
- `403`: Forbidden
- `404`: Gate or proof not found
- `409`: Payment already used for a different checkout
- `429`: Rate limited
- `500`: Server error
- `503`: Fulfillment temporarily unavailable

---

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