Skip to main content
POST
/
v2
/
publishers
Create Publisher
curl --request POST \
  --url https://api.tusky.io/v2/publishers \
  --header 'Content-Type: application/json' \
  --data '
{
  "state": "<string>",
  "epochs": 123,
  "quilt": true,
  "permanent": true,
  "share": true,
  "autoConvert": true,
  "environmentId": "<string>"
}
'
{
  "id": "<string>",
  "state": "<string>",
  "epochs": 123,
  "quilt": true,
  "permanent": true,
  "share": true,
  "autoConvert": true,
  "environmentId": "<string>",
  "createdAt": "<string>"
}
Create a new publisher. Each account gets one active publisher automatically on sign-up. You can create additional publishers with different configurations and attach them to specific environments.

Request Body

state
string
default:"ready"
Initial state of the publisher. One of ready, idle, deactivated. At least one publisher must not be deactivated.
epochs
number
default:"1"
required
Default number of Walrus storage epochs for uploads made through this publisher. Each epoch is approximately 2 weeks. Range: 1–100.
quilt
boolean
default:"true"
Whether to batch files into quilts. When true, multiple files are combined into a single Walrus blob for cost efficiency. When false, each file is published as a standalone blob.
permanent
boolean
default:"false"
Whether blobs are permanent (non-deletable). When true, blobs persist for the full epoch duration and cannot be deleted early. When false, blobs can be deleted before their epochs expire.
share
boolean
default:"false"
Whether blobs published by this publisher are shared. When true, the published content is accessible to other Tusky users via standard Walrus aggregators. When false, content is private to the account.
autoConvert
boolean
default:"true"
Whether to automatically convert SUI to WAL before upload when the managed wallet’s WAL balance is insufficient. When true, the publisher swaps SUI → WAL via on-chain DEX at the best available rate. When false, uploads fail with 402 if WAL balance is too low.
environmentId
string
Optional environment ID to attach this publisher to. When set, this publisher configuration is used for all uploads to the specified environment, overriding the account default.

Response

id
string
Unique publisher identifier.
state
string
Current operational state. One of ready, idle, working, deactivated.
epochs
number
Default storage epoch count.
quilt
boolean
Whether quilt batching is enabled.
permanent
boolean
Whether blobs are non-deletable.
share
boolean
Whether blobs are shared.
autoConvert
boolean
Whether SUI → WAL auto-conversion is enabled.
environmentId
string
The environment this publisher is attached to, or null if it is the account default.
createdAt
string
ISO 8601 creation timestamp.

Example

curl -X POST https://api.tusky.io/v2/publishers \
  -H "Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "epochs": 5,
    "quilt": false,
    "permanent": true,
    "share": false,
    "autoConvert": true,
    "environmentId": "env_abc123"
  }'

Response

{
  "id": "pub_7f3a2b1c",
  "state": "ready",
  "epochs": 5,
  "quilt": false,
  "permanent": true,
  "share": false,
  "autoConvert": true,
  "environmentId": "env_abc123",
  "createdAt": "2026-03-05T12:00:00Z"
}
When an environment has an attached publisher, uploads to that environment use the attached publisher’s configuration instead of the account default.