---
title: "Submit a product listing"
method: POST
path: "/api/submit"
tags: ["Listings"]
---

# Submit a product listing

`POST /api/submit`

## Request

- Base URL: `https://curlship.com`
- URL: `https://curlship.com/api/submit`
- Auth: none declared

Add a product to the directory. Goes live instantly — no review queue. One listing per root domain. Rate limit: 10 submissions/hour per IP.

Free tier gets a `nofollow` link; add the [badge](/badge) for `dofollow`. Pass `tier` to start a paid checkout instead: the listing is created (free until paid) and the response carries a `checkout_url`. `tier: "featured"` bids on the auction spot above Platinum — `amount_usd` optionally sets the bid, defaulting to the current minimum. If the payment system is unavailable the listing still lands as free and the response says so with `checkout_url: null`. An already-listed URL with a paid tier gets an upgrade checkout instead of a dead end.

## Request body

- object
  - `url` string, uri, required
  - `email` string, email, required
  - `tier` 'bronze' | 'bronze_lifetime' | 'silver' | 'gold' | 'platinum' | 'featured': Optional. Omit for the free tier. "featured" bids on the auction spot.
  - `amount_usd` number: Featured only — the bid in USD, defaulting to the current minimum. Same rules as POST /api/feature.

## Response `200`

Already listed (idempotent)

- object

## Other responses

- `201`: Listing created
- `400`: Invalid input
- `403`: URL on a blocklist (adult/phishing/malware)
- `409`: A listing for this domain already exists
- `429`: Rate limit exceeded. Retry-After is the wait in seconds. RateLimit-Policy names the window that was hit. RateLimit repeats that name with r=0 and t equal to Retry-After. Windows: submit 10 per 3600s, verify 30 per 3600s, checkout 30 per 3600s, edit 5 per 3600s per IP, edit-listing 3 per 86400s per listing.

---

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