Agorapulse Conversations API
Read conversation threads from your social inbox.
Read conversation threads from your social inbox.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/agorapulse-conversations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Agorapulse Conversations API
description: "# Agorapulse API\n\nWelcome to the Agorapulse API. Use it to manage publishing, social inbox conversations, analytics and your content library programmatically.\n\nThe API is organized around REST, uses resource-oriented URLs, returns JSON, and relies on standard HTTP response codes and verbs.\n\n## Base URL\n\nAll requests go to the base URL shown in the **Server** selector, and every endpoint is versioned under a `/v1.0/` prefix.\n\n## Authentication\n\nThe API authenticates requests with an **API key** sent in the `X-API-KEY` HTTP header. Every request must include it:\n\n```http\nGET /v1.0/core/organizations HTTP/1.1\nHost: api.agorapulse.com\nX-API-KEY: your-api-key\n```\n\n```bash\ncurl https://api.agorapulse.com/v1.0/core/organizations \\\n -H \"X-API-KEY: your-api-key\"\n```\n\nKeep your API key secret: it grants access to your account's data. Requests without a valid key return `401 Unauthorized`.\n\n## Resource hierarchy\n\nMost resources are nested under an organization and a workspace:\n\n```\n/v1.0/<domain>/organizations/{organizationId}/workspaces/{workspaceId}/...\n```\n\nStart from `GET /v1.0/core/organizations` to discover your organizations, then list their workspaces and profiles.\n\n## Errors\n\nThe API uses conventional HTTP status codes: `2xx` for success, `4xx` for client errors (a missing or invalid parameter, an unknown resource, a missing API key), and `5xx` for server errors.\n\nError responses carry a JSON body describing the problem, except for `405`, `406` and `415`, which answer with a status only:\n\n```json\n{\n \"code\": 1005,\n \"subCode\": 1104,\n \"message\": \"Media not found: pubmedia_abc123\"\n}\n```\n\n`code` identifies the error family: either a global one (`1` internal, `2` unauthorized, `3` rate limit exceeded, `4` unprocessable input, `5` validation failed), or the component that produced the error. That component is usually the feature you addressed, but not always — a request whose path matches no endpoint is rejected by the API gateway itself and carries the gateway's own code, `1013`, whichever feature the path pointed at. `subCode` is optional and, when present, pinpoints the exact cause within that component; the endpoints that return one document its values. `message` is a human-readable explanation and is not meant to be parsed.\n\n## Webhooks\n\nAgorapulse can push events to your endpoints. See the **Webhooks** section for the available events (for example `PUBLISHING_POST` and `INBOX_ITEM`) and their payloads.\n"
version: '1.0'
contact:
name: Agorapulse API Support
url: https://www.agorapulse.com
email: support@agorapulse.com
x-logo:
url: docs/img/logo.svg
altText: Agorapulse
servers:
- url: https://api.agorapulse.com
description: Production
security:
- bearerAuth: []
tags:
- name: Conversations
description: Read conversation threads from your social inbox.
paths:
? /v1.0/inbox/organizations/{organizationId}/workspaces/{workspaceId}/accounts/{accountUid}/conversations/{conversationId}/messages
: get:
tags:
- Conversations
summary: Get conversation messages
operationId: getMessages
parameters:
- name: organizationId
in: path
description: Organization id
required: true
schema:
type: integer
example: 1419
- name: workspaceId
in: path
description: Workspace id
required: true
schema:
type: integer
example: 1416
- name: accountUid
in: path
description: Account uid
required: true
schema:
type: string
example: facebook_611
- name: conversationId
in: path
description: Conversation id
required: true
schema:
type: string
- name: since
in: query
description: Filter messages created after this date (inclusive). ISO 8601 format.
schema:
type: string
format: date-time
example: '2025-10-01T09:00:00.000Z'
- name: until
in: query
description: Filter messages created before this date (inclusive). ISO 8601 format.
schema:
type: string
format: date-time
example: '2025-10-15T13:00:00.000Z'
- name: offset
in: query
description: Offset for pagination
schema:
type: string
- name: limit
in: query
description: Maximum number of messages to return per page. Must be between 1 and 25.
schema:
type: integer
example: 10
- name: order
in: query
description: Sort order for the results. ASC for ascending (oldest first), DESC for descending (newest first).
schema:
$ref: '#/components/schemas/Order'
example: DESC
responses:
'200':
description: getMessages 200 response
content:
application/json:
schema:
$ref: '#/components/schemas/MessagesSearchResponse'
components:
schemas:
Profile:
required:
- name
- network
- uid
type: object
properties:
uid:
minLength: 1
type: string
name:
type: string
network:
$ref: '#/components/schemas/Network'
MessagesSearchResponse:
required:
- items
- offset
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ItemDTO'
offset:
type: string
ItemType:
type: string
enum:
- PRIVATE_MESSAGE
- CONVERSATION
- COMMENT
- POST
Order:
type: string
enum:
- ASC
- DESC
ItemCreator:
required:
- id
- name
type: object
properties:
id:
type: string
name:
type: string
ItemSentiment:
type: string
enum:
- POSITIVE
- NEGATIVE
- NEUTRAL
Network:
type: string
enum:
- BLUESKY
- FACEBOOK
- GOOGLE
- INSTAGRAM
- LINKEDIN
- PINTEREST
- THREADS
- TIKTOK
- TWITTER
- YOUTUBE
AbstractItem:
type: object
properties:
id:
type: string
parentId:
type: string
workspaceId:
type: integer
format: int64
creationDate:
type: string
format: date-time
type:
$ref: '#/components/schemas/ItemType'
text:
type: string
agorapulseLink:
type: string
networkLink:
type: string
profile:
$ref: '#/components/schemas/Profile'
creator:
$ref: '#/components/schemas/ItemCreator'
labels:
type: array
items:
type: string
sentiment:
$ref: '#/components/schemas/ItemSentiment'
ItemDTO:
$ref: '#/components/schemas/AbstractItem'
securitySchemes:
bearerAuth:
type: apiKey
name: X-API-KEY
in: header
HookSignature:
description: 'The signature of the webhook request, used to verify the authenticity of the request.
The signature is a SHA256 HMAC signature computed on the request body using the shared secret from your webhook subscription.
'
type: apiKey
name: X-Hook-Signature
in: header
x-tagGroups:
- name: Account & Workspaces
tags:
- Organizations
- Workspaces
- Profiles
- Groups
- name: Publishing
tags:
- Drafts
- Calendar notes
- Pinterest boards
- name: Content Library
tags:
- Media
- name: Inbox & Engagement
tags:
- Conversations
- Items
- Replies
- name: Analytics & Reporting
tags:
- Reports
- name: System
tags:
- Health