Skip to main content
PATCH
/
products
/
{id}
Update product
curl --request PATCH \
  --url https://api.akua.dev/v1/products/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'if-match: <if-match>' \
  --data '
{
  "name": "PostgreSQL Managed",
  "package_version_pin": {},
  "custom_image": "<string>",
  "custom_description": "<string>"
}
'
{
  "id": "prod_j572abc123def456",
  "name": "PostgreSQL Managed",
  "workspace_id": "<string>",
  "package": {
    "id": "pkg_j572abc123def456",
    "version_pin": {},
    "default_version_id": "<string>"
  },
  "marketplace": {
    "published": true
  },
  "created_at": 1,
  "updated_at": 1,
  "etag": "<string>",
  "custom_image": "<string>",
  "custom_description": "<string>",
  "archived_at": 1,
  "archive_reason": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://docs.akua.dev/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

workspace API token (sk_akua_...) or OAuth2 JWT. Create tokens at https://akua.dev/developers/api-tokens

Headers

akua-context
string

Optional workspace/scope context for the request. Carries a single workspace wire id (ws_…) today. Only needed for broad tokens — a workspace-owned token implies its workspace.

Required string length: 1 - 53
Example:

"ws_j572abc123def456"

idempotency-key
string

Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.

Required string length: 1 - 64
Example:

"create-prod-2026-05-07"

if-match
string
required

The etag of the resource version the client last read. Required on writes when the resource exposes an etag field. Mismatch returns 409 ABORTED with the current etag in the error metadata.

Required string length: 1 - 256
Example:

"42"

Path Parameters

id
string
required

Product ID

Required string length: 1 - 55
Example:

"prod_j572abc..."

Body

application/json
name
string
Required string length: 2 - 64
Example:

"PostgreSQL Managed"

package_version_pin
object
custom_image
string<uri>
custom_description
string
Maximum string length: 500
marketplace
object

Marketplace listing config. Omit to keep the product unlisted.

Response

Product updated

id
string
required
Required string length: 1 - 55
Example:

"prod_j572abc123def456"

name
string
required
Example:

"PostgreSQL Managed"

workspace_id
string
required
Required string length: 1 - 53
package
object
required

Reference to the Package backing this product. Fetch full details via GET /v1/packages/{id}.

marketplace
object
required

Marketplace listing configuration. When null the product is not listed.

created_at
integer
required

Unix timestamp (seconds)

Required range: x >= 0
updated_at
integer
required

Unix timestamp (seconds)

Required range: x >= 0
etag
string
required
state
enum<string>
required

Product lifecycle state.

Available options:
active,
archived
custom_image
string

Custom display image URL — overrides the package logo on customer-facing pages

custom_description
string

Custom display description — overrides the package description

archived_at
integer

When the product was archived, expressed as Unix seconds since epoch.

Required range: x >= 0
archive_reason
string

Reason supplied by the seller when archiving.