---
title: "Fulfill a listing"
method: POST
path: "/api/v2/listings/fulfillment_data"
tags: ["Listing Endpoints"]
---

# Fulfill a listing

`POST /api/v2/listings/fulfillment_data`

Retrieve all the information, including signatures, needed to fulfill a listing directly onchain.

## Request body

- FullfillListingRequest
  - `listing` ListingObject, 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
  - `recipient` string
  - `units_to_fill` integer — Optional quantity of units to fulfill; defaults to remaining units for listings
  - `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`

Listing 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.net/opensea/apis/opensea-api.md) · [All operations](https://skmtc.net/opensea/apis/opensea-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/opensea/opensea-api/versions/acee8835f2ae/schema)
