API reference

Generated from the API's OpenAPI document, version 1.0.0. The document itself is in the repository, the SDK is typed from it, and the API serves an interactive version for trying requests.

Basics

The base URL is https://api.simhook.dev (or your own host). Requests and responses are JSON; timestamps are RFC 3339 in UTC; ids are UUIDs.

Authenticate with an API key from the dashboard in the X-Api-Key header. Authorization: Bearer <key> is accepted too. Keys carry scopes (send, read, devices, webhooks) and an endpoint refuses a key without the scope it needs; each endpoint below says which. Account operations need a dashboard session and cannot be done with a key.

Lists return data and a next_cursor; pass it back as cursor for the next page. limit defaults to 50.

Errors

Every error has the same shape. code is stable and meant for your code; message is for people.

FieldType
codestringStable machine-readable code.
errorsFieldError[]Per-field problems, when applicable.
messagestringHuman-readable explanation.
statusintegerHTTP status code.

Common codes: unauthenticated (401), insufficient_scope (403, a key without the scope the endpoint needs), not_found (404), validation_failed (422, with per-field errors), no_device (no paired phone can take the send), and the plan limits plan_limit_daily, plan_limit_monthly, plan_limit_batch, plan_limit_devices, plan_limit_webhooks (429).

Endpoints

Messages

Send texts, follow sends, and read what was sent and received.

GET/v1/batches

List sends

needs an API key with the read scope

Every send on the account, newest first, with per-status counts.

parameters

cursorquerystring
limitqueryinteger

response 200

dataBatch[]
next_cursorstring

GET/v1/batches/{id}

Get a send

needs an API key with the read scope

The batch plus one message per recipient. Poll this to follow a send.

parameters

idpath, requiredstring

response 200

batchBatch
messagesMessage[]

GET/v1/messages

List messages

needs an API key with the read scope

Sent and received messages across the account, newest first, with delivery state on each. To poll for new messages, request order=asc with a from bound and follow next_cursor.

parameters

device_idsquerystringComma-separated device ids. Default: all paired devices.
directionquery"outbound" | "inbound"Filter by direction.
statusquery"queued" | "dispatched" | "sent" | "delivered" | "failed" | "unknown" | "received"
batch_idquerystringOnly messages from one send.
qquerystringMatch against text, recipient, and sender.
fromquerystringInclusive lower bound on created_at, RFC 3339.
toquerystringExclusive upper bound on created_at, RFC 3339.
orderquery"desc" | "asc"desc (default) for newest first; asc to walk forward when polling.
cursorquerystringnext_cursor from a previous page.
limitqueryintegerPage size, default 50.

response 200

dataMessage[]
next_cursorstringPass as cursor to get the next page. Absent on the last page.

POST/v1/messages

Send an SMS

needs an API key with the send scope

Queues one text to one or more recipients from a phone on the account. Acceptance is not delivery: follow the batch or subscribe to webhooks for the outcome. Every recipient counts as one message against the plan.

request body

bodystring, requiredMessage text. Long texts are sent as concatenated SMS.
device_idstringPhone to send from. Defaults to the account's default device, else the most recently online one.
scheduled_attimestampSend later, up to 7 days ahead.
sim_subscription_idintegerSIM to use on a multi-SIM phone. Unknown ids fall back to the phone's preferred SIM.
tostring[], requiredRecipient phone numbers, ideally E.164 such as +14155550123.

response 202

batchBatch
message_idsstring[]One id per recipient, in the order given after de-duplication.

GET/v1/messages/{id}

Get a message

needs an API key with the read scope

parameters

idpath, requiredstring

response 200

messageMessage

GET/v1/stats

Account totals

needs an API key with the read scope

response 200

devicesinteger
receivedinteger
sentinteger

Phones

The phones paired with the account: list them, change their settings, pair new ones.

GET/v1/devices

List devices

needs an API key with the read scope

Every phone paired with the account, default first.

response 200

DELETE/v1/devices/{id}

Unpair a device

needs an API key with the devices scope

Revokes the phone's token and stops sends to it. Message history is kept.

parameters

idpath, requiredstringDevice id from GET /v1/devices.

response 204

No body.

GET/v1/devices/{id}

Get a device

needs an API key with the read scope

parameters

idpath, requiredstringDevice id from GET /v1/devices.

response 200

deviceDevice

PATCH/v1/devices/{id}

Update device settings

needs an API key with the devices scope

Only the fields you send change. The phone is told at once and reloads its settings within seconds; a phone that is offline picks them up when it is back.

parameters

idpath, requiredstring

request body

clear_preferred_simbooleanSet true to fall back to the phone's default SIM.
enabledbooleanA disabled phone receives no new sends, and sends already queued for it fail.
heartbeat_interval_minutesinteger
namestring
preferred_sim_subscription_idintegerSIM to send from when a send names none.
receive_enabledbooleanForward incoming SMS from this phone.
send_delay_secondsintegerPause between consecutive sends on the phone.

response 200

deviceDevice

POST/v1/devices/{id}/default

Make this the default device

needs an API key with the devices scope

Sends that omit device_id go out from the default device.

parameters

idpath, requiredstringDevice id from GET /v1/devices.

response 200

deviceDevice

POST/v1/devices/pairing-codes

Create a pairing code

needs an API key with the devices scope

Mints a code valid for 10 minutes. Enter it in the phone app, or show pair_url as a QR code for the app to scan.

response 201

codestringType this into the app, or scan pair_url as a QR code.
expires_attimestamp
idstringPoll GET /v1/devices/pairing-codes/{id} to learn when a phone has used the code.
pair_urlstringDeep link the app understands. Encode it as a QR code.

GET/v1/devices/pairing-codes/{id}

Check a pairing code

needs an API key with the devices scope

Whether a phone has used the code yet, and which one. Poll it while showing the code.

parameters

idpath, requiredstringPairing code id from POST /v1/devices/pairing-codes.

response 200

consumedbooleanTrue once a phone has paired with this code.
deviceDeviceThe phone that used the code, once one has.
expires_attimestamp

Webhooks

Endpoints that receive events, and the log of every delivery attempt.

GET/v1/webhooks

List webhooks

needs an API key with the webhooks scope

response 200

POST/v1/webhooks

Create a webhook

needs an API key with the webhooks scope

Subscribes an https URL to events. Each delivery is a JSON POST signed with the returned secret: X-Simhook-Signature is t=<unix>,v1=<hex hmac-sha256 of "<t>.<body>">. Respond 2xx within 30 seconds; other responses are retried for about two days.

request body

eventsstring[], requiredAny of message.received, message.sent, message.delivered, message.failed, message.unknown, device.online, device.offline, ping.
namestring
urlstring, requiredHTTPS endpoint that receives POSTs.

response 201

secretstringSigning secret, shown once. Verify X-Simhook-Signature with it.
webhookWebhook

DELETE/v1/webhooks/{id}

Delete a webhook

needs an API key with the webhooks scope

parameters

idpath, requiredstring

response 204

No body.

GET/v1/webhooks/{id}

Get a webhook

needs an API key with the webhooks scope

parameters

idpath, requiredstring

response 200

webhookWebhook

PATCH/v1/webhooks/{id}

Update a webhook

needs an API key with the webhooks scope

parameters

idpath, requiredstring

request body

enabledbooleanRe-enabling clears any automatic pause.
eventsstring[]
namestring
urlstring

response 200

webhookWebhook

POST/v1/webhooks/{id}/rotate-secret

Rotate the signing secret

needs an API key with the webhooks scope

Deliveries queued from now on are signed with the new secret.

parameters

idpath, requiredstring

response 200

secretstring

POST/v1/webhooks/{id}/test

Send a test event

needs an API key with the webhooks scope

Queues a ping delivery so you can check your endpoint and signature verification.

parameters

idpath, requiredstring

response 202

deliveryDelivery

GET/v1/webhooks/deliveries

List deliveries

needs an API key with the webhooks scope

Delivery attempts across every webhook on the account, newest first, including webhooks since deleted.

parameters

webhook_idquerystring
statusquery"pending" | "delivered" | "retrying" | "failed"
eventquery"message.received" | "message.sent" | "message.delivered" | "message.failed" | "message.unknown" | "device.online" | "device.offline" | "ping"
fromquerystring
toquerystring
cursorquerystring
limitqueryinteger

response 200

dataDelivery[]
next_cursorstring

GET/v1/webhooks/deliveries/{id}

Get a delivery

needs an API key with the webhooks scope

parameters

idpath, requiredstring

response 200

deliveryDelivery

API keys

Keys for the API. Each has scopes; the secret is shown once, at creation.

GET/v1/api-keys

List API keys

needs a dashboard session; an API key cannot do this

parameters

include_revokedquerybooleanAlso return revoked keys.

response 200

POST/v1/api-keys

Create an API key

needs a dashboard session; an API key cannot do this

The full key is returned once. Only its hash is stored.

request body

expires_attimestampOptional expiry.
namestringLabel shown in the dashboard.
scopesstring[]Any of send, read, devices, webhooks. Defaults to all.

response 201

api_keyAPIKey
keystringThe full key. It is shown once and never stored.

DELETE/v1/api-keys/{id}

Delete an API key

needs a dashboard session; an API key cannot do this

parameters

idpath, requiredstringAPI key id.

response 204

No body.

PATCH/v1/api-keys/{id}

Rename an API key

needs a dashboard session; an API key cannot do this

parameters

idpath, requiredstring

request body

namestring, required

response 204

No body.

POST/v1/api-keys/{id}/revoke

Revoke an API key

needs a dashboard session; an API key cannot do this

Stops the key working immediately while keeping its record.

parameters

idpath, requiredstringAPI key id.

response 204

No body.

Plans

The plans and their limits.

GET/v1/plans

List plans

The public plan catalogue with limits and prices. No credentials needed.

response 200

dataPlan[]

Accounts and sessions

Used by the dashboard with a session cookie. Listed for self-hosters building their own front end.

GET/v1/auth/config

Sign-in options

What the sign-in page needs to know: whether Google sign-in is on, and the Turnstile site key when a bot check is required on the sign-in, sign-up, and password reset forms.

response 200

google_sign_inbooleanWhether Continue with Google is available at GET /v1/auth/google/start.
turnstile_site_keystringSite key for the Cloudflare Turnstile widget, or empty when no bot check is needed.

POST/v1/auth/login

Sign in

Checks the password and sets the session cookies the dashboard uses. A session lives 30 days without use, longer while it is used, and 180 days at most.

request body

emailstring, required
passwordstring, required
turnstile_tokenstringCloudflare Turnstile token. Required when GET /v1/auth/config reports a turnstile_site_key.

response 200

userUser

POST/v1/auth/logout

Sign out

needs a dashboard session; an API key cannot do this

Ends this session and clears the cookies. Always succeeds, so a browser with a dead cookie can still clean up.

response 204

No body.

GET/v1/auth/me

Current account

The account behind the credentials, with its plan limits and usage this period.

response 200

limitsLimits
usageUsageView
userUser

POST/v1/auth/password

Change password

needs a dashboard session; an API key cannot do this

Requires the current password. Every other session is signed out.

request body

current_passwordstring, required
new_passwordstring, required

response 204

No body.

POST/v1/auth/password-reset

Set a new password with a reset code

Completes a reset. Every existing session is signed out.

request body

codestring, required
emailstring, required
new_passwordstring, required

response 204

No body.

POST/v1/auth/password-reset/request

Request a password reset code

Emails a code if the address has an account. The response is the same either way.

request body

emailstring, required
turnstile_tokenstringCloudflare Turnstile token. Required when GET /v1/auth/config reports a turnstile_site_key.

response 202

No body.

PATCH/v1/auth/profile

Update profile

needs a dashboard session; an API key cannot do this

request body

namestring

response 200

userUser

POST/v1/auth/register

Create an account

Creates the account, signs it in with the session cookies, and emails a verification code. Sending is blocked until the email is verified.

request body

emailstring, requiredSign-in email. A verification code is sent to it.
namestringDisplay name.
passwordstring, requiredAt least 10 characters.
turnstile_tokenstringCloudflare Turnstile token. Required when GET /v1/auth/config reports a turnstile_site_key.

response 201

userUser

GET/v1/auth/sessions

List sessions

needs a dashboard session; an API key cannot do this

Every browser signed in to this account, most recently used first. The one making the request is marked current.

response 200

DELETE/v1/auth/sessions/{id}

End a session

needs a dashboard session; an API key cannot do this

Signs that browser out. Ending the current session also clears its cookies.

parameters

idpath, requiredstringSession id.

response 204

No body.

POST/v1/auth/sessions/revoke-others

End every other session

needs a dashboard session; an API key cannot do this

Signs out every browser but this one.

response 204

No body.

POST/v1/auth/verify-email

Verify the email address

needs a dashboard session; an API key cannot do this

request body

codestring, requiredThe 6-digit code from the email.

response 200

userUser

POST/v1/auth/verify-email/send

Resend the verification code

needs a dashboard session; an API key cannot do this

response 202

No body.

Phone endpoints

Called by the phone app with the token it received at pairing. Listed for anyone writing their own client.

DELETE/v1/device

Unpair this phone

needs the phone's device token

Removes this phone from the account and revokes its token. Message history is kept.

response 204

No body.

GET/v1/device

This phone's record

needs the phone's device token

response 200

deviceDevice

PATCH/v1/device

Change this phone's settings

needs the phone's device token

request body

clear_preferred_simbooleanSet true to fall back to the phone's default SIM.
enabledbooleanA disabled phone receives no new sends.
namestring
preferred_sim_subscription_idintegerSIM to send from when a send names none.
receive_enabledbooleanForward incoming SMS from this phone.
send_delay_secondsintegerPause between consecutive sends.

response 200

deviceDevice

POST/v1/device/heartbeat

Check in

needs the phone's device token

Reports the phone is alive and uploads its state. The response carries the settings the phone should apply.

request body

app_version_codeinteger
app_version_namestring
os_api_levelinteger
os_versionstring
push_tokenstring
simsanyArray of SIM descriptors with subscription_id, carrier, slot, country.
telemetryanyBattery, network, storage, uptime, timezone, locale. Free-form object.

response 200

deviceDevice

POST/v1/device/inbound

Report a received SMS

needs the phone's device token

Stores an incoming message and fans out message.received. Returns 201 when stored, 200 when it was already known.

request body

bodystring, requiredThe text, with concatenated parts already joined.
fingerprintstringHash of sender, body, and timestamp computed on the phone. Repeats are ignored.
received_attimestamp, required
senderstring, required
sim_subscription_idinteger

response 200

insertedbooleanFalse when this message was already stored.
messageMessage

GET/v1/device/messages

This phone's messages

needs the phone's device token

parameters

directionquery"outbound" | "inbound"
cursorquerystring
limitqueryinteger

response 200

dataMessage[]
next_cursorstringPass as cursor to get the next page. Absent on the last page.

POST/v1/device/messages/{id}/status

Report a send outcome

needs the phone's device token

Idempotent. Out-of-order reports never move a message backwards.

parameters

idpath, requiredstringMessage id from the outbox.

request body

attimestampWhen it happened on the phone. Defaults to now.
error_codestring
error_messagestring
status"sent" | "delivered" | "failed", required

response 200

messageMessage

GET/v1/device/outbox

Messages to send

needs the phone's device token

The messages this phone should send now, oldest first. Fetching marks them dispatched. A message stays in the list until the phone reports its outcome, so a phone that lost one gets it again.

parameters

limitqueryintegerAt most this many messages. Default 100.

response 200

POST/v1/device/pair

Pair a phone

Exchanges a pairing code for a device record and a device token. Called by the phone app.

request body

app_version_codeinteger
app_version_namestring
brandstring
build_idstring
codestring, requiredPairing code from the dashboard.
hardware_keystring, requiredStable hash the app derives from the handset, so re-pairing finds the same device.
manufacturerstring
modelstring
namestring
os_api_levelinteger
os_versionstring
push_tokenstring

response 201

deviceDevice
device_tokenstringBearer token for /v1/device endpoints. Shown once.

POST/v1/device/push-token

Register a new push token

needs the phone's device token

request body

tokenstring, required

response 204

No body.

Objects

The shapes that appear in requests and responses above.

APIKey

created_attimestamp, required
expires_attimestamp | null, required
idstring, required
last_used_attimestamp | null, required
namestring, required
prefixstring, required
revoked_attimestamp | null, required
scopesstring[], required
use_countinteger, required

AuthConfigOutputBody

google_sign_inboolean, requiredWhether Continue with Google is available at GET /v1/auth/google/start.
turnstile_site_keystring, requiredSite key for the Cloudflare Turnstile widget, or empty when no bot check is needed.

Batch

bodystring, required
completed_attimestamp | null, required
created_attimestamp, required
delivered_countinteger, required
device_idstring, required
dispatched_countinteger, required
errorstring | null, required
estimated_completion_attimestamp | null, required
failed_countinteger, required
idstring, required
recipient_countinteger, required
recipient_previewstring, required
scheduled_attimestamp | null, required
sent_countinteger, required
statusstring, required
unknown_countinteger, required
updated_attimestamp, required

BatchOutputBody

batchBatch, required
messagesMessage[], required

BatchesOutputBody

dataBatch[], required
next_cursorstring

ChangePasswordInputBody

current_passwordstring, required
new_passwordstring, required

CreateKeyInputBody

expires_attimestampOptional expiry.
namestringLabel shown in the dashboard.
scopesstring[]Any of send, read, devices, webhooks. Defaults to all.

CreateKeyOutputBody

api_keyAPIKey, required
keystring, requiredThe full key. It is shown once and never stored.

CreateWebhookInputBody

eventsstring[], requiredAny of message.received, message.sent, message.delivered, message.failed, message.unknown, device.online, device.offline, ping.
namestring
urlstring, requiredHTTPS endpoint that receives POSTs.

DeliveriesOutputBody

dataDelivery[], required
next_cursorstring

Delivery

abandoned_attimestamp | null, required
attempt_countinteger, required
created_attimestamp, required
delivered_attimestamp | null, required
device_idstring, required
errorstring | null, required
eventstring, required
http_statusinteger | null, required
idstring, required
last_attempt_attimestamp | null, required
message_idstring, required
next_attempt_attimestamp | null, required
payloadany, required
response_excerptstring | null, required
statusstring, required
urlstring, required
webhook_idstring, required

DeliveryOutputBody

deliveryDelivery, required

Device

app_version_codeinteger | null, required
app_version_namestring | null, required
brandstring | null, required
created_attimestamp, required
enabledboolean, required
heartbeat_interval_minutesinteger, required
idstring, required
is_defaultboolean, required
last_heartbeat_attimestamp | null, required
manufacturerstring | null, required
modelstring | null, required
namestring, required
onlineboolean, required
os_api_levelinteger | null, required
os_versionstring | null, required
preferred_sim_subscription_idinteger | null, required
push_token_invalid_reasonstring | null, required
push_token_invalidated_attimestamp | null, required
receive_enabledboolean, required
received_countinteger, required
send_delay_secondsinteger, required
sent_countinteger, required
simsany, required
telemetryany, required
updated_attimestamp, required

DeviceOutputBody

deviceDevice, required

DevicePatchBody

clear_preferred_simbooleanSet true to fall back to the phone's default SIM.
enabledbooleanA disabled phone receives no new sends, and sends already queued for it fail.
heartbeat_interval_minutesinteger
namestring
preferred_sim_subscription_idintegerSIM to send from when a send names none.
receive_enabledbooleanForward incoming SMS from this phone.
send_delay_secondsintegerPause between consecutive sends on the phone.

DevicePatchSelfBody

clear_preferred_simbooleanSet true to fall back to the phone's default SIM.
enabledbooleanA disabled phone receives no new sends.
namestring
preferred_sim_subscription_idintegerSIM to send from when a send names none.
receive_enabledbooleanForward incoming SMS from this phone.
send_delay_secondsintegerPause between consecutive sends.

DevicesOutputBody

dataDevice[], required

FieldError

fieldstringLocation of the problem, for example body.to[0].
messagestring, requiredWhat is wrong with it.

HeartbeatInputBody

app_version_codeinteger
app_version_namestring
os_api_levelinteger
os_versionstring
push_tokenstring
simsanyArray of SIM descriptors with subscription_id, carrier, slot, country.
telemetryanyBattery, network, storage, uptime, timezone, locale. Free-form object.

InboundInputBody

bodystring, requiredThe text, with concatenated parts already joined.
fingerprintstringHash of sender, body, and timestamp computed on the phone. Repeats are ignored.
received_attimestamp, required
senderstring, required
sim_subscription_idinteger

InboundOutputBody

insertedboolean, requiredFalse when this message was already stored.
messageMessage, required

Limits

batch_limitinteger, required
daily_limitinteger, required
device_limitinteger, required
monthly_limitinteger, required
plan_idstring, required
plan_namestring, required

ListKeysOutputBody

dataAPIKey[], required

ListSessionsOutputBody

dataSessionView[], required

LoginInputBody

emailstring, required
passwordstring, required
turnstile_tokenstringCloudflare Turnstile token. Required when GET /v1/auth/config reports a turnstile_site_key.

MeOutputBody

limitsLimits, required
usageUsageView, required
userUser, required

Message

batch_idstring, required
bodystring, required
created_attimestamp, required
delivered_attimestamp | null, required
device_idstring, required
directionstring, required
dispatched_attimestamp | null, required
error_codestring | null, required
error_messagestring | null, required
failed_attimestamp | null, required
idstring, required
received_attimestamp | null, required
recipientstring | null, required
senderstring | null, required
sent_attimestamp | null, required
sim_subscription_idinteger | null, required
statusstring, required
updated_attimestamp, required

MessageOutputBody

messageMessage, required

MessagesOutputBody

dataMessage[], required
next_cursorstringPass as cursor to get the next page. Absent on the last page.

OutboxOutputBody

dataOutboxRow[], required

OutboxRow

batch_idstring, required
bodystring, required
idstring, required
sim_subscription_idinteger | null, required
tostring, required

PairInputBody

app_version_codeinteger
app_version_namestring
brandstring
build_idstring
codestring, requiredPairing code from the dashboard.
hardware_keystring, requiredStable hash the app derives from the handset, so re-pairing finds the same device.
manufacturerstring
modelstring
namestring
os_api_levelinteger
os_versionstring
push_tokenstring

PairOutputBody

deviceDevice, required
device_tokenstring, requiredBearer token for /v1/device endpoints. Shown once.

PairingCodeOutputBody

codestring, requiredType this into the app, or scan pair_url as a QR code.
expires_attimestamp, required
idstring, requiredPoll GET /v1/devices/pairing-codes/{id} to learn when a phone has used the code.
pair_urlstring, requiredDeep link the app understands. Encode it as a QR code.

PairingStatusOutputBody

consumedboolean, requiredTrue once a phone has paired with this code.
deviceDevice, requiredThe phone that used the code, once one has.
expires_attimestamp, required

Plan

activeboolean, required
batch_limitinteger, required
daily_limitinteger, required
device_limitinteger, required
idstring, required
monthly_limitinteger, required
monthly_price_centsinteger, required
namestring, required
yearly_price_centsinteger, required

PlansOutputBody

dataPlan[], required

ProfileInputBody

namestring

PushTokenInputBody

tokenstring, required

RegisterInputBody

emailstring, requiredSign-in email. A verification code is sent to it.
namestringDisplay name.
passwordstring, requiredAt least 10 characters.
turnstile_tokenstringCloudflare Turnstile token. Required when GET /v1/auth/config reports a turnstile_site_key.

RenameKeyInputBody

namestring, required

ResetInputBody

codestring, required
emailstring, required
new_passwordstring, required

ResetRequestInputBody

emailstring, required
turnstile_tokenstringCloudflare Turnstile token. Required when GET /v1/auth/config reports a turnstile_site_key.

SecretOutputBody

secretstring, required

SendInputBody

bodystring, requiredMessage text. Long texts are sent as concatenated SMS.
device_idstringPhone to send from. Defaults to the account's default device, else the most recently online one.
scheduled_attimestampSend later, up to 7 days ahead.
sim_subscription_idintegerSIM to use on a multi-SIM phone. Unknown ids fall back to the phone's preferred SIM.
tostring[], requiredRecipient phone numbers, ideally E.164 such as +14155550123.

SendOutputBody

batchBatch, required
message_idsstring[], requiredOne id per recipient, in the order given after de-duplication.

SessionOutputBody

userUser, required

SessionView

created_attimestamp, requiredWhen it signed in.
currentboolean, requiredTrue for the session making this request.
expires_attimestamp, requiredWhen it ends if it stays idle.
idstring, required
ipstring | null, requiredThe address it signed in from.
last_seen_attimestamp, required
user_agentstring | null, requiredThe browser that signed in, as it described itself.

Stats

devicesinteger, required
receivedinteger, required
sentinteger, required

StatusReportInputBody

attimestampWhen it happened on the phone. Defaults to now.
error_codestring
error_messagestring
status"sent" | "delivered" | "failed", required

UpdateWebhookInputBody

enabledbooleanRe-enabling clears any automatic pause.
eventsstring[]
namestring
urlstring

UsageView

received_this_monthinteger, required
received_todayinteger, required
sent_this_monthinteger, required
sent_todayinteger, required

User

avatar_urlstring | null, required
created_attimestamp, required
deletion_requested_attimestamp | null, required
emailstring, required
email_verified_attimestamp | null, required
google_linkedboolean, required
has_passwordboolean, required
idstring, required
last_login_attimestamp | null, required
namestring | null, required
onboardingany, required
rolestring, required
updated_attimestamp, required

UserOutputBody

userUser, required

VerifyEmailInputBody

codestring, requiredThe 6-digit code from the email.

Webhook

created_attimestamp, required
disabled_reasonstring | null, required
enabledboolean, required
eventsstring[], required
failure_countinteger, required
idstring, required
last_attempt_attimestamp | null, required
last_failure_attimestamp | null, required
last_success_attimestamp | null, required
namestring | null, required
success_countinteger, required
updated_attimestamp, required
urlstring, required

WebhookCreatedOutputBody

secretstring, requiredSigning secret, shown once. Verify X-Simhook-Signature with it.
webhookWebhook, required

WebhookOutputBody

webhookWebhook, required

WebhooksOutputBody

dataWebhook[], required