Listings

Create a listing

Publish one of the project's tools or agents as a draft. Any project member may publish. An agent on a naturali model whose model has no price answers 503 model_not_priced. A resource that does not exist in the project answers 400 resource_not_found, and one that already has a listing 409 listing_exists.

post/v1/projects/{project_id}/listings

Request

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

resource_type'tool' | 'agent' required

What the listing publishes.

resource_idstring required

A tool or agent in this project.

titlestring required
descriptionstring nullable

Example request

{
  "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
    }
  ]
}

Response

Listing created.

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.