Skip to content

Concepts

The API has a small set of objects. Every one of them belongs to a workspace, and every workspace belongs to a partner.

partner
└── workspace (one per customer of yours)
├── accounts connected Facebook Pages and Instagram accounts
├── media uploaded images and videos
├── posts what gets published, with one target per account
├── conversations DMs and comment threads
│ └── messages
├── events what happened, also delivered as webhooks
├── connect links expiring links into the hosted connect page
├── embed sessions short-lived tokens for the widget
└── keys workspace-scoped API keys

Your product. A partner owns API keys, one webhook endpoint, and all of its workspaces. Partner accounts are created by MissLess. There is no self-serve signup for partners yet.

One customer of yours: a salon, a clinic, a freelancer. Everything else hangs off it.

{ id, external_id, name, timezone, settings, status, accounts_count, created, updated }

  • external_id is your own identifier for the customer. Creating a workspace with an external_id that already exists returns the existing one, so treat POST /workspaces as an upsert.
  • timezone is an IANA name such as Europe/Amsterdam. The widget calendar uses it. Timestamps on the API are always UTC.
  • settings is a free-form JSON object stored as-is. Use it for anything you want to keep next to the workspace.
  • status is active for a usable workspace.

Deleting a workspace disconnects its accounts and deletes its posts, media and inbox.

One connected Facebook Page or Instagram professional account.

{ id, workspace, network, platform_id, username, display_name, avatar_url, page_id, status, last_error, scopes, token_expires_at, connected_at }

network is facebook or instagram. status is active, expired, revoked or error. An Instagram account carries the page_id of the Facebook Page it is linked to. Details in Accounts.

An image or video you uploaded to a workspace, ready to be attached to a post.

{ id, workspace, kind, mime, size, width, height, alt, url, created }

kind is image or video. url is a signed public URL, valid for 7 days, and it is what Meta fetches at publish time. Details in Media.

One piece of content published to one or more accounts. Each account is a target with its own outcome.

{ id, workspace, external_ref, caption, media, targets, schedule_at, status, published_at, attempts, last_error, created_by, created, updated }

  • targets[]: { account, network, username, status, platform_post_id, permalink, error, published_at }
  • status walks draft, scheduled, publishing, then published, partial or failed; canceled when you delete a scheduled post.
  • external_ref is your own id for the post. Filter on it with GET /posts?external_ref=.
  • created_by records which surface created the post: api, embed, dashboard or mcp.

Details in Posts and Scheduling.

Every inbound DM and every comment becomes a conversation in the workspace that owns the account. Messages inside it have a direction, in or out.

{ id, workspace, account, network, kind, platform_thread_id, contact, post_platform_id, comment_id, last_message_at, last_message_preview, unread, status, created }

kind is dm or comment. status is open or closed. Details in Conversations.

Something that happened in a workspace: an account connected, a post published, a message received. Events are delivered to your webhook and can also be listed with GET /events. The full list is in Events.

An expiring link into the hosted connect page for one workspace. You create it server-side and redirect the user to it; it can be opened more than once until it expires. Details in Connect links.

A short-lived token (mle_…) scoped to one workspace that lets the widget act on that workspace from the browser. You mint it server-side with your partner key. Details in Embed sessions.

Partner keys and workspace keys both start with mls_live_. A partner key reaches every workspace of the partner. A workspace key reaches one workspace and is the right credential to hand to an end user, a mobile app or an MCP client. Details in Authentication.

  • Base URL https://social.missless.tel/v1.
  • Ids are opaque 15-character strings. Do not parse them.
  • Timestamps are ISO-8601 in UTC, for example 2026-08-25T09:20:11Z.
  • Bodies are JSON, UTF-8. Media upload also accepts multipart.
  • Lists accept page (1-based) and limit (default 50, max 200) and return { "data": [], "page": 1, "limit": 50, "total": 123 }.
  • Deletes return 204 with an empty body.
  • Errors return { "error": { "code", "message", "field" } }. See Errors.