Command line reference

Everything you can do in your RegisterMySite account, from a terminal with curl. These are the same requests the web apps make for you.

Getting started

Base URLs

Account & sign-inhttps://account.registermysite.com
Free-domain claimhttps://claim.registermysite.com
Support ticketshttps://help.registermysite.com
EdgeFormshttps://forms.registermysite.com
BotForgehttps://botforge.registermysite.com
Linkshttps://links.registermysite.com

1. Sign in and save your session

All apps share one session cookie, rms_account, set for .registermysite.com. Sign in once and reuse cookies.txt everywhere:

export RMS_EMAIL='[email protected]'
read -rs RMS_PASSWORD; export RMS_PASSWORD   # type your password, it won't echo
curl -sS -X POST 'https://account.registermysite.com/login' -c cookies.txt \
  -H 'Origin: https://account.registermysite.com' \
  --data-urlencode "email=$RMS_EMAIL" --data-urlencode "password=$RMS_PASSWORD" \
  -o /dev/null -w '%{http_code}\n'      # 302 = signed in, 401 = wrong details
curl -sS 'https://account.registermysite.com/api/me' -b cookies.txt

Alternative: sign in in your browser, open DevTools → Storage/Application → Cookies → account.registermysite.com, copy the value of rms_account, then use a header instead of -b cookies.txt:

export RMS_TOKEN='paste-cookie-value-here'
curl -sS 'https://account.registermysite.com/api/me' -H "Cookie: rms_account=$RMS_TOKEN"

Keep it secret. The cookie is your login. Don't paste it into tickets, chats or scripts you share, and delete cookies.txt when you're done (chmod 600 cookies.txt while you use it). Sessions expire. If you get 401, sign in again. If you change your plan, the next request issues a fresh cookie, so use -c cookies.txt -b cookies.txt together to keep it current.

2. Origin header on changes

Requests that change something (POST, PATCH, DELETE) are checked against the site's own origin. Without it you get 403 {"code":"csrf_rejected","error":"Origin not allowed."}. Every example below already includes -H 'Origin: https://<same host>'.

Errors and limits

401Not signed in or session expired
403Your plan doesn't include it, or the Origin header is missing
404Not found or not yours
409Conflict, e.g. already_claimed
429Rate limited. Wait (EdgeForms says retryAfter: 60 seconds) and retry. Login, search, claim and ticket creation are rate limited.

Account creation, plan upgrades and billing (Stripe checkout and Manage billing) are done in the browser at account.registermysite.com. They aren't part of this command-line API.

Account & plan

Your RegisterMySite account. Sign-in sets the shared rms_account cookie used by every app below.

POSThttps://account.registermysite.com/login

Sign in with email and password (HTML form endpoint). On success the response sets the rms_account cookie; save it with -c.

Auth: none (sets the cookie) · Errors: 401 wrong email/password · 403 csrf_rejected (missing or wrong Origin header)

NameTypeNotes
emailformYour account email
passwordformYour password
nextform, optionalWhere to redirect after sign-in
curl -sS -X POST 'https://account.registermysite.com/login' \
  -c cookies.txt \
  -H 'Origin: https://account.registermysite.com' \
  --data-urlencode "email=$RMS_EMAIL" \
  --data-urlencode "password=$RMS_PASSWORD" \
  -o /dev/null -w '%{http_code}\n'

Response shape: see source.

GEThttps://account.registermysite.com/api/me

Who am I: your account id, email, role and current plan.

Auth: rms_account cookie · Errors: 401 signed out

curl -sS 'https://account.registermysite.com/api/me' \
  -b cookies.txt

Example response

{
  "id": "…",
  "email": "[email protected]",
  "role": "user",
  "plan": "diy"
}
GEThttps://account.registermysite.com/logout

Sign out and clear the session cookie.

Auth: rms_account cookie · Errors: —

curl -sS 'https://account.registermysite.com/logout' -b cookies.txt -c cookies.txt -o /dev/null

Domains & free-domain credit

The claim app at claim.registermysite.com. DIY and higher plans include one free domain (first year free, renewal up to $14.00/yr).

GEThttps://claim.registermysite.com/api/credit

Status of your free-domain credit.

Auth: rms_account cookie · Errors: 401 signed out · error codes in body: no_credit, credit_used, credit_expired, claiming (claim in progress)

curl -sS 'https://claim.registermysite.com/api/credit' \
  -b cookies.txt

Example response

{
  "credit": { "test_only": true, "…": "…" }
}
POSThttps://claim.registermysite.com/api/search

Search names your credit covers. Only available domains with first-year and renewal price ≤ $14.00 are returned.

Auth: rms_account cookie · Errors: 401 signed_out · 403 Free plan (upgrade required)

NameTypeNotes
querystring, requiredKeyword or name, e.g. joesplumbing
curl -sS -X POST 'https://claim.registermysite.com/api/search' \
  -b cookies.txt \
  -H 'Origin: https://claim.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"query":"joesplumbing"}'

Example response

{
  "results": [
    { "domain": "joesplumbing.org", "renewal": 11.20 }
  ]
}
POSThttps://claim.registermysite.com/api/claim

Claim one domain with your free credit. One per account, permanent. In test mode nothing is really registered.

Auth: rms_account cookie · Errors: 401 signed out · 403 Free plan · 409 already_claimed · 409 no_longer_eligible (price or availability changed, search again)

NameTypeNotes
domainstring, requiredA domain returned by search
curl -sS -X POST 'https://claim.registermysite.com/api/claim' \
  -b cookies.txt \
  -H 'Origin: https://claim.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"domain":"joesplumbing.org"}'

Response shape: see source.

POSThttps://claim.registermysite.com/api/chat

Ask the claim assistant for name ideas.

Auth: rms_account cookie · Errors: 401 signed_out

NameTypeNotes
messagestringYour question
chipstring, alt.A suggestion chip label instead of message
curl -sS -X POST 'https://claim.registermysite.com/api/chat' \
  -b cookies.txt \
  -H 'Origin: https://claim.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"message":"ideas for a plumbing business in Long Beach"}'

Response shape: see source.

Support tickets

The help desk at help.registermysite.com. You see only your own tickets.

GEThttps://help.registermysite.com/api/me

Your help-desk identity.

Auth: rms_account cookie · Errors: 401

curl -sS 'https://help.registermysite.com/api/me' \
  -b cookies.txt

Response shape: see source.

GEThttps://help.registermysite.com/api/tickets

List your tickets.

Auth: rms_account cookie · Errors: 401

NameTypeNotes
statusquery, optionalopen, resolved, … or empty for all
qquery, optionalSearch text
curl -sS 'https://help.registermysite.com/api/tickets?status=open&q=' \
  -b cookies.txt

Example response

{
  "tickets": [
    { "number": 1042, "subject": "…", "status": "open", "last_message_at": "2026-10-13T18:00:00Z" }
  ]
}
POSThttps://help.registermysite.com/api/tickets

Open a new ticket (message the RegisterMySite team).

Auth: rms_account cookie · Errors: 400 validation · 401 · 429 rate limit (error body includes request_id)

NameTypeNotes
subjectstring, required
categorystring, requiredSame choices as the form at /new
prioritystring, requiredSame choices as the form at /new
descriptionstring, requiredWhat's going on
contextobject, optional{from, ua}
curl -sS -X POST 'https://help.registermysite.com/api/tickets' \
  -b cookies.txt \
  -H 'Origin: https://help.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"subject":"DNS question","category":"general","priority":"normal","description":"How do I point my domain at Squarespace?"}'

Example response

{ "id": "…", "number": 1043, "url": "/t/1043" }
POSThttps://help.registermysite.com/api/tickets/{id}/uploads?filename=

Attach a file to a ticket. Raw request body, max 10 MB; png, jpg, webp, gif, pdf, txt, log.

Auth: rms_account cookie · Errors: 401 · 413 too large · 415 type not allowed

NameTypeNotes
idpathTicket id from create/get
filenamequeryFile name
curl -sS -X POST 'https://help.registermysite.com/api/tickets/$TICKET_ID/uploads?filename=screenshot.png' \
  -b cookies.txt \
  -H 'Origin: https://help.registermysite.com' \
  --data-binary @screenshot.png
GEThttps://help.registermysite.com/api/tickets/by-number/{number}

Get one ticket and its messages (internal staff notes are never shown).

Auth: rms_account cookie · Errors: 401 · 404 not yours / not found

NameTypeNotes
numberpathTicket number, e.g. 1043
curl -sS 'https://help.registermysite.com/api/tickets/by-number/1043' \
  -b cookies.txt

Example response

{
  "ticket": { "id": "…", "status": "open" },
  "messages": [
    { "author_role": "user", "body": "…", "created_at": "…", "attachments": [ { "url": "/api/attachments/…", "filename": "…", "mime": "image/png" } ] }
  ]
}
PATCHhttps://help.registermysite.com/api/tickets/{id}/status

Mark a ticket resolved or reopen it.

Auth: rms_account cookie · Errors: 401 · 404

NameTypeNotes
statusstringresolved or open
curl -sS -X PATCH 'https://help.registermysite.com/api/tickets/$TICKET_ID/status' \
  -b cookies.txt \
  -H 'Origin: https://help.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"status":"resolved"}'

Response shape: see source.

GEThttps://help.registermysite.com/api/attachments/{id}

Download an attachment (use the url from a message).

Auth: rms_account cookie · Errors: 401 · 404

NameTypeNotes
idpathAttachment id
curl -sS 'https://help.registermysite.com/api/attachments/$ATTACHMENT_ID' \
  -b cookies.txt -o attachment.bin

EdgeForms

Form backend at forms.registermysite.com. Signs in with the same account cookie.

GEThttps://forms.registermysite.com/api/me

Your EdgeForms profile.

Auth: rms_account cookie · Errors: 401

curl -sS 'https://forms.registermysite.com/api/me' \
  -b cookies.txt

Example response

{
  "authenticated": true,
  "accountLinked": true,
  "id": "…", "email": "…", "name": "…", "createdAt": "…"
}
GEThttps://forms.registermysite.com/api/forms

List your forms with submission counts.

Auth: rms_account cookie · Errors: 401

curl -sS 'https://forms.registermysite.com/api/forms' \
  -b cookies.txt

Example response

{ "forms": [ { "id": "…", "name": "Contact", "submission_count": 3 } ] }
POSThttps://forms.registermysite.com/api/forms

Create a form.

Auth: rms_account cookie · Errors: 400 fields_required / invalid email · 401

NameTypeNotes
destinationEmailstring, requiredWhere submissions are emailed
namestringDefault Contact
fieldsarrayField schema, or…
useDefaultboolean…true for a default contact form
allowedOriginsstring[]
redirectUrlstring
requestIdstringIdempotency key
curl -sS -X POST 'https://forms.registermysite.com/api/forms' \
  -b cookies.txt \
  -H 'Origin: https://forms.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Contact","destinationEmail":"[email protected]","useDefault":true}'

Response shape: see source.

GEThttps://forms.registermysite.com/api/forms/{id}

Get one form.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://forms.registermysite.com/api/forms/$FORM_ID' \
  -b cookies.txt

Response shape: see source.

PATCHhttps://forms.registermysite.com/api/forms/{id}

Update a form. Send only fields to change: name, destinationEmail, status (active|paused), redirectUrl, allowedOrigins, notifyEmail, storeSubmissions, replyToField, fields, theme.

Auth: rms_account cookie · Errors: 400 · 401 · 404

curl -sS -X PATCH 'https://forms.registermysite.com/api/forms/$FORM_ID' \
  -b cookies.txt \
  -H 'Origin: https://forms.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"status":"paused"}'

Response shape: see source.

DELETEhttps://forms.registermysite.com/api/forms/{id}

Delete a form.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X DELETE 'https://forms.registermysite.com/api/forms/$FORM_ID' \
  -b cookies.txt \
  -H 'Origin: https://forms.registermysite.com'

Response shape: see source.

GEThttps://forms.registermysite.com/api/forms/{id}/submissions

List submissions.

Auth: rms_account cookie · Errors: 401 · 404

NameTypeNotes
limitqueryMax 100, default 50
curl -sS 'https://forms.registermysite.com/api/forms/$FORM_ID/submissions?limit=50' \
  -b cookies.txt

Example response

{ "submissions": [ … ] }
GEThttps://forms.registermysite.com/api/forms/{id}/submissions.csv

Export submissions as CSV.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://forms.registermysite.com/api/forms/$FORM_ID/submissions.csv' \
  -b cookies.txt -o submissions.csv
GEThttps://forms.registermysite.com/api/forms/{id}/submissions/{sid}

Get one submission.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://forms.registermysite.com/api/forms/$FORM_ID/submissions/$SUB_ID' \
  -b cookies.txt

Response shape: see source.

POSThttps://forms.registermysite.com/api/forms/{id}/submissions/{sid}/resend

Resend the notification email for a submission.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://forms.registermysite.com/api/forms/$FORM_ID/submissions/$SUB_ID/resend' \
  -b cookies.txt \
  -H 'Origin: https://forms.registermysite.com'

Response shape: see source.

BotForge

Chatbot builder at botforge.registermysite.com.

GEThttps://botforge.registermysite.com/api/account/profile

Your BotForge profile.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://botforge.registermysite.com/api/account/profile' \
  -b cookies.txt

Response shape: see source.

PATCHhttps://botforge.registermysite.com/api/account/profile

Change your display name.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X PATCH 'https://botforge.registermysite.com/api/account/profile' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ryan"}'

Response shape: see source.

GEThttps://botforge.registermysite.com/api/bots

List your bots.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://botforge.registermysite.com/api/bots' \
  -b cookies.txt

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots

Create a bot.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Front desk bot"}'

Response shape: see source.

GEThttps://botforge.registermysite.com/api/bots/{id}

Get a bot.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://botforge.registermysite.com/api/bots/$BOT_ID' \
  -b cookies.txt

Response shape: see source.

PATCHhttps://botforge.registermysite.com/api/bots/{id}

Update a bot (send the bot object fields you edit).

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X PATCH 'https://botforge.registermysite.com/api/bots/$BOT_ID' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"name":"New name"}'

Response shape: see source.

DELETEhttps://botforge.registermysite.com/api/bots/{id}

Delete a bot.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X DELETE 'https://botforge.registermysite.com/api/bots/$BOT_ID' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/documents

Add knowledge: pasted text or a URL (multipart file upload also accepted with -F [email protected]).

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/documents' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com/faq"}'

Response shape: see source.

DELETEhttps://botforge.registermysite.com/api/bots/{id}/documents/{docId}

Remove a document.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X DELETE 'https://botforge.registermysite.com/api/bots/$BOT_ID/documents/$DOC_ID' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/documents/{docId}/retrain

Re-index a document.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/documents/$DOC_ID/retrain' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/retrieve

Test what the bot retrieves for a query.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/retrieve' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com' \
  -H 'Content-Type: application/json' \
  -d '{"query":"opening hours"}'

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/preview-chat

Chat with the bot in preview (body shape: see source).

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/preview-chat' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

GEThttps://botforge.registermysite.com/api/bots/{id}/analytics

Bot usage analytics.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS 'https://botforge.registermysite.com/api/bots/$BOT_ID/analytics' \
  -b cookies.txt

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/deploy

Publish the bot.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/deploy' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/undeploy

Unpublish the bot.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/undeploy' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

POSThttps://botforge.registermysite.com/api/bots/{id}/rotate-slug

Rotate the public embed slug.

Auth: rms_account cookie · Errors: 401 · 404

curl -sS -X POST 'https://botforge.registermysite.com/api/bots/$BOT_ID/rotate-slug' \
  -b cookies.txt \
  -H 'Origin: https://botforge.registermysite.com'

Response shape: see source.

Ticket live chat (WebSocket)

Each ticket has a live channel. Send replies to support and receive theirs in real time.

WSwss://help.registermysite.com/api/tickets/{id}/ws

Use the ticket id (not the number) from GET /api/tickets/by-number/{number}. Install websocat, then:

websocat "wss://help.registermysite.com/api/tickets/$TICKET_ID/ws" \
  -H "Cookie: rms_account=$RMS_TOKEN" \
  -H "Origin: https://help.registermysite.com"

Then type one JSON message per line:

{"type": "message.send", "ticket_id": "$TICKET_ID", "body": "Thanks, that fixed it!", "client_msg_id": "any-unique-id"}
TypeDirectionMeaning
message.sendyou → serverticket_id, body, client_msg_id
message.ackserver → youYour message with that client_msg_id was saved
message.newserver → youNew message: author_role, body, created_at
typing.start / typing.stopserver → youSupport is typing
presence.join / presence.leaveserver → youSupport joined or left (role)

Verified from help /assets/ticket.js. The upgrade path returns 401 when you're signed out.