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
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.
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.