Skip to content

Make content

Who writes my pages, posts and ads? Your agent drafts every page, post and ad from your product and your approved terms, and you approve each one before it goes out.

Make content
You, to your agent

Write the page for "rent ledger template".

Then make me an ad kit from the dashboard screenshot.

curl -X POST https://api.sb/leaseline.app/content/draft \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"article","brief":"rent ledger template: answer the term and the questions people also ask, and quote the late-rent share across Leaseline accounts"}'

curl -X POST https://api.sb/leaseline.app/files/generate \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"image","prompt":"The Leaseline rent ledger filling in as payments arrive, five ad sizes","references":["files/file_31"],"format":{"sizes":["1:1","4:5","9:16","16:9","1.91:1"]}}'

curl -X POST https://api.sb/leaseline.app/files/generate \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"video","prompt":"The ledger fills itself as rent arrives","references":["files/file_31"],"format":{"seconds":6,"resolution":"768p"}}'

curl -X POST https://api.sb/leaseline.app/files/generate \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"speech","prompt":"Rent comes in, the ledger fills itself. Leaseline tracks every payment, so the spreadsheet can go."}'
import { $ } from 'startup-builder'

const page = await $.Content.draft({ kind: 'article', brief: 'rent ledger template: answer the term and the questions people also ask, and quote the late-rent share across Leaseline accounts' })   // one page for an approved term, a few cents
const images = await $.File.generate({ kind: 'image', prompt: 'The Leaseline rent ledger filling in as payments arrive, five ad sizes', references: ['files/file_31'], format: { sizes: ['1:1', '4:5', '9:16', '16:9', '1.91:1'] } })   // five images from your product shot
const clip = await $.File.generate({ kind: 'video', prompt: 'The ledger fills itself as rent arrives', references: ['files/file_31'], format: { seconds: 6, resolution: '768p' } })   // a six-second clip from the still
const voiceover = await $.File.generate({ kind: 'speech', prompt: 'Rent comes in, the ledger fills itself. Leaseline tracks every payment, so the spreadsheet can go.' })   // the voiceover for the clip
return { page, images, clip, voiceover }
npx startup-builder do Content.draft --json '{"kind":"article","brief":"rent ledger template: answer the term and the questions people also ask, and quote the late-rent share across Leaseline accounts"}'
npx startup-builder do File.generate --json '{"kind":"image","prompt":"The Leaseline rent ledger filling in as payments arrive, five ad sizes","references":["files/file_31"],"format":{"sizes":["1:1","4:5","9:16","16:9","1.91:1"]}}'
npx startup-builder do File.generate --json '{"kind":"video","prompt":"The ledger fills itself as rent arrives","references":["files/file_31"],"format":{"seconds":6,"resolution":"768p"}}'
npx startup-builder do File.generate --json '{"kind":"speech","prompt":"Rent comes in, the ledger fills itself. Leaseline tracks every payment, so the spreadsheet can go."}'
{
  "name": "do",
  "arguments": {
    "code": "const page = await $.Content.draft({ kind: 'article', brief: 'rent ledger template: answer the term and the questions people also ask, and quote the late-rent share across Leaseline accounts' })   // one page for an approved term, a few cents\nconst images = await $.File.generate({ kind: 'image', prompt: 'The Leaseline rent ledger filling in as payments arrive, five ad sizes', references: ['files/file_31'], format: { sizes: ['1:1', '4:5', '9:16', '16:9', '1.91:1'] } })   // five images from your product shot\nconst clip = await $.File.generate({ kind: 'video', prompt: 'The ledger fills itself as rent arrives', references: ['files/file_31'], format: { seconds: 6, resolution: '768p' } })   // a six-second clip from the still\nconst voiceover = await $.File.generate({ kind: 'speech', prompt: 'Rent comes in, the ledger fills itself. Leaseline tracks every payment, so the spreadsheet can go.' })   // the voiceover for the clip\nreturn { page, images, clip, voiceover }"
  }
}
Response200application/json
{
  "page": {
    "$id": "https://api.sb/leaseline.app/contents/content_57",
    "$type": "Content",
    "kind": "article",
    "status": "Draft",
    "title": "Rent ledger template: track every payment without the spreadsheet",
    "path": "/guides/rent-ledger-template",
    "answers": [
      "What goes in a rent ledger?",
      "Is a rent ledger the same as a rent roll?",
      "How do I track late rent in a ledger?"
    ],
    "yourFact": "Across 140 Leaseline accounts, 1 in 9 payments arrives after the 5th (records/record_212)",
  …
sample
One ad kit: $0.50 to $0.80
First run
API
Runs by
nothing
Connect once

What you get

FieldWhat it says
DraftThe page, post or email itself, in status Draft until you approve it.
TermThe approved term the page answers, with the questions people also ask about it.
Your factOne number or story from your own records that no other page has, quoted with the record it reads.
SourcesThe ranking pages and the pages answer engines cite, so the draft answers what they leave out.
KitFive images, one clip and one voiceover, each sized for the Venue it runs on.
Made fromThe prompt and the reference files behind each image, clip and voiceover.
CostWhat each piece cost, settled per call. A generation that fails costs nothing.

How it runs

WhenWhat happensRuns byYour partTakes
OnceRead your product, your Brand and your product shots into one briefAPIapprove the brief onceminutes
Each approved termDraft one page that answers the term and the questions people also ask, with one fact from your records (Draft)APIapprove or edit the draftabout 3 minutes of yours a page
Each pageDraft the posts that point to it, one per account (Draft)APIapprove the first post from each pageminutes
Before adsMake five images, a six-second clip and a voiceover from your product shots (Ad kit)APIapprove the kit onceminutes
Week 6Rewrite the pages ranking 8 to 30 against the pages above them (Draft)APIapprove each rewriteweeks for the new rank to show

Jobs inside it

JobWhat it returnsPriceStatusRuns by
DraftA page, post or email in your voice, from a brief or an approved terma few cents a draftWorks todayAPI
Ad kitFive images, a six-second clip and a voiceover, from your product shots and your Brand$0.50 to $0.80 a kitComingAPI
ImagesFive ad and post images in your brand, following your product shotsabout $0.15 a setComingAPI
VideoA six-second clip from a still or a linefrom $0.28 a clipComingAPI
Product videoA walkthrough timeline drafted from your Brand and your Offer, every claim on screen linked to its recordfree to draftComingAPI
VoiceoverA read of your script as audio, with word-level subtitlesabout $0.015 per 1,000 charactersComingAPI
Your voiceA Voice trained on your own recordings, so every voiceover sounds like youpriced before it trainsComingAPI
MusicA background track for a clipabout $0.04 a clipComingAPI

Where and how it runs

Where it worksHow it runsConnect once
your own StartupAPInothing

Your agent acts as you on every Venue you authorize. Where a Venue has no API, a browser agent signs in as you and does the steps.

Plays that use it

Reference

Compiled, not written: edit the records it reads (catalog/make-content), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.

Contents