Onboarding and site import
Point Runearc at your website and it sets your brand and drafts a welcome sequence for new contacts. Nothing sends until you turn it on.
Import a site
POST /v1/onboarding/site-imports with a url fetches the page, reads its name, description, logo and main
color, and saves them as your email brand defaults. It returns 201 and a site import
with an id that starts with sim_, requested_url, final_url, status (ok or failed), error_code,
name, description, logo_url and color. GET /v1/onboarding/site-imports/{id} reads it again.
The fetch only follows public web pages: addresses that resolve to private networks are refused
(site_blocked), as are non HTML pages (site_not_html) and redirect loops. Each workspace can import 10 sites
an hour.
Welcome sequence
# 1. Read the site: brand, name, description and logo are saved.
curl -X POST https://api.runearc.com/v1/onboarding/site-imports \
-H "Authorization: Bearer $RUNEARC_API_KEY" -H "Content-Type: application/json" \
-d '{ "url": "https://acme.com" }'
# 2. Draft the four email welcome sequence from it. Nothing is sent.
curl -X POST https://api.runearc.com/v1/onboarding/welcome \
-H "Authorization: Bearer $RUNEARC_API_KEY" -H "Content-Type: application/json" \
-d '{ "import_id": "sim_...", "style": "designed" }'
# 3. Save the business postal address (required for marketing mail), then turn it on.
curl -X PUT https://api.runearc.com/v1/workspace/postal-address \
-H "Authorization: Bearer $RUNEARC_API_KEY" -H "Content-Type: application/json" \
-d '{ "line1": "548 Market St", "city": "San Francisco", "region": "CA", "postal_code": "94104", "country": "US" }'
curl -X POST https://api.runearc.com/v1/onboarding/welcome/$SEQUENCE_ID/turn-on \
-H "Authorization: Bearer $RUNEARC_API_KEY"The draft is a sequence of four emails, sent immediately and on days 1, 3 and 5 after a
contact joins. It is written with AI writing, so one generation of your monthly allowance is used
and the ai_* errors can apply. style is designed (the default, with your brand) or plain.
| Request | Body or query | Returns |
|---|---|---|
| POST /v1/onboarding/welcome | import_id, style | 201 and the draft: sequence_id, import_id, active, style, audience, steps, address_required. |
| GET /v1/onboarding/welcome | none | The current draft. |
| PATCH /v1/onboarding/welcome/{sequence_id} | audience, style | The draft. audience is { "kind": "new_contacts" } (everyone who becomes a contact from now on) or { "kind": "list", "list_id" }. |
| GET /v1/onboarding/welcome/{sequence_id}/preview | position (step, from 0), style | A rendered email. |
| POST /v1/onboarding/welcome/{sequence_id}/turn-on | none | The draft, now active. This is the step that sends mail. |
Turning it on is refused with postal_address_required until the workspace has a postal address, which email
law requires in marketing mail: GET, PUT /v1/workspace/postal-address with line1, line2 (optional),
city, region, postal_code and a two letter country. Once active, edit the sequence on the
Sequences page's endpoints.
Runearc waitlist
Runearc's own private beta has a public signup, POST /v1/waitlist, with no key. It is for requesting access to
Runearc, not a way to collect signups for your product; for that use Forms and popups (the
waitlist form template) or a landing page.
| Field | Type | Description |
|---|---|---|
| string | Required. | |
| name, company | string | Optional, at most 200 characters. |
| use_case | string | One of agents, apps, support, marketing or other. |
| note | string | Optional, at most 2000 characters. |
| source | string | Optional, at most 500 characters. |
| website | string | Honeypot. Leave empty. |
The answer is 202 { "status": "ok" } for a new address, an address already listed and a filled honeypot alike,
so it never reveals who is on the list. At most 5 requests per client address every 10 minutes (rate_limited).
Only a new address gets the confirmation email.
CLI and MCP
runearc onboarding import https://acme.com
runearc onboarding draft sim_... --style designed
runearc onboarding show
runearc onboarding address --line1 "548 Market St" --city "San Francisco" --region CA --postal-code 94104 --country US
runearc onboarding turn-on seq_...MCP tools: import_site, draft_welcome_sequence and turn_on_welcome_sequence.
Errors
| Code | Status | Meaning and fix |
|---|---|---|
| invalid_site_url, site_blocked, site_not_html, too_many_redirects, site_unreachable | 400 | Give a public https page address that serves HTML. The message says which. |
| site_import_rate_limited | 429 | Ten imports an hour. Wait, or write the sequence from a prompt with AI writing. |
| import_not_found | 404 | Import the site first, or pass the id of a successful import. |
| welcome_not_found | 404 | Draft the welcome sequence first. |
| welcome_already_on | 409 | It is active. Pause it from Sequences before changing the draft. |
| postal_address_required | 400 | Save the postal address, then turn it on. |
| ai_limit_reached, ai_unavailable | 402, 503 | See AI writing. |