---
title: "Create private draft"
method: POST
path: "/api/v1/submissions"
---

# Create private draft

`POST /api/v1/submissions`

## Request

- Base URL: `https://submitby.ai`
- URL: `https://submitby.ai/api/v1/submissions`
- Auth: none declared. Required headers: `Idempotency-Key`

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `url` string, required
  - `name` string, required
  - `description` string, required
  - `icon_url` string, nullable: Optional public HTTPS icon URL. Omit or set null to discover the first Apple touch icon, then the favicon.
  - `category` string
  - `tags` string
  - `route` 'badge' | 'paid', required
  - `tagline` string: One line, in your own words. Shown on cards.
  - `long_description` string: Plain text, 200-800 words. Separate paragraphs with a blank line. Explain what it does, how it works, and how it differs. Do not copy website text.
  - `audience` string: Who the project is for.
  - `not_for` string: Who should choose something else.
  - `screenshots` object[]: Up to 8 screenshots. We copy them; hosted images must stay public until verification finishes.
    - `url` string, required: Public HTTPS PNG, JPEG, or WebP, max 2 MB.
    - `alt` string, required
  - `video_url` string: Public demo video page.
  - `pricing` object
    - `model` 'free' | 'freemium' | 'free_trial' | 'paid' | 'open_source' | 'contact_sales', required
    - `starting_price` string: For example: $6/month.
    - `free_plan` boolean
  - `platforms` string[]
  - `links` object: Official profiles and pages of the project.
  - `mcp_url` string: Remote MCP endpoint. We check that it answers initialize.
  - `openapi_url` string
  - `app_store_url` string
  - `play_store_url` string
  - `alternatives` string[]: Websites of similar products.
  - `faq` object[]: Answer the faq_questions from get_submission, or your own. Answers must match the website.
    - `question` string, required
    - `answer` string, required

## Response `200`

Success

## Other responses

- `201`: Draft, control_token, verification, next_actions
- `404`: Unknown submission or invalid control token
- `409`: State conflict; follow the returned next action
- `422`: Invalid input
- `429`: Rate limited; see Retry-After

---

[API](https://skmtc.dev/submitby/apis/submitby-ai.md) · [All operations](https://skmtc.dev/submitby/apis/submitby-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/submitby/apis/submitby-ai/revisions/b064e781c910?raw)
