Uplika Inbox and contacts API
The Inbox and contacts API from Uplika — 19 operation(s) for inbox and contacts.
The Inbox and contacts API from Uplika — 19 operation(s) for inbox and contacts.
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/uplika-com:uplika-com-inbox-and-contacts-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: uplika Inbox and contacts API
version: 1.0.0
description: Publish to social channels from your own code. If you would rather have an AI agent do it, connect over MCP instead and skip API keys entirely.
contact:
url: https://uplika.com/en/docs
servers:
- url: https://api.uplika.com
security:
- apiKey: []
tags:
- name: Inbox and contacts
paths:
/v1/conversations:
get:
summary: Conversations, latest message first.
tags:
- Inbox and contacts
parameters:
- name: state
in: query
required: false
description: open (default) or closed.
schema:
type: string
- name: kind
in: query
required: false
description: dm, mention or comment.
schema:
type: string
- name: unread
in: query
required: false
description: 1 for unread only.
schema:
type: string
- name: starred
in: query
required: false
description: 1 for starred only.
schema:
type: string
- name: accountId
in: query
required: false
description: One connected account.
schema:
type: string
- name: platform
in: query
required: false
description: One platform id, e.g. instagram.
schema:
type: string
- name: search
in: query
required: false
description: Matches the username, the name or the last message.
schema:
type: string
- name: before
in: query
required: false
description: A lastMessageAt from the previous page.
schema:
type: string
- name: limit
in: query
required: false
description: 1-200.
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
state:
type: string
description: open (default) or closed.
kind:
type: string
description: dm, mention or comment.
unread:
type: string
description: 1 for unread only.
starred:
type: string
description: 1 for starred only.
accountId:
type: string
description: One connected account.
platform:
type: string
description: One platform id, e.g. instagram.
search:
type: string
description: Matches the username, the name or the last message.
before:
type: string
description: A lastMessageAt from the previous page.
limit:
type: string
description: 1-200.
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1Conversations
x-operation-id-source: derived
/v1/conversations/{id}:
get:
summary: One conversation with its contact and messages
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1ConversationsById
x-operation-id-source: derived
/v1/conversations/{id}/messages:
post:
summary: 'Reply as the account: a DM in DM conversations, a public reply in mention and…'
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
text:
type: string
description: What to send.
mediaId:
type: string
description: Attach one uploaded file to a DM.
required:
- text
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdMessages
x-operation-id-source: derived
/v1/conversations/{id}/drafts/{messageId}:
post:
summary: Send a draft an automation prepared for approval, optionally with edited text
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: messageId
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdDraftsByMessageId
x-operation-id-source: derived
delete:
summary: Throw a draft away without sending it
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: messageId
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: deleteV1ConversationsByIdDraftsByMessageId
x-operation-id-source: derived
/v1/inbox/sync:
post:
summary: Import recent conversations from the channel for one account
tags:
- Inbox and contacts
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1InboxSync
x-operation-id-source: derived
/v1/conversations/{id}/read:
post:
summary: Mark it read
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdRead
x-operation-id-source: derived
/v1/conversations/{id}/open:
post:
summary: Reopen a closed conversation
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdOpen
x-operation-id-source: derived
/v1/conversations/{id}/close:
post:
summary: Close it. It moves out of the open list
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdClose
x-operation-id-source: derived
/v1/conversations/{id}/star:
post:
summary: Star it
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdStar
x-operation-id-source: derived
/v1/conversations/{id}/unstar:
post:
summary: Remove the star
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdUnstar
x-operation-id-source: derived
/v1/conversations/{id}/assign:
post:
summary: Assign it to a person (userId, defaults to you)
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdAssign
x-operation-id-source: derived
/v1/conversations/{id}/unassign:
post:
summary: Clear the assignment
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ConversationsByIdUnassign
x-operation-id-source: derived
/v1/contacts:
get:
summary: People who wrote to your accounts, with tags, fields, opt-out and whether they…
tags:
- Inbox and contacts
parameters:
- name: accountId
in: query
required: false
description: One connected account.
schema:
type: string
- name: tag
in: query
required: false
description: Contacts with this tag.
schema:
type: string
- name: optedOut
in: query
required: false
description: 1 for people who opted out.
schema:
type: string
- name: search
in: query
required: false
description: Matches the username or the name.
schema:
type: string
- name: limit
in: query
required: false
description: 1-500, defaults to 100.
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
accountId:
type: string
description: One connected account.
tag:
type: string
description: Contacts with this tag.
optedOut:
type: string
description: 1 for people who opted out.
search:
type: string
description: Matches the username or the name.
limit:
type: string
description: 1-500, defaults to 100.
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1Contacts
x-operation-id-source: derived
/v1/contacts/{id}:
get:
summary: One contact and their conversations
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1ContactsById
x-operation-id-source: derived
patch:
summary: Set tags, custom fields or opt-out
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
tags:
type: array
items:
type: string
description: Replaces the tags. Up to 50.
fields:
type: object
description: Custom fields to set, merged into the existing ones.
optedOut:
type: boolean
description: true stops every automated message to this person.
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: patchV1ContactsById
x-operation-id-source: derived
delete:
summary: Delete the contact and its conversations and messages on our side.
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: deleteV1ContactsById
x-operation-id-source: derived
/v1/contacts/{id}/refresh:
post:
summary: Read the profile again from the channel
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ContactsByIdRefresh
x-operation-id-source: derived
/v1/accounts/{id}/audience:
get:
summary: Follower totals, and on Threads a demographic breakdown.
tags:
- Inbox and contacts
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1AccountsByIdAudience
x-operation-id-source: derived
/v1/messaging/violations:
get:
summary: Messages an automation did not send because a channel rule stopped it, newest…
tags:
- Inbox and contacts
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1MessagingViolations
x-operation-id-source: derived
/v1/threads/pending-replies:
get:
summary: Replies held for approval on a Threads account
tags:
- Inbox and contacts
parameters:
- name: accountId
in: query
required: false
description: A connected Threads account.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
accountId:
type: string
description: A connected Threads account.
required:
- accountId
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: getV1ThreadsPendingReplies
x-operation-id-source: derived
/v1/threads/pending-replies/{replyId}:
post:
summary: Approve or ignore one held reply
tags:
- Inbox and contacts
parameters:
- name: replyId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
accountId:
type: string
description: The Threads account that holds the reply.
approve:
type: boolean
description: false ignores the reply. Defaults to true.
required:
- accountId
responses:
default:
description: See the error codes table in the docs.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
operationId: postV1ThreadsPendingRepliesByReplyId
x-operation-id-source: derived
components:
schemas:
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
enum:
- verification_required
- next_post_taken
- past_comments_not_supported
- past_comments_no_trigger
- automation_not_live
- past_comments_no_post
- past_comments_running
- scheduled_at_invalid
- scheduled_at_range
- draft_and_schedule
- batch_id_invalid
- naver_source_required
- naver_keep_unknown
- post_not_editable
- live_post_no_schedule
- live_post_accounts_fixed
- nothing_to_change
- target_required
- thread_piece
- naver_draft_not_found
- account_required
- invalid_api_key
- forbidden_scope
- no_accounts
- empty_content
- account_not_connected
- account_expired
- platform_not_available
- content_too_long
- media_required
- media_mixed
- media_too_many
- media_too_large
- media_aspect_ratio
- media_dimensions
- media_type_not_supported
- media_too_long
- media_url_invalid
- media_url_blocked
- media_url_unreachable
- media_unreachable
- workspace_required
- workspace_mismatch
- workspace_limit
- platform_already_connected
- quota_exceeded
- workspaces_invalid
- billing_not_configured
- full_access_open
- checkout_failed
- no_subscription
- portal_failed
- media_not_uploaded
- media_expired
- image_unreadable
- media_not_publishable
- media_in_use
- media_delete_failed
- media_store_failed
- upload_bytes_missing
- api_unreachable
- naver_media_kind_mismatch
- naver_media_over_limit
- naver_media_ref_unattached
- media_ref_unknown
- media_ref_not_supported
- media_ref_mixed_channels
- ghost_title_required
- ghost_title_too_long
- ghost_tag_invalid
- ghost_directive_not_supported
- media_not_configured
- post_not_found
- media_not_found
- key_not_found
- grant_not_found
- nothing_to_retry
- not_published
- delete_window_expired
- platform_error
- duplicate_post
- unauthenticated
- platform_rejected_content
- platform_auth_error
- topic_tag_invalid
- youtube_video_not_replaceable
- topic_tag_not_supported
- api_key_revoked
- api_key_expired
- idempotency_key_reused
- publish_in_flight
- extension_outdated
- thread_and_content
- thread_empty
- container_expired
- permission_denied
- invalid_json
- body_too_large
- internal_error
- system_error
- rate_limited
- account_not_found
- account_has_pending_posts
- account_disconnected
- post_unavailable
- post_deleted
- account_busy_publishing
- empty_reply
- cannot_hide_own_reply
- media_fields_required
- not_our_post
- key_name_required
- key_scope_required
- invalid_locale
- url_required
- reference_invalid
- reference_not_naver
- reference_not_public
- reference_not_readable
- reference_too_large
- reference_timeout
- reference_unreachable
- reference_not_read
- bad_post_ref
- post_not_owned
- post_not_in_recent
- upload_session_not_found
- upload_session_full
- media_url_invalid
- media_url_blocked
- media_url_unreachable
- workspace_required
- workspace_mismatch
- workspace_limit
- platform_already_connected
- quota_exceeded
- workspaces_invalid
- billing_not_configured
- full_access_open
- checkout_failed
- no_subscription
- portal_failed
- youtube_title_required
- youtube_title_too_long
- youtube_angle_brackets
- youtube_video_required
- youtube_tags_too_long
- youtube_schedule_needs_private
- youtube_schedule_invalid
- youtube_thumbnail_type
- youtube_thumbnail_too_large
- youtube_short_no_thumbnail
- youtube_no_threads
- instagram_reel_video_required
- instagram_reel_duration
- instagram_story_single_media
- instagram_story_no_extras
- instagram_story_duration
- instagram_cover_reel_only
- instagram_cover_type
- instagram_cover_too_large
- instagram_too_many_collaborators
- instagram_user_tag_position
- instagram_username_invalid
- instagram_audio_invalid
- instagram_audio_reel_only
- instagram_audio_needs_facebook_login
- instagram_audio_unavailable
- facebook_link_with_media
- facebook_link_invalid
- facebook_reel_video_required
- facebook_reel_duration
- facebook_story_single_media
- facebook_story_no_extras
- facebook_story_no_caption
- facebook_schedule_feed_only
- facebook_schedule_invalid
- facebook_schedule_range
- facebook_targeting_text_only
- facebook_targeting_not_editable
- facebook_schedule_no_first_comment
- threads_not_supported
- beta_access_required
- naver_title_required
- naver_title_too_long
- naver_category_required
- pinterest_board_required
- pinterest_board_not_found
- pinterest_link_invalid
- pinterest_link_too_long
- pinterest_title_too_long
- pinterest_alt_text_too_long
- pinterest_video_too_short
- discord_username_invalid
- discord_field_not_editable
- discord_forum_channel
- naver_markdown_unknown
- naver_category_unknown
- naver_category_ambiguous
- naver_form_unknown
- naver_form_required
- content_required
- help_not_found
- invalid_locale
- invalid_category
- invalid_topic
- naver_wrong_blog
- naver_wrong_login
- naver_session_permission
- naver_rate_limited
- naver_not_allowed
- naver_follow_blocked
- naver_engagement_limited
- naver_comment_gone
- upload_stalled
- platform_timeout
- naver_draft_unpublished
- naver_stats_unavailable
- naver_stats_permission
- naver_stats_unreachable
- naver_comments_closed
- naver_post_unavailable
- naver_card_unavailable
- naver_card_not_inserted
- naver_tab_lost
- naver_draft_unknown
- naver_reply_unknown
- naver_publish_unconfirmed
- comments_closed
- refresh_unsupported
- invalid_params
- quota_exceeded
- naver_seo_unavailable
- naver_api_error
- invalid_blog_id
- blog_not_found
- naver_rss_unreachable
- naver_autocomplete_unavailable
- naver_autocomplete_paused
- naver_autocomplete_busy
- research_tool_disabled
- research_tool_not_toggleable
- research_quota_exceeded
- youtube_quota_exhausted
- youtube_search_unavailable
- naver_search_busy
- naver_search_blocked
- naver_search_permission
- naver_seo_busy
- refresh_timeout
- refresh_failed
- naver_reply_media_not_supported
- naver_too_many_tags
- naver_tag_too_long
- naver_tag_has_space
- naver_scheduled_at_conflict
- naver_scheduled_at_mixed
- naver_draft_and_schedule
- naver_font_size_out_of_range
- naver_ui_changed
- naver_not_logged_in
- naver_upload_failed
- naver_publish_failed
- naver_verify_failed
- bridge_unsupported
- bridge_lost
- bridge_stalled
- bridge_timeout
- naver_category_missing
- naver_grammar_rejected
- platform_activity_blocked
- facebook_identity_required
- instagram_collaborator_unavailable
- instagram_upload_failed
- reply_parent_unavailable
- youtube_daily_cap
- thread_broken
- bridge_offline
- bridge_no_window
- naver_clip_video_required
- naver_clip_category_required
- naver_clip_category_unknown
- naver_clip_category_ambiguous
- naver_clip_tag_invalid
- naver_clip_too_many_tags
- naver_clip_visibility_invalid
- clip_no_profile
- clip_profile_mismatch
- clip_upload_failed
- clip_rejected
- clip_unconfirmed
- account_required
- not_supported
- reconsent_required
- feature_in_review
- tiktok_privacy_required
- tiktok_privacy_invalid
- tiktok_branded_private
- tiktok_interaction_disabled
- tiktok_title_required
- tiktok_title_too_long
- tiktok_title_not_supported
- tiktok_cannot_post
- ghost_plan_limit
- ghost_no_permission
- ghost_update_collision
- tiktok_reply_not_supported
message:
type: string
additionalProperties: true
securitySchemes:
apiKey:
type: http
scheme: bearer
description: An API key from the dashboard.
externalDocs:
url: https://uplika.com/en/docs
description: Reference, error codes and per-channel limits.