Write

update_card

Updates content fields on an existing card — heading, subheading, description, button, badge, rating, cover color, or visibility. Only supplied fields are changed; omitted fields are untouched.


Parameters

NameTypeRequiredDescription
outlineIdstringOutline ID. Defaults to your own outline.
stackIdstringYesID of the stack containing the card.
cardIdstringYesID of the card to update. Get from list_cards.
fieldsobjectYesFields to update. All sub-fields are optional — only supplied ones change.
fields.headingstringMain heading text.
fields.subheadingstringSubheading text.
fields.descriptionstringBody description text.
fields.buttonTextstringCTA button label.
fields.buttonUrlstringCTA button URL. Must start with https:// or http://.
fields.badgestring | nullBadge label text, or null to remove.
fields.ratingnumber | nullStar rating (e.g. 5.0), or null to remove.
fields.coverColorstringBackground color hex for the card cover.
fields.hiddenbooleantrue to hide the card from public view without deleting it.

Response

FieldTypeWhat it means
outlineIdstringResolved outline ID.
stackIdstringThe stack the card belongs to.
cardIdstringThe card that was updated.
updatedobjectThe full card state after the update — all fields, including those you didn't change.

Example

Request

json
{ "stackId": "stack_abc", "cardId": "card_xyz789", "fields": { "heading": "Brand Photography", "subheading": "Half-day & full-day packages", "description": "In-studio or on-location brand photography for founders and creative teams. Natural light preferred.", "buttonText": "Book a call", "buttonUrl": "https://cal.com/alexrivera" } }

Response

json
{ "outlineId": "42", "stackId": "stack_abc", "cardId": "card_xyz789", "updated": { "cardId": "card_xyz789", "kind": "service", "heading": "Brand Photography", "subheading": "Half-day & full-day packages", "description": "In-studio or on-location brand photography for founders and creative teams. Natural light preferred.", "buttonText": "Book a call", "buttonUrl": "https://cal.com/alexrivera" } }

When to use

After add_card creates an empty card, use update_card to fill in the content. Also use to refine existing content based on creator feedback or analytics data.


Gotchas

Watch out

  • Only supplied fields change — you cannot accidentally wipe a field by omitting it.
  • buttonUrl must start with https:// or http:// — bare domains like cal.com/xyz will fail validation.
  • Use hidden:true to temporarily pull a card from the public profile without losing content.
  • Get the cardId and stackId from list_cards first.