# Buffer

> Social media management platform for scheduling posts, managing queues, and publishing content across connected social channels.

Source: https://cotera.co/docs/reference/tools/individual-tools/buffer

---

**Authentication Type:** API Token\
**Description:** Social media management platform for scheduling posts, managing queues, and publishing content across connected social channels.

***

## Authentication

To authenticate, you'll need a Buffer access token. You can generate one from the [Buffer Developer Portal](https://buffer.com/developers/api).

**Required Scopes:**

* `publish` - Create and schedule posts to connected channels

***

## Posts

Create and schedule content across your Buffer-connected social channels.

### Create Post

Create a new post on a Buffer channel. Supports adding to the queue, posting immediately, scheduling for a custom time, or saving as a draft.

**Operation Type:** Mutation (Write)

**Parameters:**

* **channelId** `string` (required): The ID of the channel to post to
* **text** `string` (required): The text content of the post
* **mode** `enum` (nullable): How to share the post. Defaults to `addToQueue`
  * Options: `"addToQueue"`, `"shareNow"`, `"shareNext"`, `"customScheduled"`
  * When `"customScheduled"`, the `dueAt` field is required
* **schedulingType** `enum` (nullable): How to trigger scheduling. Omit to use your Buffer account default
  * Options: `"notification"` (mobile push), `"automatic"`
* **dueAt** `string` (nullable): ISO 8601 datetime for when to publish. Required when `mode` is `"customScheduled"`
* **saveToDraft** `boolean` (nullable): Save as a draft instead of scheduling

**Returns:**

* **success** `boolean`: Whether the post was created successfully
* **post** `object` (nullable): The created post, present when `success` is `true`
  * **id** `string`: Post identifier
  * **status** `string`: Post status (e.g., `"buffer"`, `"scheduled"`, `"sent"`)
  * **dueAt** `string | null`: Scheduled publish time in ISO 8601 format, or `null` for immediate posts
  * **text** `string`: Post text content
  * **channelId** `string`: ID of the channel the post is on
  * **channelService** `string`: Social network (e.g., `"twitter"`, `"instagram"`)
  * **shareMode** `string`: The share mode used
* **errorType** `string` (nullable): Error type identifier when `success` is `false`
* **message** `string` (nullable): Error message when `success` is `false`

**Example Usage:**

```json
{
  "channelId": "ch_abc123",
  "text": "Excited to share our latest update! #product",
  "mode": "customScheduled",
  "dueAt": "2025-09-01T10:00:00Z"
}
```

**Error types returned in the response (not thrown):**

| errorType                            | Meaning                  |
| ------------------------------------ | ------------------------ |
| `NotFoundError`                      | Channel not found        |
| `UnauthorizedError`                  | Missing or invalid token |
| `InvalidInputError`                  | Bad request parameters   |
| `LimitReachedError`                  | Plan post limit exceeded |
| `UnexpectedError` / `RestProxyError` | Unexpected API failure   |

***

## Account

### Get Account

Retrieve the details of the authenticated Buffer account, including all organizations the account belongs to.

**Operation Type:** Query (Read)

**Parameters:**

* None

**Returns:**

* **id** `string`: Account identifier
* **email** `string`: Account email address
* **name** `string`: Account display name
* **timezone** `string`: Account timezone
* **organizations** `array of objects`: Organizations the account belongs to
  * **id** `string`: Organization identifier
  * **name** `string`: Organization name
  * **ownerEmail** `string`: Email of the organization owner
  * **channelCount** `number`: Number of channels in the organization

**Example Usage:**

```json
{}
```

***

## Channels

### List Channels

List all social media channels connected to a Buffer organization.

**Operation Type:** Query (Read)

**Parameters:**

* **organizationId** `string` (required): The organization ID to list channels for

**Returns:**

* **channels** `array of objects`: Connected social channels
  * **id** `string`: Channel identifier
  * **name** `string`: Channel name (handle or username)
  * **displayName** `string`: Human-readable display name
  * **service** `string`: Social network (e.g., `"twitter"`, `"instagram"`, `"linkedin"`)
  * **type** `string`: Channel type
  * **timezone** `string`: Channel timezone
  * **isDisconnected** `boolean`: Whether the channel is disconnected
  * **isLocked** `boolean`: Whether the channel is locked
  * **isQueuePaused** `boolean`: Whether the posting queue is paused

**Example Usage:**

```json
{
  "organizationId": "org_xyz789"
}
```

***

## Common Use Cases

**Scheduled Social Campaigns:**

* Use `List Channels` to find the right channel ID, then `Create Post` with `mode: "customScheduled"` and a future `dueAt` to queue posts at specific times

**Queue Management:**

* Add posts with `mode: "addToQueue"` to let Buffer space them out automatically according to your channel's posting schedule

**Draft Workflow:**

* Set `saveToDraft: true` to create posts for review before publishing — drafts will not be scheduled or sent

**Account Discovery:**

* Call `Get Account` to discover your organization IDs, then `List Channels` to enumerate all connected social profiles

