Skip to main content
POST
/
products
Create product
curl --request POST \
  --url https://api.akua.dev/v1/products \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "PostgreSQL Managed",
  "package_id": "<string>",
  "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://akua-1dce587a.mintlify.app/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"

Body

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

"PostgreSQL Managed"

package_id
string
required
Required string length: 1 - 54
package_version_pin
object
required
custom_image
string<uri>

Custom display image URL — overrides the package logo

custom_description
string

Custom display description — overrides the package description

Maximum string length: 500
marketplace
object

Marketplace listing config. Omit to keep the product unlisted.

Response

Product created

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.