Listings

Update a listing

Change the title or description, or pause and resume the listing. state: suspended stops the listing for every installing project at once; their installs are kept. state: listed resumes a listing you suspended, provided naturali had listed it; nobody reinstalls. A listing naturali suspended cannot be resumed here, and an invalid move answers 409 invalid_listing_state.

patch/v1/projects/{project_id}/listings/{listing_id}

Request

  • Base URL: https://api.naturali.ai
  • URL: https://api.naturali.ai/v1/projects/{project_id}/listings/{listing_id}
  • 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)

Request body

titlestring
descriptionstring nullable
state'suspended' | 'listed'

Pause the listing, or resume one you paused.

Example request

{
  "title": "Invoice OCR",
  "description": "Reads a scanned invoice and returns its fields.",
  "state": "suspended",
  "pricing": [
    {
      "component": "page",
      "unit": "count",
      "quantity": {
        "var": "response.page_count"
      },
      "unit_price_usd": 0.002
    }
  ]
}

Response

Listing updated.

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.