Public compliance API for location launches.
The public surface stays focused: requirements lookup, authenticated monitors, access requests, and deployment health. Founder ops tooling stays secondary so the product remains easy to evaluate.
Health contract
This is the fastest way to verify deployment posture before anyone touches a monitor flow. It reports coverage, product state, and optional runtime capabilities without leaking credentials.
{
"status": "ok",
"checkedAt": "2026-04-13T19:00:00.000Z",
"product": {
"verticals": [
"fast-casual-restaurant"
],
"mappedMarkets": 12,
"mappedRequirements": 72,
"monitoredAccounts": 0
},
"runtime": {
"database": "ready",
"monitors": "ready",
"aiResearch": "configured",
"githubResearch": "optional",
"founderOpsMode": "draft"
}
}Product surface
/api/v1/requirementsReturn mapped obligations, cost ranges, and renewal lead times for one supported market.
/api/v1/requirementsQuery the same contract with URL params when you want a quick smoke test or simple integration.
/api/v1/access-requestsCapture an access request from the public site or a lightweight external intake flow.
/api/v1/healthRead deployment and coverage status for the current runtime without exposing secrets.
/api/v1/monitorsList monitored accounts with upcoming deadlines and health score for customer renewal workflows. Requires X-API-Key.
/api/v1/monitorsCreate a monitored account and compute the first upcoming deadline immediately. Requires X-API-Key.
/api/v1/monitors/:idInspect a single monitored account and its current renewal posture. Requires X-API-Key.
/api/v1/accountRead the authenticated customer account, plan, and billing state. Requires X-API-Key.
/api/v1/billing/portalCreate a hosted Stripe billing portal session for the authenticated customer account. Requires X-API-Key.
Quickstart flow
Look up requirements
curl -s https://launchpermit.com/api/v1/requirements \
-H "content-type: application/json" \
-d '{
"vertical": "fast-casual-restaurant",
"city": "Austin",
"state": "TX"
}'{
"market": "Austin, TX",
"vertical": "fast-casual-restaurant",
"summary": "Good pilot market because the path is still annoying but clean enough to prove requirement mapping and renewals.",
"requirementCount": 6,
"annualCostLow": 805,
"annualCostHigh": 2295,
"requirements": [
{
"id": "aus-assumed-name",
"name": "Local business registration / DBA confirmation",
"category": "entity",
"authority": "Travis County + Texas Secretary of State workflow",
"level": "county",
"cadence": "one_time",
"costRange": "$25 - $90",
"leadDays": 20,
"notes": "Needed when the operating name and legal entity structure drift apart during expansion."
},
{
"id": "aus-sales-tax",
"name": "Texas sales tax permit",
"category": "tax",
"authority": "Texas Comptroller",
"level": "state",
"cadence": "one_time",
"costRange": "$0 - $50",
"leadDays": 14,
"notes": "Usually simple on paper, but still a dependency for launch accounting and POS setup."
}
]
}Read authenticated account
curl -s https://launchpermit.com/api/v1/account \
-H "x-api-key: lp_live_your_key_here"{
"account": {
"id": "generated-id",
"name": "LaunchLane",
"contactEmail": "maya@launchlane.example",
"plan": "design-partner",
"status": "active",
"billingStatus": "active",
"currentPeriodEnd": "2026-05-14T12:00:00.000Z",
"accessOrigin": "stripe-checkout"
}
}Create a monitored account
curl -s https://launchpermit.com/api/v1/monitors \
-H "x-api-key: lp_live_your_key_here" \
-H "content-type: application/json" \
-d '{
"businessName": "South Congress Bowls",
"city": "Austin",
"state": "TX",
"locationCount": 3
}'{
"status": "ok",
"monitorId": "generated-id",
"nextDeadline": "2026-05-04"
}Open billing portal
curl -s https://launchpermit.com/api/v1/billing/portal \
-H "x-api-key: lp_live_your_key_here" \
-H "content-type: application/json" \
-d '{
"returnPath": "/pricing"
}'{
"status": "ok",
"url": "https://billing.stripe.com/p/session/example"
}Read runtime health
curl -s https://launchpermit.com/api/v1/health{
"status": "ok",
"checkedAt": "2026-04-13T19:00:00.000Z",
"product": {
"verticals": [
"fast-casual-restaurant"
],
"mappedMarkets": 12,
"mappedRequirements": 72,
"monitoredAccounts": 0
},
"runtime": {
"database": "ready",
"monitors": "ready",
"aiResearch": "configured",
"githubResearch": "optional",
"founderOpsMode": "draft"
}
}Launch posture
6 mapped obligations. Estimated annual permit cost range: $805 to $2295.
Environment shape
Public launch only needs the product env. AI and founder ops stay optional. The app still runs cleanly without GitHub enrichment or outbound sending configured.
OUTREACH_MODE=draft
APP_ADMIN_PASSWORD=""
APP_SESSION_SECRET=""
APP_BASE_URL="https://launchpermit.com"
AI_API_KEY=""
AI_BASE_URL=""
AI_MODEL="gpt-5-mini"
GITHUB_TOKEN=""
GITHUB_API_BASE_URL=""
OUTREACH_FROM_NAME="Your Name"
OUTREACH_FROM_EMAIL="you@yourdomain.com"
OUTREACH_REPLY_TO="you@yourdomain.com"
GMAIL_USER=""
GMAIL_APP_PASSWORD=""
RESEND_API_KEY=""
RESEND_WEBHOOK_SECRET=""
ACCESS_ALERT_EMAILS=""
STRIPE_SECRET_KEY=""
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=""
STRIPE_WEBHOOK_SECRET=""
STRIPE_PORTAL_CONFIGURATION_ID=""
STRIPE_PRICE_STARTER_MONTHLY=""
STRIPE_PRICE_GROWTH_MONTHLY=""Internal founder ops surface
This is deliberately below the public product contract. It is useful for finding target accounts, researching them, and drafting outreach, but it should not confuse someone evaluating the API itself.
/api/v1/outreach/campaignsReturn internal campaign state, leads, research metadata, and stored draft content.
/api/v1/outreach/importImport leads from CSV with website, public GitHub, or private/internal GitHub source URLs.
/api/v1/outreach/research/generateResearch a lead from its source URL, score ICP fit, and store factual hooks for review.
/api/v1/outreach/previewPreview the deterministic sequence template before AI drafting happens.
/api/v1/outreach/drafts/generateGenerate personalized draft content using the configured AI provider.
/api/v1/outreach/export?scope=dueDownload the next approved outreach queue as CSV for manual sending and spreadsheet handoff.
GITHUB_TOKEN. When APP_ADMIN_PASSWORD is set, founder ops routes and the dashboard require an admin session.Founder ops examples
companyName,contactName,contactEmail,city,state,stack,segment,sourceKind,sourceUrl,companyWebsite,companySummary,researchNotes
OrbitOps,Jordan,jordan@orbitops.io,Austin,TX,location rollout automation,franchise-software,website,https://orbitops.io,https://orbitops.io,,Already owns rollout workflows but not permit logic
RepoRail,Avery,avery@reporail.dev,Miami,FL,developer workflow platform,location-ops-saas,github-public,https://github.com/octokit/octokit.js,,,Public GitHub example for source-driven researchImport leads
curl -s https://launchpermit.com/api/v1/outreach/import \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"csv": "<paste rows from the CSV import template>"
}
JSON{
"status": "ok",
"importedCount": 3,
"leadIds": [
"uuid-1",
"uuid-2",
"uuid-3"
]
}Research one lead
curl -s https://launchpermit.com/api/v1/outreach/research/generate \
-H "content-type: application/json" \
-d '{
"leadId": "existing-lead-uuid"
}'{
"status": "ok",
"leadId": "existing-lead-uuid",
"researchStatus": "researched",
"icpScore": 86
}Generate personalized drafts
curl -s https://launchpermit.com/api/v1/outreach/drafts/generate \
-H "content-type: application/json" \
-d '{
"leadId": "existing-lead-uuid"
}'{
"status": "ok",
"leadId": "existing-lead-uuid",
"draftStatus": "generated",
"stepsGenerated": 4
}