Presets
Manage publishing presets via API
Presets
Publishing presets are saved configurations of platform selections and cross-linking behavior. Instead of specifying platforms on every post, you can apply a preset. Octopost includes system presets (e.g., "All Platforms", "Professional") and supports custom presets.
The Preset Object
{
"id": "preset_abc123",
"name": "Professional",
"platforms": ["linkedin", "twitter"],
"primary_platform": "linkedin",
"cross_link_enabled": true,
"cross_link_template": "New post on {platform}: {link}",
"is_default": false,
"is_system": false,
"created_at": "2026-03-20T10:00:00Z",
"updated_at": "2026-03-20T10:00:00Z"
}Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique preset identifier. |
name | string | Display name for the preset. Maximum 100 characters. |
platforms | string[] | Platforms included in this preset. |
primary_platform | string | null | The platform to publish to first when cross-linking is enabled. The post URL from this platform is used in cross-link text for other platforms. |
cross_link_enabled | boolean | Whether to append a link to the primary platform post when publishing to secondary platforms. |
cross_link_template | string | Template for cross-link text. Available variables: {platform}, {link}, {title}, {excerpt}. |
is_default | boolean | Whether this is the user's default preset, applied automatically to new posts in the dashboard. |
is_system | boolean | Whether this is a built-in system preset. System presets cannot be modified or deleted. |
created_at | string | ISO 8601 timestamp. |
updated_at | string | ISO 8601 timestamp. |
List Presets
GET /presets
Returns all presets, including system presets and user-created presets.
Example
curl https://api.octopost.ink/v1/presets \
-H "Authorization: Bearer oct_live_abc123"{
"presets": [
{
"id": "preset_sys_001",
"name": "All Platforms",
"platforms": ["twitter", "linkedin", "bluesky", "mastodon", "threads"],
"primary_platform": null,
"cross_link_enabled": false,
"cross_link_template": "New post on {platform}: {link}",
"is_default": false,
"is_system": true,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
},
{
"id": "preset_sys_002",
"name": "Text-first",
"platforms": ["twitter", "bluesky", "mastodon", "threads"],
"primary_platform": null,
"cross_link_enabled": false,
"cross_link_template": "New post on {platform}: {link}",
"is_default": false,
"is_system": true,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
},
{
"id": "preset_abc123",
"name": "Professional",
"platforms": ["linkedin", "twitter"],
"primary_platform": "linkedin",
"cross_link_enabled": true,
"cross_link_template": "New post on {platform}: {link}",
"is_default": true,
"is_system": false,
"created_at": "2026-03-20T10:00:00Z",
"updated_at": "2026-03-20T10:00:00Z"
}
]
}Create a Preset
POST /presets
Creates a new publishing preset.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name. Maximum 100 characters. |
platforms | string[] | Yes | Array of platform identifiers. |
primary_platform | string | No | Platform to publish first for cross-linking. Must be included in platforms. |
cross_link_enabled | boolean | No | Enable cross-linking. Defaults to false. |
cross_link_template | string | No | Cross-link text template. Defaults to "New post on {platform}: {link}". |
Example
curl -X POST https://api.octopost.ink/v1/presets \
-H "Authorization: Bearer oct_live_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "Dev Community",
"platforms": ["twitter", "bluesky", "mastodon"],
"primary_platform": "twitter",
"cross_link_enabled": true,
"cross_link_template": "Also posted on {platform}: {link}"
}'{
"id": "preset_def456",
"name": "Dev Community",
"platforms": ["twitter", "bluesky", "mastodon"],
"primary_platform": "twitter",
"cross_link_enabled": true,
"cross_link_template": "Also posted on {platform}: {link}",
"is_default": false,
"is_system": false,
"created_at": "2026-04-03T15:00:00Z",
"updated_at": "2026-04-03T15:00:00Z"
}Update a Preset
PUT /presets/:id
Updates an existing preset. System presets cannot be updated.
Request Body
All fields are optional. Only include the fields you want to change.
| Field | Type | Description |
|---|---|---|
name | string | Updated display name. |
platforms | string[] | Updated platform list. |
primary_platform | string | null | Updated primary platform, or null to remove. |
cross_link_enabled | boolean | Enable or disable cross-linking. |
cross_link_template | string | Updated cross-link template. |
Example
curl -X PUT https://api.octopost.ink/v1/presets/preset_def456 \
-H "Authorization: Bearer oct_live_abc123" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["twitter", "bluesky", "mastodon", "threads"],
"cross_link_template": "Read the full thread on {platform}: {link}"
}'{
"id": "preset_def456",
"name": "Dev Community",
"platforms": ["twitter", "bluesky", "mastodon", "threads"],
"primary_platform": "twitter",
"cross_link_enabled": true,
"cross_link_template": "Read the full thread on {platform}: {link}",
"is_default": false,
"is_system": false,
"created_at": "2026-04-03T15:00:00Z",
"updated_at": "2026-04-03T15:30:00Z"
}Errors
| Code | Reason |
|---|---|
403 Forbidden | Cannot modify a system preset. |
404 Not Found | Preset does not exist. |
422 Validation Error | primary_platform is not included in platforms. |
Delete a Preset
DELETE /presets/:id
Deletes a preset. System presets cannot be deleted. If the deleted preset was the default, no preset will be marked as default.
Example
curl -X DELETE https://api.octopost.ink/v1/presets/preset_def456 \
-H "Authorization: Bearer oct_live_abc123"Returns 204 No Content on success.
Errors
| Code | Reason |
|---|---|
403 Forbidden | Cannot delete a system preset. |
404 Not Found | Preset does not exist. |
Set Default Preset
POST /presets/:id/set-default
Marks a preset as the default. The previously default preset (if any) is unset. The default preset is applied automatically when creating posts in the dashboard.
Example
curl -X POST https://api.octopost.ink/v1/presets/preset_abc123/set-default \
-H "Authorization: Bearer oct_live_abc123"{
"id": "preset_abc123",
"name": "Professional",
"platforms": ["linkedin", "twitter"],
"primary_platform": "linkedin",
"cross_link_enabled": true,
"cross_link_template": "New post on {platform}: {link}",
"is_default": true,
"is_system": false,
"created_at": "2026-03-20T10:00:00Z",
"updated_at": "2026-04-03T16:00:00Z"
}