Now in beta with our first partners

One API for Facebook & Instagram. Zero Meta paperwork.

Give your users publishing, scheduling, a unified inbox and insights, right inside your product. It all runs under one Meta app that MissLess owns, so your company never registers with Meta at all.

Base URL
social.missless.tel/v1
Auth
Bearer mls_live_…
Data
EU, Netherlands

Example: a POST to /v1/posts with a caption, one media item, two target accounts and a schedule_at returns status scheduled. At the scheduled time the post is published to Instagram and Facebook and a post.published webhook is delivered to your server.

MissLessBuilt by MissLess, the AI phone receptionist trusted by Dutch SMBs

  • Facebook Pages
  • Instagram
  • Messenger
  • Comments
  • Insights
  • Webhooks
  • MCP

How it works

Three calls from zero to a scheduled post

Your backend talks to /v1 with a partner key. Your users never see Meta beyond a single consent screen.

  1. 1

    Create a workspace

    One per user of your product. Idempotent on external_id, so you can simply call it on every login.

    POST /v1/workspaces
    {
      "external_id": "user_8213",
      "name": "Downtown Phlebotomy",
      "timezone": "America/New_York"
    }
    
    → 201 { "id": "ws_4k2…", "status": "active" }
  2. 2

    Send your user to the hosted connect page

    Mint a connect link and redirect. They click Continue with Facebook, pick their Pages and Instagram accounts, and land back in your product.

    POST /v1/workspaces/:id/connect-links
    {
      "networks": ["facebook", "instagram"],
      "redirect_url": "https://app.yourproduct.com/social"
    }
    
    → 201 { "url": "https://social.missless.tel/connect/…" }
       send the user there; account.connected
       fires for every Page they pick
  3. 3

    Publish, schedule, reply

    Through the API, the embeddable widget, or an AI assistant over MCP. Results and inbox traffic come back as signed webhooks.

    POST /v1/posts
    {
      "workspace": "ws_4k2…",
      "caption": "Walk-in draws, Fri 8-12",
      "media": ["med_9ab…"],
      "targets": ["acc_ig…", "acc_fb…"],
      "schedule_at": "2026-09-04T09:00:00Z"
    }
    
    → 201 { "status": "scheduled" }
       post.published arrives by webhook

Everything in the box

The whole social stack, one contract

Built in-house on the Meta Graph API. Other networks are added behind the same endpoints later, so nothing you write today changes.

Publishing

Single image, carousel, Reels, and text or link posts. Facebook Pages and Instagram in one call, with a caption override per network when you need it.

Scheduling

Queue posts with schedule_at. Clear statuses: draft, scheduled, publishing, published, partial, failed. Retries, and one honest error per target.

Unified inbox

Messenger DMs, Instagram DMs and comments become conversations. Reply, private-reply to a comment, close. The 24-hour DM window is tracked for you.

Insights

Followers, follows and media counts per account, plus permalinks and per-target results the moment Meta reports them.

Hosted connect

One Meta app, one consent screen. Tokens are encrypted at rest, exchanged for long-lived ones and refreshed; an expiry fires an event instead of a silent failure.

Webhooks

post.published, message.received, account.expired and more. HMAC-SHA256 signed and timestamped, retried up to 6 times over 15 hours. Or poll /v1/events.

Embeddable widget

Composer, calendar, inbox and accounts as a drop-in iframe. Your accent and radius, English or Dutch, resizes itself and posts events to your page.

MCP server

Claude, Cursor or any MCP client can list accounts, upload media, create and publish posts and answer conversations with a workspace key.

Code

Schedule a post in one request

Plain JSON over HTTPS. The same call from curl, Node, Python or your Next.js integration.

Base URL
social.missless.tel/v1
Auth
Authorization: Bearer mls_live_…
Limits
300 requests / min per key
Errors
{ error: { code, message, field } }
Sync option
?wait=true blocks up to 25 s
terminal
curl https://social.missless.tel/v1/posts \
  -H "Authorization: Bearer mls_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace": "WORKSPACE_ID",
    "caption": "Walk-in blood draws this Friday, 8 to 12",
    "media": ["MEDIA_ID"],
    "targets": ["IG_ACCOUNT_ID", "FB_ACCOUNT_ID"],
    "schedule_at": "2026-09-04T09:00:00Z"
  }'

# 201 { "id": "…", "status": "scheduled", "targets": [ … ] }
schedule.mjs
const res = await fetch('https://social.missless.tel/v1/posts', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer mls_live_…',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    workspace: 'WORKSPACE_ID',
    caption: 'Walk-in blood draws this Friday, 8 to 12',
    media: ['MEDIA_ID'],
    targets: ['IG_ACCOUNT_ID', 'FB_ACCOUNT_ID'],
    schedule_at: '2026-09-04T09:00:00Z',
  }),
});

const post = await res.json();
console.log(post.status); // "scheduled"
schedule.py
import requests

r = requests.post(
    "https://social.missless.tel/v1/posts",
    headers={"Authorization": "Bearer mls_live_…"},
    json={
        "workspace": "WORKSPACE_ID",
        "caption": "Walk-in blood draws this Friday, 8 to 12",
        "media": ["MEDIA_ID"],
        "targets": ["IG_ACCOUNT_ID", "FB_ACCOUNT_ID"],
        "schedule_at": "2026-09-04T09:00:00Z",
    },
)
r.raise_for_status()
post = r.json()
print(post["status"])  # "scheduled"
lib/integrations/social.ts
// Server-only. The partner key never reaches the browser.
const BASE = 'https://social.missless.tel/v1';
const headers = {
  Authorization: 'Bearer ' + process.env.MISSLESS_SOCIAL_KEY,
  'Content-Type': 'application/json',
};
const call = (path: string, body: unknown) =>
  fetch(BASE + path, { method: 'POST', headers, body: JSON.stringify(body) })
    .then((r) => r.json());

export class MissLessPublisher {
  // One workspace per user of your product; idempotent on external_id.
  workspaceFor = (user: { id: string; name: string }) =>
    call('/workspaces', { external_id: user.id, name: user.name });

  // Send the user to the returned url; they click "Continue with Facebook".
  connectLink = (workspace: string, redirect_url: string) =>
    call('/workspaces/' + workspace + '/connect-links', { redirect_url });

  // Returns { id, status: 'scheduled', ... }; post.published arrives by webhook.
  schedule = (post: { workspace: string; caption: string; media: string[]; targets: string[]; schedule_at: string; external_ref?: string }) =>
    call('/posts', post);
}

Embeddable widget

Or drop in the UI we already built

Composer, calendar, inbox and accounts as an iframe that takes on your colours. Mint a session server-side, paste two lines.

app.yourproduct.com/social
index.html
<div data-missless-social
     data-session="mle_…"
     data-surface="composer"></div>
<script src="https://social.missless.tel/widget.js" async></script>
server.js
// Server-side: mint a short-lived session with your partner key.
const { token } = await fetch('https://social.missless.tel/v1/embed-sessions', {
  method: 'POST',
  headers: { Authorization: 'Bearer mls_live_…', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    workspace: 'WORKSPACE_ID',
    surfaces: ['composer', 'calendar', 'inbox', 'accounts'],
    theme: { mode: 'dark', accent: '#6d5efc', radius: '12px' },
    locale: 'en',
  }),
}).then((r) => r.json());
// token starts with "mle_" and goes into data-session
  • data-surface="composer"write, attach media, pick accounts, schedule
  • data-surface="calendar"the queue by week, drag to reschedule
  • data-surface="inbox"DMs and comments, reply in place
  • data-surface="accounts"connect, reconnect, disconnect

The iframe posts ready, resize, post.created, account.connected and conversation.replied messages to your page. widget.js keeps the height in sync for you.

MCP server

Let your users' AI assistant run their social

Claude, Cursor or any MCP client connects with a workspace key and gets the same capabilities as the API: accounts, media, posts and conversations.

  • Schedule this photo to Instagram and Facebook for Friday at 9 with the caption: Walk-in blood draws, 8 to 12.
  • Any unanswered DMs or comments since yesterday? Draft replies and send the ones that ask about opening hours.
  • How many followers did each account gain this month, and which three posts did best?
terminal
claude mcp add --transport http missless-social https://social.missless.tel/v1/mcp \
  --header "Authorization: Bearer mls_live_…"

Tools

  • whoami
  • list_accounts
  • get_account_stats
  • create_connect_link
  • upload_media_from_url
  • create_post
  • list_posts
  • get_post
  • publish_post
  • delete_post
  • list_conversations
  • get_conversation
  • reply_conversation

Streamable HTTP, JSON-RPC 2.0. A partner key works too with an X-MissLess-Workspace header. Every action an assistant takes is recorded with sent_by: "mcp", so your audit trail stays honest.

Why one Meta app

What you skip by building on ours

Meta calls it the tech-provider model: one verified app acting for many businesses, each of which only grants consent. It is how every scheduling tool you have heard of works. We did the registration, review and verification once; you inherit it.

Doing it yourself

  • Register a Meta developer app and add the Facebook Login and Webhooks products
  • Pass App Review for every permission you need (publishing, messaging, comments, insights), screencasts included
  • Complete Business Verification for your company and keep it current
  • Host and maintain webhook, deauthorize and data-deletion endpoints
  • Exchange short-lived tokens for long-lived ones, refresh them, and handle revocation and expiry
  • Track Graph API versions, rate limits and the 24-hour messaging rule

With MissLess Social

  • Your users click Continue with Facebook on our hosted connect page
  • Accounts, tokens, webhooks and refresh are handled inside MissLess
  • You call one REST API, or drop in the widget, or let your AI use MCP

Your users see a consent screen from MissLess today. A white-label name for your product is on the roadmap for Scale partners.

Pricing

Simple while we are in beta

Pay for the customers who actually use it. Nothing is billed until we have confirmed your plan in writing.

Beta pricing, indicative

Pilot

Free

while in beta

For a proof of concept with your first customers.

  • Up to 5 workspaces
  • All features: publishing, inbox, insights
  • Hosted connect, widget and MCP
  • Webhooks
  • Email support
Start a pilot
Most partners

Growth

from €4

per active workspace / month

For products rolling social out to their whole customer base.

  • Unlimited workspaces
  • Everything in Pilot
  • 300 requests per minute per key
  • Priority support in a shared channel
  • Data processing agreement
Talk about Growth

Scale

Custom

volume pricing

For platforms that need commitments in writing.

  • Everything in Growth
  • SLA with uptime and response targets
  • Dedicated onboarding
  • White-label consent screen name (later)
  • Invoicing on your terms
Contact us

An active workspace has at least one connected account during the month. Prices exclude VAT. Usage is metered from day one; invoicing is manual during the beta.

FAQ

Questions partners ask first

Facebook Pages and Instagram business or creator accounts today, including Messenger DMs, Instagram DMs and comments on both. More networks are added behind the same contract, so your integration does not change when they arrive.

No. They only need to be an admin of the Facebook Page (and of the Instagram account linked to it). They sign in with their normal Facebook login on the hosted connect page and approve the consent screen once. The developer app, app review and business verification are ours.

In the European Union, in the Netherlands. Captions, media and inbox messages are stored per workspace, access tokens are encrypted at rest with AES-256-GCM, and media URLs handed to Meta are signed and expire. A data processing agreement is available on request.

Yes. Everything the widget does is available over the REST API, so you can build your own composer, calendar or inbox and call /v1 from your backend. The widget and the MCP server are conveniences on top of the same endpoints, not a requirement.

Yes. Incoming DMs and comments become conversations you receive by webhook or by polling /v1/events, and you reply through the same API. Meta allows DM replies within 24 hours of the last customer message; the API tracks that window for you and tells you when it has closed.

Email hello@missless.tel. We create your partner account, hand you a mls_live_ key (shown once) and a sandbox workspace, and walk through your first connect and post together. Most partners publish their first real post the same day.

Give your users social publishing this month

A partner key, a sandbox workspace and a walkthrough of your first connect and post. Most partners are live within a week.