Skip to content

Facebook

Your agents post to your Facebook page on schedule, answer comments and messages as the page, and qualify each lead-form entry within seconds.

Connect
Sign in once, 5 grants
Runs through
Your account
First run
Read your page’s reach for the last 28 days, free on your account
Post.schedule
You, to your agent

Schedule the free rent-reminder template for my Page on Thursday at 9:00 Central, and show me the post.

curl -X POST "https://api.sb/leaseline.app/posts/schedule?mode=try" \
  -H "Authorization: Bearer $SB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"handle":"facebook:leaseline","body":"Free template: the 3-text rent reminder schedule our pilot buildings use.","link":"https://leaseline.app/templates/rent-reminders","at":"2026-10-29T14:00:00Z"}'
npx startup-builder do Post.schedule --try --data '{"handle":"facebook:leaseline","body":"Free template: the 3-text rent reminder schedule our pilot buildings use.","link":"https://leaseline.app/templates/rent-reminders","at":"2026-10-29T14:00:00Z"}'
{
  "name": "do",
  "arguments": {
    "mode": "try",
    "code": "return await $.Post.schedule({ handle: 'facebook:leaseline', body: 'Free template: the 3-text rent reminder schedule our pilot buildings use.', link: 'https://leaseline.app/templates/rent-reminders', at: '2026-10-29T14:00:00Z' })"
  }
}
import { $ } from 'startup-builder'

const result = await $.try.Post.schedule({ handle: 'facebook:leaseline', body: 'Free template: the 3-text rent reminder schedule our pilot buildings use.', link: 'https://leaseline.app/templates/rent-reminders', at: '2026-10-29T14:00:00Z' })
Response
{
  "$type": "Post",
  "mode": "try",
  "stored": false,
  "venue": "facebook",
  "status": "scheduled",
  "at": "2026-10-29T14:00:00Z",
  "linkPreview": {
    "title": "Rent reminder template",
    "host": "leaseline.app"
  }
}
Try mode reads, stores nothing and spends nothingAPI referenceIts Nouns

Connect once

  1. Call Integration.connect with system: 'social' and venue: 'facebook', then open the connectUrl it returns and sign in as yourself with Meta.
  2. Pick the page your agents speak for; you need a role on it that can post.
  3. Call Handle.connect to bind the page as your account.
GrantWhat it unlocksScope
Your pagesThe list of pages you can act for, so you pick onepages_show_list
PostText, links, photos, videos and reels posted as the page, now or laterpages_manage_posts
Read and answerReach and comments on each post, and replies to thempages_read_engagement pages_manage_engagement
MessengerAnswers to the people who message the pagepages_messaging
Lead formsEach lead-form entry, the moment it is submittedleads_retrieval
ToDo this
PauseIntegration.pause stops every call through Meta at once and keeps the token; Integration.resume picks up from the same cursor.
ReconnectIntegration.reconnect returns a fresh connectUrl that lasts one hour, and keeps the Integration's id and cursor, so nothing imports twice.
DisconnectIntegration.revoke revokes the token with Meta; every record it brought in stays in your records.

What your agents do

AskVerbRuns throughPrice
Post the rent-reminder template link to my page on Thursday at 9:00.Post.scheduleYour accountFree
Post this update to my page now.Post.publishYour accountFree
Answer each comment and Messenger message as the page.Conversation.answerYour accountFree
Qualify each lead-form entry as it arrives and open a deal for the ones that fit.Lead.qualifyYour accountFree
Show me my page’s reach and each post’s reach this month.Metric.queryYour accountFree

Calls on your own account are free.

What it holds

NounThe account’s objectWhenWhich side leads
PostpostYour agent publishes or schedulesYour records
Messagecomment or messageSomeone comments or writes to the pageThe account
Leadleadgen entrySomeone submits a lead formThe account
ReviewratingSomeone recommends the page or notThe account

Events and webhooks

DirectionEvent
EmitsPost.published, Post.scheduled, Message.created, Lead.created, Lead.qualified
Hears feedBecomes Message.created
Hears messagesBecomes Message.created
Hears leadgenBecomes Lead.created

Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed (Events and webhooks).

Limits

WhatLimitCall
Messenger repliesGo out within 24 hours of the person’s last message; after that the answer waits until they write againConversation.answer
Lead-form entriesArrive by webhook within seconds; the agent qualifies each and drafts the first reply within 5 minutesLead.qualify
Your role on the pagePosting needs a role that can post; a role removed in Meta’s settings ends the connection with needs-reauthEvery call

Field map

Our fieldFacebook’s fieldNotesCalls
Post.bodymessageNone.Post.publish, Post.schedule
Post.linklinkNone.Post.publish, Post.schedule
Post.publishAtscheduled_publish_timeSent with published falsePost.schedule
Lead.interestleadgen.field_dataEach form question and answer, as you wrote the formLead.qualify

What try does here

Returns the post as your page will show it, with the time it goes live; nothing is posted or scheduled.

How long a connection lasts

A connection lasts until you remove the app or give up your role on the page: a page token made from Meta’s long-lived sign-in has no expiration date.

The platform asks you to reconnect 7 days before it runs out; until you do, a call that needs it refuses with needs-reauth.

Formats

SiteFormatSizeLimits
FacebookFeed image ad1440 × 1800, 4:5Primary text 50 to 150 characters; headline 27; up to 30 megabytes

Plays and strategies

Used by

No Workflow, agent task or Service acts through it yet: your agents call it directly.

Reference

5 calls, each with its path and price
CallPathPrice
Post.schedulePOST /posts/scheduleFree
Post.publishPOST /posts/publishFree
Conversation.answerPOST /conversations/answerFree
Lead.qualifyPOST /leads/qualifyFree
Metric.queryPOST /metrics/queryFree

Contents