Kadoink API
A JSON REST API — the same one the Kadoink mobile apps run on. Everything lives under one versioned base URL and speaks bearer-token auth.
Authentication
Sign in with POST /auth/login (or finish the
/auth/register flow). On success you get a
bearer token that starts with kdk_. Send it on every
request:
Tokens are revocable — signing out, changing your password, or
DELETE /auth/sessions invalidate them
server-side. If your account has an email on file, login first returns
{"status":"otp_required", …} and you confirm a code via
/auth/login/verify. Most endpoints also
require a verified mobile number; until then they answer
403 mobile_unverified and you complete verification under
/me/mobile.
Conventions
- Format
- JSON in and out; field names are
snake_case. - Timestamps
- ISO-8601 UTC with a trailing
Z(e.g.2026-06-11T18:00:00Z). - Lists
{"items": […], "has_more": bool}; page with?limit=&offset=or a?before_id=cursor.- Phone numbers
- E.164 (e.g.
+15551234567). Tag names omit the*sigil. - Rate limits
- Sign-in, SMS, and call endpoints are throttled; over budget you get
429with aRetry-Afterheader.
Errors
Every non-2xx response uses one envelope:
{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid.",
"fields": { "email": "That doesn't look like a valid email address." }
}
}
Switch on code (a stable machine string), show
message to people. Common statuses:
401 (missing or invalid token),
403 mobile_unverified,
404 not_found,
409 (conflict),
422 validation_failed,
429 rate_limited.
Quickstart
# 1. Sign in -> token
curl -X POST https://www.kadoink.com/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"you","password":"your-password"}'
# 2. Use the token
curl https://www.kadoink.com/api/v1/home \
-H 'Authorization: Bearer kdk_…'
Endpoints
92 endpoints, all relative to https://www.kadoink.com/api/v1.
Authentication
Get a bearer token, manage sessions, reset a password.
/api/v1/auth/forgot
— Request a password reset
/api/v1/auth/login
— Sign in
/api/v1/auth/login/resend
— Resend sign-in code
/api/v1/auth/login/verify
— Verify sign-in code
/api/v1/auth/logout
— Sign out
/api/v1/auth/magic-link
— Send a magic sign-in link
/api/v1/auth/magic-link/consume
— Consume a magic link
/api/v1/auth/refresh
— Refresh session token
/api/v1/auth/register
— Register
/api/v1/auth/register/resend
— Resend registration code
/api/v1/auth/register/verify
— Verify registration code
/api/v1/auth/reset
— Reset password
/api/v1/auth/sessions
— Sign out everywhere
/api/v1/auth/sessions
— List active sessions
/api/v1/auth/sessions/{session_id}
— Revoke one session
Your account
Profile, mobile verification, IM handles, password, avatar.
/api/v1/me
— Delete your account
/api/v1/me
— Profile + gate state
/api/v1/me
— Update your profile
/api/v1/me/avatar
— Upload an avatar
/api/v1/me/im-identities
— List IM handles
/api/v1/me/im-identities
— Add an IM handle
/api/v1/me/im-identities/{im_id}
— Remove an IM handle
/api/v1/me/mobile
— Your mobile number
/api/v1/me/mobile
— Set your mobile number
/api/v1/me/mobile/codes
— Send a verification code
/api/v1/me/mobile/verify
— Verify your mobile
/api/v1/me/password
— Change password
Home
The whole dashboard in one request.
/api/v1/home
— Dashboard (single round trip)
Inbox
Read, mark, and delete incoming messages + voicemail.
/api/v1/inbox
— List messages
/api/v1/inbox/unread-count
— Unread count
/api/v1/inbox/{message_id}
— Delete a message
/api/v1/inbox/{message_id}
— Mark read / unread
Statuses & feed
Post statuses; read your timeline and your feed.
/api/v1/feed
— Following feed
/api/v1/statuses
— Your statuses
/api/v1/statuses
— Post a status
/api/v1/statuses/{post_id}
— Delete a status
/api/v1/statuses/{post_id}
— Edit a status
Tags
Your *tags, public search, and the follow graph.
/api/v1/follows
— Tags you follow
/api/v1/ktags
— Your tags
/api/v1/ktags
— Create a tag
/api/v1/ktags/search
— Search public tags
/api/v1/ktags/{ktag_id}
— Delete a tag
/api/v1/ktags/{ktag_id}
— Tag detail
/api/v1/ktags/{ktag_id}
— Edit a tag
/api/v1/ktags/{ktag_id}/follow
— Unfollow a tag
/api/v1/ktags/{ktag_id}/follow
— Follow a tag
Contacts
Your address book.
/api/v1/contacts
— List contacts
/api/v1/contacts
— Add a contact
/api/v1/contacts/{contact_id}
— Delete a contact
/api/v1/contacts/{contact_id}
— Contact detail
/api/v1/contacts/{contact_id}
— Edit a contact
Groups
Contact groups and their members.
/api/v1/groups
— List groups
/api/v1/groups
— Create a group
/api/v1/groups/{group_id}
— Delete a group
/api/v1/groups/{group_id}
— Group detail
/api/v1/groups/{group_id}
— Edit a group
/api/v1/groups/{group_id}/members/{contact_id}
— Remove a member
/api/v1/groups/{group_id}/members/{contact_id}
— Add a member
Calls & grid
Live conference calls and the call grid.
/api/v1/calls
— Start a call
/api/v1/calls/active
— End the call
/api/v1/calls/active
— Your active call
/api/v1/calls/active
— Set call privacy
/api/v1/calls/active/participants
— Add a participant
/api/v1/grid
— Your call grid
/api/v1/grid/calls
— End the grid call
/api/v1/grid/calls
— Call the whole grid
/api/v1/grid/members
— Add to the grid
/api/v1/grid/members/{contact_id}
— Remove from the grid
Commands
Run the text-command language; the command reference.
/api/v1/commands
— Run a command
/api/v1/commands/guide
— Command reference
Media
Stream uploaded audio and photos.
/api/v1/files/{file_id}/stream-token
— Refresh a stream URL
/api/v1/files/{id}/stream
— Stream a file
Calendar
Scheduled events.
/api/v1/calendar/events
— List events
/api/v1/calendar/events
— Create an event
/api/v1/calendar/events/{event_id}
— Delete an event
/api/v1/calendar/events/{event_id}
— Edit an event
Widgets
Embeddable widgets for your tags.
/api/v1/widgets
— List widgets
/api/v1/widgets
— Create a widget
/api/v1/widgets/{widget_id}
— Delete a widget
/api/v1/widgets/{widget_id}
— Edit a widget
/api/v1/widgets/{widget_id}/embed
— Embed snippet
Invites
Invite people to Kadoink.
/api/v1/invites
— Send an invite
/api/v1/invites/{invite_id}
— Revoke an invite
/api/v1/me/invites
— Your invites
Scheduled messages
List and cancel queued texts and calls.
/api/v1/scheduled-jobs
— List scheduled messages
/api/v1/scheduled-jobs/{job_id}
— Cancel a scheduled message
Billing
Subscription tier, entitlements, and checkout.
/api/v1/billing/checkout
— Start Plus checkout
/api/v1/billing/entitlements
— Plan limits
/api/v1/billing/subscription
— Your subscription
Public profiles
Public profile + follower data, and abuse reports.
/api/v1/abuse-reports
— Report abuse
/api/v1/ktags/{ktag_id}/followers
— A tag's followers
/api/v1/profiles/{ktag}
— A public profile
Building something with this? Say hi from the contact page.