Write
set_seo
Sets the SEO title, meta description, and Open Graph image for the authenticated creator's outline profile.
Free to use
Setting SEO metadata is free on every account tier — building a profile has no paid gate. Pro is required only to publish, which is what makes the profile (and this metadata) publicly visible.
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.