Tag posts
Tags organize posts (and media) inside your workspace — for campaigns, content pillars, or clients. A workspace can have up to 5 tags, and tag names must be unique.
Create a tag
name (1–50 characters) and a hex color are required.
curl -X POST https://api.schedulin.app/v0/tags \ -H "x-api-key: $SCHEDULIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Launch", "color": "#22c55e" }'
const tag = await client.tags.create({ name: "Launch", color: "#22c55e" });
tag = client.tags.create(name="Launch", color="#22c55e")
Creating a tag with a name that already exists returns 409 Conflict. List existing tags
with GET /v0/tags (client.tags.list()), which returns them under data.
Tag a post
Pass tagIds when creating a post:
curl -X POST https://api.schedulin.app/v0/posts \ -H "x-api-key: $SCHEDULIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "socialAccountId": "acc_123", "caption": "Launch week, day 1 🚀", "tagIds": ["tag_abc"], "action": "draft" }'
Or replace all tags on an existing post with PUT /v0/posts/{id}/tags — send an empty array
to clear them:
curl -X PUT https://api.schedulin.app/v0/posts/post_789/tags \ -H "x-api-key: $SCHEDULIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tagIds": ["tag_abc"] }'
await client.posts.updateTags({ id: "post_789", tagIds: ["tag_abc"] });
client.posts.update_tags("post_789", tag_ids=["tag_abc"])
Filter posts by tag
curl "https://api.schedulin.app/v0/posts?tagIds=tag_abc" \ -H "x-api-key: $SCHEDULIN_API_KEY"
const { posts } = await client.posts.list({ tagIds: ["tag_abc"], tagMode: "ANY" });
posts = client.posts.list(tag_ids=["tag_abc"], tag_mode="ANY").posts
With several tags, tagMode=ANY (posts with at least one of the tags) or tagMode=ALL
(posts with every tag) controls the match.