OutFlo Public API / Guide

Conversations and messages

Read, filter, organize, and reply to LinkedIn conversations.

Overview

Conversation operations support inbox retrieval, context, messages, tags, state changes, drafts, and replies. Each operation below follows the same request and response presentation.

Authentication

Send the same x-api-key header with every request.

Manage API keys
Canonical contract

Request and response schemas

Every operation below follows the same contract order. All responses use the standard status, data, and error envelope.

GET/api/public/conversationsList conversations

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

No path parameters.

Query parameters

FieldTypeRequiredDescription
pageintegerNoPage number, starting at 1.Example: 1
pageSizeintegerNoResults per page, up to 100.Example: 25
fromDatestring · date-timeNoInclusive ISO 8601 start timestamp.
toDatestring · date-timeNoInclusive ISO 8601 end timestamp.
searchTextstringNoSearch attendee names and LinkedIn profile URLs.
accountIDsstring · CSVNoComma-separated sender account UUIDs.
campaign_idsstring · CSVNoComma-separated campaign UUIDs.
tag_idsstring · CSVNoComma-separated numeric tag IDs.
reply_tagenumNoINTERESTED, NOT_INTERESTED, or GENERIC.
is_starredbooleanNoFilter starred conversations.
isArchivedbooleanNoFilter archived conversations.
show_sent_messagesbooleanNoInclude conversations with sent campaign messages.
show_responsesbooleanNoOnly include conversations that have responses.
include_messagesbooleanNoEmbed recent messages in each conversation.
message_limitintegerNoEmbedded messages per conversation, up to 100.Example: 25

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesList conversations result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "page": 1,
  "pageSize": 25,
  "fromDate": "<string>",
  "toDate": "<string>",
  "searchText": "<string>",
  "accountIDs": "<string>",
  "campaign_ids": "<string>",
  "tag_ids": "<string>",
  "reply_tag": "<string>",
  "is_starred": false,
  "isArchived": false,
  "show_sent_messages": false,
  "show_responses": false,
  "include_messages": false,
  "message_limit": 25
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
POST/api/public/conversations/queryQuery conversations with advanced filters

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

No path parameters.

Query parameters

FieldTypeRequiredDescription
pageintegerNoPage number, starting at 1.Example: 1
pageSizeintegerNoResults per page, up to 100.Example: 25
fromDatestring · date-timeNoInclusive ISO 8601 start timestamp.
toDatestring · date-timeNoInclusive ISO 8601 end timestamp.
searchTextstringNoSearch attendee names and LinkedIn profile URLs.
accountIDsstring · CSVNoComma-separated sender account UUIDs.
campaign_idsstring · CSVNoComma-separated campaign UUIDs.
tag_idsstring · CSVNoComma-separated numeric tag IDs.
reply_tagenumNoINTERESTED, NOT_INTERESTED, or GENERIC.
is_starredbooleanNoFilter starred conversations.
isArchivedbooleanNoFilter archived conversations.
show_sent_messagesbooleanNoInclude conversations with sent campaign messages.
show_responsesbooleanNoOnly include conversations that have responses.
include_messagesbooleanNoEmbed recent messages in each conversation.
message_limitintegerNoEmbedded messages per conversation, up to 100.Example: 25

Request body · application/json

FieldTypeRequiredDescription
filtersView filters definitionobjectNoAdvanced conversation filters. Query-string equivalents are also accepted.
pageintegerNoPage number, starting at 1.
pageSizeintegerNoResults per page, up to 200.
Object definitions

Object and array fields link to their immediate child schema below.

filters

Advanced conversation filters. Query-string equivalents are also accepted.

FieldTypeRequiredDescription
fromDatestring · date-timeNoInclusive ISO 8601 start timestamp.
toDatestring · date-timeNoInclusive ISO 8601 end timestamp.
searchstringNoSearch attendee names and LinkedIn profile URLs.
linkedinUrlstring · URLNoMatch one attendee LinkedIn profile.
starredbooleanNoOnly return starred conversations.
tagsinteger[] | stringNoTag IDs, or reply-tag values, to match.
archivedbooleanNoReturn archived rather than active conversations.
draftsbooleanNoOnly return conversations with saved drafts.
replyStatusenumNoawaiting_reply or my_reply.
campaignsstring[] | "all"NoCampaign UUIDs, or all.
showSentMessagesbooleanNoInclude conversations with sent campaign messages.
showResponsesbooleanNoOnly include conversations that have responses.
replyTagenumNoINTERESTED, NOT_INTERESTED, or GENERIC.
accountIDsstring[]NoConnected sender account UUIDs.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesQuery conversations with advanced filters result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "filters": {
    "fromDate": "<string>",
    "toDate": "<string>",
    "search": "<string>",
    "linkedinUrl": "https://www.linkedin.com/in/example/",
    "starred": false,
    "tags": 1,
    "archived": false,
    "drafts": false,
    "replyStatus": "<string>",
    "campaigns": [],
    "showSentMessages": false,
    "showResponses": false,
    "replyTag": "<string>",
    "accountIDs": []
  },
  "page": 1,
  "pageSize": 1
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/conversations/{id}/contextGet conversation context

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

FieldTypeRequiredDescription
include_messagesbooleanNoInclude recent messages in the context response.
message_limitintegerNoMessages to include, up to 50.Example: 10

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet conversation context result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "include_messages": false,
  "message_limit": 10
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/conversations/{id}/messagesList messages in a conversation

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesList messages in a conversation result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request example
{
  "headers": {
    "x-api-key": "<string>"
  }
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
POST/api/public/conversations/{id}/tagsApply tags to a conversation

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body · application/json

FieldTypeRequiredDescription
tagsView tags[] definitionobject[]YesOne or more tags to apply.
Object definitions

Object and array fields link to their immediate child schema below.

tags[]

One or more tags to apply.

FieldTypeRequiredDescription
idinteger | nullNoExisting tag ID. Omit it when creating or matching by name.
namestringYesTag name, from 1 to 80 characters.
colorstring | nullNoOptional tag color, up to 40 characters.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesApply tags to a conversation result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "tags": [
    {
      "name": "Follow up",
      "color": "#2563eb"
    }
  ]
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
PATCH/api/public/conversations/{id}/starUpdate a conversation star

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body · application/json

FieldTypeRequiredDescription
is_starredbooleanYesTrue to star the conversation; false to remove the star.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesUpdate a conversation star result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "is_starred": false
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
PATCH/api/public/conversations/{id}/archiveUpdate a conversation archive state

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

FieldTypeRequiredDescription
isArchivedbooleanNoAlternative to the JSON body. True archives; false restores.

Request body · application/json

FieldTypeRequiredDescription
isArchivedbooleanNoTrue to archive; false to restore. Defaults to true.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesUpdate a conversation archive state result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "isArchived": false
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
PATCH/api/public/conversations/{id}/readUpdate a conversation read state

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesUpdate a conversation read state result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request example
{
  "headers": {
    "x-api-key": "<string>"
  }
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
PATCH/api/public/conversations/{id}/draftSave a conversation draft

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body · application/json

FieldTypeRequiredDescription
draftstring | nullNoDraft message text. Use null or an empty value to clear it.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesSave a conversation draft result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "draft": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
PATCH/api/public/conversations/{id}/reply-tagUpdate a conversation reply tag

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body · application/json

FieldTypeRequiredDescription
tagenumYesINTERESTED, NOT_INTERESTED, or GENERIC.
reasonstringNoOptional explanation, up to 1,000 characters.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesUpdate a conversation reply tag result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "tag": "<string>",
  "reason": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
POST/api/public/conversations/replySend or reply to a LinkedIn message

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.
Content-TypestringYesMust be application/json.Example: application/json

Path parameters

No path parameters.

Query parameters

No query parameters.

Request body · application/json

FieldTypeRequiredDescription
senderProfileUrlstring · URLYesConnected LinkedIn sender profile.
receiverLinkedInUrlstring · URLYesRecipient LinkedIn profile.
textstringYesMessage text.
attachmentsstring[]NoOptional public attachment URLs.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesSend or reply to a LinkedIn message result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request body example
{
  "senderProfileUrl": "https://www.linkedin.com/in/example/",
  "receiverLinkedInUrl": "https://www.linkedin.com/in/example/",
  "text": "<string>",
  "attachments": []
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}