---
title: "Publish a member LinkedIn post (safety limit: 10/day; max 3000 chars), now or with schedule_at. Supports attachments. Co"
method: POST
path: "/api/v1/content/posts"
tags: ["content"]
---

# Publish a member LinkedIn post (safety limit: 10/day; max 3000 chars), now or with schedule_at. Supports attachments. Co

`POST /api/v1/content/posts`

## Request

- Base URL: `https://crispy.sh`
- URL: `https://crispy.sh/api/v1/content/posts`
- Auth: HTTP bearer

## Request body

- object
  - `text` string, required: The post content text (max 3000 chars)
  - `attachments` union[]: Optional attachments to include with the post (images, documents). Each item can be a plain URL string or {url, filename} object.
    - union
      - string: Public HTTPS URL of the image or document (filename derived automatically from URL)
      - object
        - `url` string, required: Public HTTPS URL of the image or document to attach
        - `filename` string: Filename with extension (e.g. 'chart.png', 'report.pdf'). Auto-derived from URL if omitted.
  - `schedule_at` string: ISO 8601 datetime to schedule the post for future publishing (e.g. '2026-03-10T09:00:00Z'). If omitted, post is published immediately.
  - `campaign_id` string: Campaign slug (from list_campaigns) to track this action under.
  - `as_organization` string: NOT SUPPORTED. Publishing on behalf of a company page is not available, so passing this is refused and nothing is posted. Retained only so the refusal explains itself instead of returning an opaque error. Omit it to post as the member.
  - `mentions` object[]: NOT SUPPORTED. Mention payloads are refused and nothing is posted. Omit this field and use plain text instead.
    - `name` string, required: Display name of the person or company to @-mention
    - `urn` string, required: LinkedIn URN (e.g. 'urn:li:person:ABC123' or 'urn:li:organization:456')
  - `external_link` string: NOT SUPPORTED. Link preview payloads are refused and nothing is posted. Include the URL in the post text instead.
  - `video_thumbnail` object: NOT SUPPORTED. Custom video thumbnails are refused and nothing is posted.
    - `url` string, required: Public URL of the thumbnail image
    - `filename` string, required: Filename with extension (e.g. 'thumb.jpg')

## Response `200`

Success

## Other responses

- `401`: Missing or expired API key
- `403`: Insufficient key scope or permission denied
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/crispy/apis/crispy-rest-api.md) · [All operations](https://skmtc.dev/crispy/apis/crispy-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crispy/apis/crispy-rest-api/revisions/6bed0974d9ce?raw)
