# product.rejected

Product rejected

3DAPI rejected a design or extra in a product; `review.reason` says why.

Sent as a signed POST to every endpoint subscribed to `product.rejected`. Signing, retries and deduplication work the same for every event; see [how delivery works](https://public-api.dapi.digital/docs/guides/webhooks.md#delivery).

## Payload

The event.

-   `id` (string): Unique identifier of the event, prefixed with `evt_`. Treat it as an opaque string: store it and compare it, never parse it.
-   `object` (string): Names the type of this object. Always `event`.
-   `type` (string)
-   `created_at` (timestamp): When it happened.
-   `data` (object): The object as it is now, exactly as its GET endpoint returns it, and what changed.
    -   `object` (Product): Something you sell: its variants, what they are made of, their prices and margins, and its storefront and review state.
        
        Described in [the product object](https://public-api.dapi.digital/docs/reference/products.md#product_object).
        
    -   `previous` (object or null): The fields that changed, with their values before the change. Null when nothing changed, as on creation.
    -   `region` (value or null): Always null: only `stock.low` names a region.

## Related events

-   [`product.approved`](https://public-api.dapi.digital/docs/reference/events/product.approved.md)

**Payload**

```json
{
  "id": "evt_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
  "object": "event",
  "type": "product.rejected",
  "created_at": "2026-10-14T10:02:00Z",
  "data": {
    "object": {
      "id": "prd_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
      "object": "product",
      "name": "PR Tracker",
      "slug": "pr-tracker",
      "category": {
        "id": "cat_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
        "object": "category",
        "name": "Desk accessories"
      },
      "review": {
        "status": "approved",
        "reason": null
      },
      "publishing": {
        "is_public": true,
        "unpublished_by": null,
        "can_publish": true,
        "blockers": []
      },
      "variant_count": 1,
      "price_range": {
        "min": {
          "amount": 5000,
          "currency": "usd"
        },
        "max": {
          "amount": 5000,
          "currency": "usd"
        }
      },
      "images": [
        {
          "url": "https://cdn.example.com/tracker.png",
          "primary": true
        }
      ],
      "created_at": "2026-04-21T07:34:06Z",
      "updated_at": "2026-10-02T11:12:40Z",
      "description": "A desk tracker for your personal records.",
      "options": [
        {
          "name": "Color",
          "values": [
            "Black",
            "Blue"
          ]
        }
      ],
      "variants": [
        {
          "id": "var_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
          "object": "variant",
          "sku": "TRACKER-BLUE",
          "name": "PR Tracker Blue",
          "status": "active",
          "options": [
            {
              "name": "Color",
              "value": "Blue"
            }
          ],
          "category": null,
          "pricing": {
            "price": {
              "amount": 5000,
              "currency": "usd"
            },
            "prices_include_vat": true,
            "costs": {
              "manufacturing": {
                "amount": 332,
                "currency": "usd"
              },
              "extra_parts": {
                "amount": 40,
                "currency": "usd"
              },
              "platform_fee": {
                "amount": 250,
                "currency": "usd"
              }
            },
            "earnings": {
              "amount": 4378,
              "currency": "usd"
            }
          },
          "shipping": {
            "tier": "medium",
            "determined_by": "volume",
            "chargeable_weight_grams": 820,
            "extra_small": false
          },
          "contents": [
            {
              "type": "design",
              "quantity": 1,
              "design": {
                "id": "dsg_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
                "object": "design",
                "name": "tracker.3mf"
              },
              "materials": [
                {
                  "id": "mat_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
                  "object": "material",
                  "name": "PLA Blue",
                  "custom": false
                }
              ]
            },
            {
              "type": "extra",
              "quantity": 4,
              "unit_price": {
                "amount": 10,
                "currency": "usd"
              },
              "extra": {
                "id": "xtr_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
                "object": "extra",
                "name": "M3 screw"
              }
            }
          ],
          "image": null
        }
      ],
      "attachments": [
        {
          "id": "att_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
          "object": "attachment",
          "name": "assembly-guide.pdf"
        }
      ],
      "storefront": {
        "url": "https://dapi.digital/store/acme/pr-tracker",
        "show_compliance_labels": true,
        "disclaimers": [
          {
            "title": "Production safety",
            "text": "Keep away from heat."
          }
        ]
      },
      "custom_label_url": null,
      "compliance": {
        "object": "product_compliance",
        "enforced": false,
        "complete": false,
        "missing": 1
      }
    },
    "previous": {
      "review": {
        "status": "pending",
        "reason": null
      }
    },
    "region": null
  }
}
```

---

3DAPI API Docs. This page on the web: https://public-api.dapi.digital/docs/reference/events/product.rejected. Index of every page: https://public-api.dapi.digital/docs/llms.txt.
