Skip to content

This guide walks you through posting to one or more social platforms from your terminal and from code.

1. Get an API key ​

  1. Sign up at socifyr.com
  2. Open Settings → API Keys and click Create key
  3. Copy the key — it starts with sk_ and is only shown once

You'll also need your workspace ID (visible in the URL once you're inside a workspace, e.g. socifyr.com/dashboard/<workspaceId>/...).

2. Connect a social account ​

In Settings → Integrations, click Connect next to a platform. Each connection is identified by a slug like instagram-mybrand or linkedin-myhandle. You'll use these slugs everywhere — never raw platform names.

See Connections for the full list of supported platforms.

3. Pick your surface ​

bash
# Install
bun add -g socifyr

# Configure once
socifyr configure --key sk_... --workspace <workspaceId>

# Post
socifyr post "Hello, world!" --to linkedin-myhandle,x-myhandle
typescript
import { Socifyr } from '@socifyr/sdk'

const socifyr = new Socifyr({
  apiKey: process.env.SOCIFYR_API_KEY!,
  workspaceId: process.env.SOCIFYR_WORKSPACE_ID!,
})

await socifyr.uploads.text({
  connections: ['linkedin-myhandle', 'x-myhandle'],
  text: 'Hello, world!',
})
bash
curl -X POST https://api.socifyr.com/api/content/text \
  -H "Authorization: Bearer sk_..." \
  -H "X-Workspace-Id: <workspaceId>" \
  -H "Content-Type: application/json" \
  -d '{
    "connections": ["linkedin-myhandle", "x-myhandle"],
    "text": "Hello, world!"
  }'

That's it — the post is queued, dispatched per platform, and you can poll socifyr status <id> (or GET /content/:id) for the result.

4. Try with media ​

Upload a local image and a video:

bash
socifyr post "New product reveal" --media banner.jpg --to instagram-mybrand
socifyr post "Watch this" --media demo.mp4 --to tiktok-me,instagram-mybrand --format short_video

Or reuse an asset from your media library:

bash
socifyr media list
# 🖼  banner.png   ID: 6a04f715d3d7d93575e65d13

socifyr post "Same banner, two days later" \
  --media-id 6a04f715d3d7d93575e65d13 \
  --to linkedin-myhandle

5. Schedule for later ​

bash
socifyr post "Deploy complete 🚀" \
  --to linkedin-myhandle \
  --at "2026-06-01T09:00:00Z"

6. Wait for results ​

Use --wait (CLI) or waitForCompletion (SDK) to block until every platform reports back:

bash
socifyr post "Cross-post test" --to instagram-mybrand,x-myhandle --wait
# ⚠ partial failure
#
#   ✓  instagram  → https://instagram.com/p/...
#   ✗  x
#       rate limit exceeded
typescript
const upload = await socifyr.uploads.text({
  connections: ['instagram-mybrand', 'x-myhandle'],
  text: 'Cross-post test',
})

const result = await socifyr.uploads.waitForCompletion(upload.id)
console.log(result.channels)

Next steps ​