Skip to main content
PUT
/
v2
/
creatives
/
{id}
curl -X PUT "https://app.tracklysms.com/api/v2/creatives/101" \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Summer Sale Promo v2",
    "message": "Exclusive summer deals! Shop now: {{link1}} Browse more: {{link2}} Reply STOP to opt out.",
    "offer_links": [
      {
        "key": "link1",
        "offer_id": "offer_abc123",
        "url_params": {"sub1": "sms"}
      },
      {
        "key": "link2",
        "offer_id": "offer_xyz789"
      }
    ]
  }'
{
  "id": 101,
  "slug": "cre_summer-sale-promo-v2_a1b2c3",
  "name": "Summer Sale Promo v2",
    "message": "Exclusive summer deals! Shop now: {{link1}} Browse more: {{link2}} Reply STOP to opt out.",
    "offer_links": [
      {
        "key": "link1",
        "offer_id": "offer_abc123",
        "url": null,
        "url_params": {"sub1": "sms"}
      },
      {
        "key": "link2",
        "offer_id": "offer_xyz789",
        "url": null,
        "url_params": {}
      }
    ],
    "offers": ["offer_abc123", "offer_xyz789"],
    "status": "active",
    "creative_type": "automated",
    "character_count": 131,
    "segment_count": 1,
    "created_at": "2025-06-10T12:00:00"
}
Updates an existing creative in your account. Only the fields you include in the request body are modified — omitted fields remain unchanged. If message or offer_links are updated, the character_count and segment_count are automatically recalculated.

Path Parameters

id
integer
required
The unique identifier of the creative to update.

Body Parameters

All body parameters are optional. Only include the fields you want to change.
name
string
Updated display name. Maximum 255 characters.
message
string
Updated message template. Maximum 1600 characters. Must contain at least one {{linkN}} placeholder if provided.
Updated array of offer link objects. Every {{linkN}} placeholder in the message (current or updated) must have a matching entry.
status
string
Updated status. Accepted values: active, paused, archived. Note that unlike creation, you can set the status to archived during an update.
creative_type
string
Updated creative type. Accepted values: automated, one_time, welcome.

Response Fields

The response is the full updated creative object (flat, not wrapped).

Examples

curl -X PUT "https://app.tracklysms.com/api/v2/creatives/101" \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Summer Sale Promo v2",
    "message": "Exclusive summer deals! Shop now: {{link1}} Browse more: {{link2}} Reply STOP to opt out.",
    "offer_links": [
      {
        "key": "link1",
        "offer_id": "offer_abc123",
        "url_params": {"sub1": "sms"}
      },
      {
        "key": "link2",
        "offer_id": "offer_xyz789"
      }
    ]
  }'
{
  "id": 101,
  "slug": "cre_summer-sale-promo-v2_a1b2c3",
  "name": "Summer Sale Promo v2",
    "message": "Exclusive summer deals! Shop now: {{link1}} Browse more: {{link2}} Reply STOP to opt out.",
    "offer_links": [
      {
        "key": "link1",
        "offer_id": "offer_abc123",
        "url": null,
        "url_params": {"sub1": "sms"}
      },
      {
        "key": "link2",
        "offer_id": "offer_xyz789",
        "url": null,
        "url_params": {}
      }
    ],
    "offers": ["offer_abc123", "offer_xyz789"],
    "status": "active",
    "creative_type": "automated",
    "character_count": 131,
    "segment_count": 1,
    "created_at": "2025-06-10T12:00:00"
}

Error Codes

HTTP StatusError CodeDescription
400name_too_longThe name exceeds 255 characters.
400message_too_longThe message exceeds 1600 characters.
400invalid_statusThe provided status is not active, paused, or archived.
400invalid_creative_typeThe provided creative_type is not automated, one_time, or welcome.
400missing_link_placeholderThe updated message must contain at least one {{linkN}} placeholder.
400missing_offer_links_for_placeholdersOne or more {{linkN}} placeholders in the message do not have a matching entry in offer_links.
400missing_offer_link_keyAn entry in offer_links is missing the required key field.
400missing_offer_link_offer_idAn entry in offer_links is missing the required offer_id field.
401unauthorizedAPI key is missing or invalid.
404not_foundNo creative exists with the given ID.
400offer_not_foundAn offer referenced in offer_links does not exist or does not belong to your account.

Next Steps

Creative Templates

Template best practices

Create Schedule

Use creatives in campaigns