---
title: "Submit one of your own listings for the public Market [write]"
method: POST
path: "/catalog/listings/{handle}/submission"
tags: ["catalog"]
---

# Submit one of your own listings for the public Market \[write\]

`POST /catalog/listings/{handle}/submission`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/catalog/listings/{handle}/submission`
- Auth: HTTP bearer

Stores the listing and its agent as they are now and puts them in front of a reviewer. Once approved, everyone sees the listing and can start it with `agent: "@handle"`; their session runs a hidden copy of the approved agent in their own workspace, on their own wallet. Later edits are not served until a new submission is approved. `fee` asks a flat fee for each task on top of usage; like everything else it takes effect, and changes, only when a submission carrying it is approved, and a submission without it makes the listing usage-only again. 403 `submissions_closed` when this workspace may not submit. 403 `pricing_closed` when `fee` is sent and this workspace may not set a price. 422 `not_submittable` when something is missing: the message names every item. 409 `already_in_review` while an earlier submission is waiting.

## Path parameters

- `handle` string, required

## Request body

- object
  - `seller_name` string, required: The name the Market shows as the maker. Not an email address.
  - `fee` object: The flat fee for each task, in whole US cents: 1 to 100000
    - `amount` string, required: Whole US cents
    - `currency` 'USD', required

## Response `201`

Submitted

- ListingSubmissionState
  - `open` boolean, required: Whether this workspace may submit listings to the public Market
  - `missing` string[], required: What still has to be true before the listing can be submitted, in words. Empty when it can be.
  - `pricing` object: Present only where this workspace may set a flat fee on its public listings.
    - `seller_share_percent` number, required: The part of each fee the seller keeps
    - `fee_cents_min` integer, required
    - `fee_cents_max` integer, required
  - `submission` object, nullable, required: The latest submission; null when the listing has never been submitted.
    - `status` 'in_review' | 'approved' | 'sent_back' | 'withdrawn', required
    - `seller_name` string, required
    - `submitted_at` string, date-time, required
    - `decided_at` string, date-time, nullable, required
    - `reason` string, nullable, required: What the reviewer wrote when sending it back
    - `fee` object: The flat fee per task it was submitted with; absent when it has none
      - `amount` string, required: Whole US cents
      - `currency` 'USD', required
  - `published` object, nullable, required: The approved version being served to everyone; null when the listing is not public.
    - `seller_name` string, required
    - `approved_at` string, date-time, required
    - `fee` object: The flat fee per task of the approved version; absent when it has none
      - `amount` string, required: Whole US cents
      - `currency` 'USD', required
  - `taken_down` object, nullable, required: Set when a reviewer took the public listing down and it has not been submitted again.
    - `at` string, date-time, required
    - `reason` string, nullable, required
  - `scheduled_check` object: What the scheduled checks of the approved version found. A public listing's approved version is checked when it is approved and then by the weekly conformance sweep, as its seller and on the seller's credit for usage, under a spend cap. Absent when the listing is not public.
    - `passing` boolean, nullable, required: Whether the required checks passed at the last scheduled run that finished; null before the first. False takes the listing's `conformance.required_passed` away for everyone; the listing stays public.
    - `reason` string, nullable, required: The required checks that failed, or why the latest run was skipped or could not finish
    - `checked_at` string, date-time, nullable, required
    - `running` boolean, required: Whether a scheduled run of this version is going now
    - `next_at` string, date-time, required

## Other responses

- `default`: Error — { error: { code, message } }

## Changes

- **2026-11-02** `e5e8f0229a99`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agentsky/apis/agentsky-developer-api/changes/catalog/listings/:handle/submission/post.md)

---

[API](https://skmtc.dev/agentsky/apis/agentsky-developer-api.md) - [All operations](https://skmtc.dev/agentsky/apis/agentsky-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentsky/apis/agentsky-developer-api/revisions/0d435187cd55?raw)
