Admin

Review a listing

List a listing in review or one that is suspended, send one in review back to draft, or suspend any listing. A listing an operator suspends cannot be resumed by its publisher. An invalid move answers 409 invalid_listing_state.

put/v1/admin/listings/{listing_id}/state

Request

  • Base URL: https://api.naturali.ai
  • URL: https://api.naturali.ai/v1/admin/listings/{listing_id}/state
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://api.naturali.ai/authorize, token URL https://api.naturali.ai/token, scopes: mcp:access)

Path parameters

listing_idstring required

Request body

state'listed' | 'draft' | 'suspended' required

Example request

{
  "state": "listed"
}

Response

The listing in its new state.

idstring required
project_idstring required

The publishing project.

resource_type'tool' | 'agent' required

What the listing publishes.

resource_idstring required

The published tool or agent.

titlestring required
descriptionstring nullable required
state'draft' | 'in_review' | 'listed' | 'suspended' required

draft until submitted, in_review until naturali decides, listed in the marketplace, suspended when paused by its publisher or by naturali.

created_atstring date-time required
updated_atstring date-time required

Example response

{
  "id": "lst_V1StGXR8Z5jdHi6B",
  "project_id": "proj_V1StGXR8Z5jdHi6B",
  "resource_type": "tool",
  "resource_id": "tool_V1StGXR8Z5jdHi6B",
  "title": "Invoice OCR",
  "description": "Reads a scanned invoice and returns its fields.",
  "pricing": [
    {
      "component": "page",
      "unit": "count",
      "quantity": {
        "var": "response.page_count"
      },
      "unit_price_usd": 0.002
    }
  ],
  "pricing_next": {
    "effective_from": "2026-10-08T00:01:00.000Z",
    "pricing": [
      {
        "component": "page",
        "unit": "count",
        "quantity": {
          "var": "response.page_count"
        },
        "unit_price_usd": 0.002
      }
    ]
  },
  "state": "listed",
  "created_at": "2026-10-01T00:00:00.000Z",
  "updated_at": "2026-10-01T00:00:00.000Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.