Write
set_seo
Sets the SEO title, meta description, and Open Graph image for the authenticated creator's outline profile.
Requires Pro
This tool requires an active Pro subscription (seoTools entitlement). Calling it on a free account returns a FORBIDDEN_FEATURE error. Upgrade at outli.ne/dashboard.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| outlineId | string | — | Outline ID to update. Omit to target the authenticated user's own outline. |
| title | string | — | SEO title tag shown in browser tabs and Google results. Omit to leave unchanged. |
| description | string | — | SEO meta description shown in Google snippets and social link previews. Omit to leave unchanged. |
| imageId | string | null | — | Numeric media ID (as a string) for the Open Graph image. Pass null to clear the current OG image. Omit to leave unchanged. Must be a valid integer string — use a media ID from the user's library. |
Response
| Field | Type | What it means |
|---|---|---|
| outlineId | string | Numeric ID of the updated outline, returned as a string. |
| seo.title | string | undefined | The SEO title now stored on the outline after the merge. |
| seo.description | string | undefined | The SEO meta description now stored on the outline after the merge. |
| seo.imageId | number | null | Numeric media ID of the OG image now stored. Null if no image is set. |
Example
Request
json
{
"outlineId": "42",
"title": "Sara Järvinen — Tattoo Artist, Helsinki",
"description": "Custom fine-line and botanical tattoos. Book a consultation or browse the portfolio.",
"imageId": "187"
}Response
json
{
"outlineId": "42",
"seo": {
"title": "Sara Järvinen — Tattoo Artist, Helsinki",
"description": "Custom fine-line and botanical tattoos. Book a consultation or browse the portfolio.",
"imageId": 187
}
}When to use
Call this after the profile structure is built and media is in the library — it is the final discoverability step before publish. Also call it any time the creator's headline, positioning, or hero image changes and the Google/social link preview needs to reflect the update.
Gotchas
Watch out
- Requires a Pro subscription (
seoToolsentitlement) — returnsFORBIDDEN_FEATUREfor free accounts. imageIdmust be passed as a string but is stored and returned as a number; non-numeric strings returnVALIDATION_ERROR.- All content params are optional and independently patched — omitting a param preserves the existing value, so you never need to re-send fields you aren't changing.
- Pass
imageId: null(notundefined, not an empty string) to explicitly clear the OG image — omittingimageIdentirely leaves the existing image untouched.