---
title: "Create a criteria offer"
method: POST
path: "/api/v2/offers"
tags: ["Offer Endpoints"]
---

# Create a criteria offer

`POST /api/v2/offers`

Create a criteria offer to purchase any NFT in a collection or which matches the specified trait. For trait offers where the Build Offer endpoint returns identifierOrCriteria '0', use that value directly — trait matching is validated server-side at fulfillment time rather than via onchain merkle proof.

## Request body

- OfferWithCriteriaRequest
  - `protocol_data` SeaportProtocolDataModel, required
    - `parameters` SeaportParameters, required
      - `offerer` string, required
      - `zone` string
      - `offer` OfferItem[], required
        - `itemType` integer, required
        - `token` string, required
        - `identifierOrCriteria` string, required
        - `startAmount` string, required
        - `endAmount` string, required
      - `consideration` ConsiderationItem[], required
        - `itemType` integer, required
        - `token` string, required
        - `identifierOrCriteria` string, required
        - `startAmount` string, required
        - `endAmount` string, required
        - `recipient` string, required
      - `orderType` integer, required
      - `startTime` string, required
      - `endTime` string, required
      - `zoneHash` string, required
      - `salt` string, required
      - `conduitKey` string, required
      - `totalOriginalConsiderationItems` integer, required
      - `counter` string, required
    - `signature` string, required
  - `criteria` CriteriaRequest, required — Criteria for collection or trait offers. When traits are specified, the offer targets NFTs matching those traits. For supported collections, the identifierOrCriteria (merkle root) will be '0' and trait matching is validated server-side at fulfillment time.
    - `collection` CollectionCriteria, required
      - `slug` string, required
    - `contract` ContractCriteria
      - `address` string, required
    - `trait` TraitCriteria
      - `type` string, required
      - `value` string, required
    - `traits` TraitCriteria[] — Trait criteria for the offer. Each trait specifies a type and value that target NFTs must match. These traits are validated server-side at fulfillment time.
      - `type` string, required
      - `value` string, required
    - `numericTraits` NumericTraitCriteria[] — Numeric trait criteria for the offer. Each entry specifies a trait type with optional min/max range bounds. Can be combined with categorical traits.
      - `type` string, required
      - `min` number, double
      - `max` number, double
  - `protocol_address` string, required

## Response `200`

Criteria offer created successfully

## Other responses

- `400` — For error reasons, review 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)
