---
title: "Fulfill an offer"
method: POST
path: "/api/v2/offers/fulfillment_data"
tags: ["Offer Endpoints"]
---

# Fulfill an offer

`POST /api/v2/offers/fulfillment_data`

Retrieve all the information, including signatures, needed to fulfill an offer directly onchain. For trait offers with identifierOrCriteria '0', the server validates that the specified token matches the offer's trait criteria before generating fulfillment data.

## Request body

- FullfillmentDataRequest
  - `offer` OfferObject, required
    - `hash` string, required
    - `chain` string, required
    - `protocol_address` string, required
  - `fulfiller` FulfillerObject, required
    - `address` string, required
  - `consideration` ConsiderationObject
    - `asset_contract_address` string, required
    - `token_id` string, required
  - `units_to_fill` integer — Optional quantity of units to fulfill; defaults to 1 for offers
  - `include_optional_creator_fees` boolean — Whether to include optional creator fees in the fulfillment. If creator fees are already required, this is a no-op. Defaults to false.

## Response `200`

Offer fulfillment data retrieved successfully

## Other responses

- `400` — The request is invalid The order_hash does not exist The chain is not an EVM Chain The protocol_address is not a supported Seaport contract For other error reasons, see the response data.
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `500` — Internal server error. Please open a support ticket so OpenSea can investigate.

---

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