FINOS Messages API
The Messages API from FINOS — 7 operation(s) for messages.
The Messages API from FINOS — 7 operation(s) for messages.
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/finos-messages-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: Agent Messages API
description: 'This document refers to Symphony API calls to send and receive messages
and content. They need the on-premise Agent installed to perform
decryption/encryption of content.
- sessionToken and keyManagerToken can be obtained by calling the
authenticationAPI on the symphony back end and the key manager
respectively. Refer to the methods described in authenticatorAPI.yaml.
- Actions are defined to be atomic, ie will succeed in their entirety
or fail and have changed nothing.
- If it returns a 40X status then it will have sent no message to any
stream even if a request to some subset of the requested streams
would have succeeded.
- If this contract cannot be met for any reason then this is an error
and the response code will be 50X.
- MessageML is a markup language for messages. See reference here:
https://rest-api.symphony.com/docs/messagemlv2
- **Real Time Events**: The following events are returned when reading
from a real time messages and events stream ("datafeed"). These
events will be returned for datafeeds created with the v5 endpoints.
To know more about the endpoints, refer to Create Messages/Events
Stream and Read Messages/Events Stream. Unless otherwise specified,
all events were added in 1.46.
'
version: 25.8.1
servers:
- url: youragentURL.symphony.com/agent
tags:
- name: Messages
paths:
/v4/message/import:
post:
tags:
- Messages
summary: Import messages from other systems into Symphony.
description: 'Sends a message to be imported into the system.
Allows you to override the timestamp and author of the message with your desired values.
The requesting user must have the Content Management role.
The user that the message is intended to have come from must also be present in the conversation.
The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
Optionally the original message ID can be specified to identify the imported message for the purpose of repeat imports.
'
parameters:
- name: sessionToken
in: header
description: Session authentication token.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/V4MessageImportList'
required: true
responses:
200:
description: Message sent.
content:
application/json:
schema:
$ref: '#/components/schemas/V4ImportResponseList'
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
x-codegen-request-body-name: messageList
/v4/message/blast:
post:
tags:
- Messages
summary: Post a message to multiple existing streams.
description: 'Post a new message to the given list of streams. The stream can be a chatroom,
an IM or a multiparty IM.
You may include an attachment on the message.
The message can be provided as MessageMLV2 or PresentationML. Both formats support Freemarker templates.
The optional parameter "data" can be used to provide a JSON payload containing entity data.
If the message contains explicit references to entity data (in "data-entity-id" element attributes),
this parameter is required.
If the message is in MessageML and fails schema validation a client error results
This endpoint is idempotent, it means that a 200 response will be returned even if the message has not been
delivered to some streams. Check the `errors` map from the response in order to see on which stream(s) the
message has not been delivered.
The maximum number of streams where the message can be sent is limitted to 100.
Regarding authentication, you must either use the sessionToken which was created for delegated app access
or both the sessionToken and keyManagerToken together.
'
parameters:
- name: sessionToken
in: header
description: Authorization token used to make delegated calls.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
required:
- sids
properties:
sids:
type: array
description: A comma-separated list of Stream IDs
items:
type: string
message:
type: string
description: The message payload in MessageML.
data:
type: string
description: Optional message data in EntityJSON.
version:
type: string
description: 'Optional message version in the format "major.minor". If empty, defaults to the latest supported version.
'
attachment:
type: string
description: Optional file attachment.
format: binary
preview:
type: string
description: Optional attachment preview.
format: binary
responses:
200:
description: Blast message sent.
content:
application/json:
schema:
$ref: '#/components/schemas/V4MessageBlastResponse'
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
451:
description: Compliance Issues found in message or file
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
/v1/message/{id}:
get:
tags:
- Messages
summary: Get a message by ID
parameters:
- name: sessionToken
in: header
description: Session authentication token.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
- name: id
in: path
description: Message ID as a URL-safe string
required: true
schema:
type: string
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/V4Message'
204:
description: No Messages.
content: {}
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
/v1/message/search:
get:
tags:
- Messages
summary: Search messages
description: "Search messages according to the specified criteria. The \"query\" parameter takes a search query defined as\n\"field:value\" pairs combined by the operator \"AND\" (e.g. \"text:foo AND autor:bar\"). Supported fields are\n (case-insensitive): \"text\", \"author\", \"hashtag\", \"cashtag\", \"mention\", \"signal\", \"fromDate\", \"toDate\",\n \"streamId\", \"streamType\".\n \"text\" search requires a \"streamId\" to be specified.\n \"streamType\" accepts one of the following values: \"chat\" (IMs and MIMs), \"im\", \"mim\", \"chatroom\", \"post\".\n \"signal\" queries can only be combined with \"fromDate\", \"toDate\", \"skip\" and \"limit\" parameters.\n"
parameters:
- name: query
in: query
description: The search query. See above for the query syntax.
required: true
schema:
type: string
- name: skip
in: query
description: No. of results to skip.
schema:
type: integer
- name: limit
in: query
description: Max no. of results to return. If no value is provided, 50 is the default.
schema:
type: integer
- name: scope
in: query
description: 'Describes where content should be searched for that query.
It can exclusively apply to Symphony content or to one Connector.
'
schema:
type: string
- name: sortDir
in: query
description: 'Messages sort direction : ASC or DESC (default to DESC)
'
schema:
type: string
- name: tier
in: query
description: 'Target search tier : hot, warm or all (default to hot)
'
schema:
type: string
- name: sessionToken
in: header
description: Session authentication token.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/V4MessageList'
204:
description: No Messages.
content: {}
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
post:
tags:
- Messages
summary: Search messages
description: Search messages according to the specified criteria.
parameters:
- name: skip
in: query
description: No. of results to skip.
schema:
type: integer
- name: limit
in: query
description: Max no. of results to return. If no value is provided, 50 is the default.
schema:
type: integer
- name: scope
in: query
description: 'Describes where content should be searched for that query.
It can exclusively apply to Symphony content or to one Connector.
'
schema:
type: string
- name: sortDir
in: query
description: 'Messages sort direction : ASC or DESC (default to DESC)
'
schema:
type: string
- name: tier
in: query
description: 'Target search tier : hot, warm or all (default to hot)
'
schema:
type: string
- name: sessionToken
in: header
description: Session authentication token.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
requestBody:
description: The search query. See above for the query syntax.
content:
application/json:
schema:
$ref: '#/components/schemas/MessageSearchQuery'
required: true
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/V4MessageList'
204:
description: No Messages.
content: {}
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
x-codegen-request-body-name: query
/v4/stream/{sid}/message:
get:
tags:
- Messages
summary: Get messages from an existing stream.
description: 'A caller can fetch all unseen messages by passing the timestamp of
the last message seen as the since parameter and the number of messages
with the same timestamp value already seen as the skip parameter. This
means that every message will be seen exactly once even in the case that
an additional message is processed with the same timestamp as the last
message returned by the previous call, and the case where there are
more than maxMessages with the same timestamp value.
This method is intended for historic queries and is generally reliable
but if guaranteed delivery of every message in real time is required
then the equivilent firehose method should be called.
'
parameters:
- name: sid
in: path
description: Stream ID
required: true
schema:
type: string
- name: since
in: query
description: 'Timestamp of first required message.
This is a long integer value representing milliseconds since
Jan 1 1970
'
required: true
schema:
type: integer
format: int64
- name: until
in: query
description: 'Timestamp of last required message.
This is a long integer value representing milliseconds since
Jan 1 1970
'
schema:
type: integer
format: int64
- name: skip
in: query
description: No. of messages to skip.
schema:
type: integer
- name: limit
in: query
description: 'Max No. of messages to return. If no value is provided, 50 is the default. The maximum supported value is 500.
'
schema:
type: integer
- name: sessionToken
in: header
description: Session authentication token.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/V4MessageList'
204:
description: No Messages.
content: {}
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
/v4/stream/{sid}/message/create:
post:
tags:
- Messages
summary: Post a message to one existing stream.
description: 'Post a new message to the given stream. The stream can be a chatroom,,an IM or a multiparty IM.
You may include an attachment on the message.
The message can be provided as MessageMLV2 or PresentationML. Both formats support Freemarker templates.
The optional parameter "data" can be used to provide a JSON payload containing entity data.
If the message contains explicit references to entity data (in "data-entity-id" element attributes),
this parameter is required.
If the message is in MessageML and fails schema validation a client error will be returned.
If the message is sent then 200 is returned.
Regarding authentication, you must either use the sessionToken which was created for delegated app access
or both the sessionToken and keyManagerToken together.
'
parameters:
- name: sid
in: path
description: Stream ID
required: true
schema:
type: string
- name: sessionToken
in: header
description: Authorization token used to make delegated calls.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
properties:
message:
type: string
description: The message payload in MessageML.
data:
type: string
description: Optional message data in EntityJSON.
version:
type: string
description: 'Optional message version in the format "major.minor". If empty, defaults to the latest supported version.
'
attachment:
type: string
description: Optional file attachment.
format: binary
preview:
type: string
description: Optional attachment preview.
format: binary
responses:
200:
description: Message sent.
content:
application/json:
schema:
$ref: '#/components/schemas/V4Message'
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
451:
description: Compliance Issues found in message or file
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
/v4/stream/{sid}/message/{mid}/update:
post:
tags:
- Messages
summary: Update an existing message.
description: 'Update an existing message. The existing message must be a valid social message, that has not been deleted.
The message can be provided as MessageMLV2 or PresentationML. Both formats support Freemarker templates.
The optional parameter "data" can be used to provide a JSON payload containing entity data.
If the message contains explicit references to entity data (in "data-entity-id" element attributes),
this parameter is required.
Regarding authentication, you must either use the sessionToken which was created for delegated app access
or both the sessionToken and keyManagerToken together.
Starting with SBE v24.1, attachments are supported.
'
parameters:
- name: sid
in: path
description: Stream ID
required: true
schema:
type: string
- name: mid
in: path
description: ID of the message to be updated
required: true
schema:
type: string
- name: sessionToken
in: header
description: Authorization token used to make delegated calls.
required: true
schema:
type: string
- name: keyManagerToken
in: header
description: Key Manager authentication token.
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
properties:
message:
type: string
description: The message payload in MessageML.
data:
type: string
description: Optional message data in EntityJSON.
version:
type: string
description: 'Optional message version in the format "major.minor". If empty, defaults to the latest supported version.
'
attachment:
type: string
description: Optional file attachment.
format: binary
preview:
type: string
description: Optional attachment preview.
format: binary
silent:
type: string
description: 'Optional boolean field that will determine if the user/s should receive the message as read or not (true by default)
'
responses:
200:
description: Message sent.
content:
application/json:
schema:
$ref: '#/components/schemas/V4Message'
400:
description: Client error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
401:
description: 'Unauthorized: Session tokens invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
403:
description: 'Forbidden: Caller lacks necessary entitlement.'
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
451:
description: Compliance Issues found in message or file
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
500:
description: Server error, see response body for further details.
content:
application/json:
schema:
$ref: '#/components/schemas/V2Error'
components:
schemas:
Error:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
V2Error:
required:
- code
- message
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: object
V4ImportedMessage:
required:
- intendedMessageFromUserId
- intendedMessageTimestamp
- message
- originatingSystemId
- streamId
type: object
properties:
message:
type: string
description: Message text in MessageMLV2
format: MessageML
data:
type: string
description: Entity data in EntityJSON
format: JSON
intendedMessageTimestamp:
type: integer
description: 'The timestamp representing the time when the message was sent in the original system
in milliseconds since Jan 1st 1970.
'
format: int64
intendedMessageFromUserId:
type: integer
description: The long integer userid of the Symphony user who you intend to show sent the message.
format: int64
originatingSystemId:
type: string
description: The ID of the system through which the message was originally sent.
originalMessageId:
type: string
description: The ID of the message in the original system.
streamId:
type: string
attachments:
type: array
description: List of message attachments. Since Agent 20.14.
items:
$ref: '#/components/schemas/V4ImportedMessageAttachment'
x-since: 20.14
previews:
type: array
description: List of attachments previews. Since Agent 20.14.
items:
$ref: '#/components/schemas/V4ImportedMessageAttachment'
x-since: 20.14
description: 'A historic message to be imported into the system.
The importing user must have the Content Management role.
Also, the importing user must be a member of the conversation it is importing into.
The user that the message is intended to have come from must also be present in the conversation.
The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
By design, imported messages do not stream to datafeed or firehose endpoints.
'
V4ImportResponse:
type: object
properties:
messageId:
type: string
description: 'If the message was successfully imported then the message ID in the system
of the newly created message.
'
originatingSystemId:
type: string
description: The ID of the system through which the message was originally sent.
originalMessageId:
type: string
description: The ID of the message in the original system.
diagnostic:
type: string
description: 'A diagnostic message containing an error message in the event that the
message import failed. May also be present in the case of a successful
call if there is useful narrative to return.
'
V4ThumbnailInfo:
type: object
properties:
id:
type: string
description: The thumbnail ID.
dimension:
type: string
description: The thumbnail pixel size.
V4User:
type: object
properties:
userId:
type: integer
description: Id of user
format: int64
firstName:
type: string
description: First name of user
lastName:
type: string
description: Last name of user
displayName:
type: string
description: User display name
email:
type: string
description: Email of user
username:
type: string
description: Applicable only to internal users
V4MessageBlastResponse:
type: object
required:
- messages
- errors
properties:
messages:
type: array
default: []
description: List of messages successfully sent
items:
$ref: '#/components/schemas/V4Message'
errors:
type: object
additionalProperties:
$ref: '#/components/schemas/Error'
description: List of streams where the messages ingestion has failed
description: Wrapper response for a single message sent to multiple streams
MessageSearchQuery:
type: object
properties:
text:
type: string
description: Search for messages containing this text. Requires streamId to be specified.
streamId:
type: string
description: Search for messages sent to this stream
streamType:
type: string
description: 'Search for messages sent to this type of streams. Accepted values are CHAT, IM, MIM, ROOM, POST.
'
author:
type: integer
description: Search for messages sent by this user ID
format: int64
hashtag:
type: string
description: Search for messages containing this hashtag
cashtag:
type: string
description: Search for messages containing this cashtag
mention:
type: integer
description: Search for messages mentioning this user ID
format: int64
signal:
type: string
description: 'Search for messages matching this signal. Can only be combined with date filtering and paging parameters.
'
fromDate:
type: integer
description: Search for messages sent on or after this timestamp
format: int64
toDate:
type: integer
description: Search for messages sent before this timestamp
format: int64
V4Message:
type: object
properties:
messageId:
type: string
description: Id of the message
parentMessageId:
type: string
description: Id of the parent message, set when the message is a reply to another message or a forwarded message. Since Agent 20.14.
x-since: 20.14
timestamp:
type: integer
description: Timestamp of the message in mil
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/finos/refs/heads/main/openapi/finos-messages-api-openapi.yml