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
167 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
/api/v1/auth/username-available
— Username available
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)
/api/v1/home/group-chat
— Home group chat
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/replies/{reply_id}
— Reply delete
/api/v1/statuses/{post_id}
— Delete a status
/api/v1/statuses/{post_id}
— Edit a status
/api/v1/statuses/{post_id}/replies
— Reply list
/api/v1/statuses/{post_id}/replies
— Reply create
Tags
Your *tags, public search, and the follow graph.
/api/v1/follow-requests
— List incoming follow requests
/api/v1/follow-requests/count
— Follow requests count
/api/v1/follow-requests/outgoing
— List outgoing follow requests
/api/v1/follow-requests/{request_id}
— Act on follow request
/api/v1/followers
— My followers
/api/v1/followers/{follower_user_id}
— Remove my follower
/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
/api/v1/ktags/{ktag_id}/media
— Ktag add media
/api/v1/ktags/{ktag_id}/media/{file_id}
— Ktag remove media
Contacts
Your address book.
/api/v1/contacts
— List contacts
/api/v1/contacts
— Add a contact
/api/v1/contacts/import
— Import commit
/api/v1/contacts/import/preview
— Import preview
/api/v1/contacts/imports
— Imports list
/api/v1/contacts/imports/{batch_id}/rollback
— Imports rollback
/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/group-invites/{invite_id}/accept
— Group invite accept
/api/v1/group-invites/{invite_id}/decline
— Group invite decline
/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
/api/v1/groups/{group_id}/widgets
— Group widgets list
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/bridge-phone
— Add bridge phone
/api/v1/calls/active/participants
— Add a participant
/api/v1/calls/{join_code}/call-me
— Call me
/api/v1/calls/{join_code}/chat
— Call chat scrollback
/api/v1/calls/{join_code}/chat
— Call chat post
/api/v1/calls/{join_code}/chat/media
— Call chat post media
/api/v1/calls/{join_code}/chat/typing
— Call chat typing
/api/v1/calls/{join_code}/sfu-grant
— Sfu grant
/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
/api/v1/commands/voice
— Transcribe command
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
/api/v1/recordings
— List recordings
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
/api/v1/calendar/events/{event_id}/exdates
— Calendar event add exdate
/api/v1/calendar/events/{event_id}/share
— Calendar event share revoke
/api/v1/calendar/events/{event_id}/share
— Calendar event share
/api/v1/calendar/feed
— Calendar feed revoke
/api/v1/calendar/feed
— Calendar feed get
/api/v1/calendar/feed/regenerate
— Calendar feed regenerate
/api/v1/calendar/sync
— Calendar sync
/api/v1/calendar/sync/ack
— Calendar sync ack
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
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
/api/v1/profiles/{ktag}/live
— Public profile live
Location sharing
The opt-in live people-map, area browse, and public share links.
/api/v1/location/config
— Map config (Mapbox token)
/api/v1/location/discover
— Public accounts near you
/api/v1/location/links
— Your live share links
/api/v1/location/links
— Create a live share link
/api/v1/location/links/{link_id}
— Revoke a share link
/api/v1/location/people
— People on the map
/api/v1/location/report
— Report your position
/api/v1/location/settings
— Your sharing settings
/api/v1/location/settings
— Update sharing settings
Blocks
/api/v1/blocks
— List blocks
/api/v1/blocks
— Create block
/api/v1/blocks/{blocked_user_id}
— Delete block
Call history
/api/v1/call-history
— Call history
/api/v1/call-history/{conference_id}/chat
— Call transcript
Comments
/api/v1/profiles/{ktag}/comments
— List comments
/api/v1/profiles/{ktag}/comments
— Post comment
/api/v1/profiles/{ktag}/comments/{comment_id}
— Delete comment
Dm
/api/v1/dm/threads
— Dm threads
/api/v1/dm/threads
— Dm open
/api/v1/dm/threads/{thread_id}
— Dm thread get
/api/v1/dm/threads/{thread_id}/accept
— Dm accept
/api/v1/dm/threads/{thread_id}/chat
— Dm chat list
/api/v1/dm/threads/{thread_id}/chat
— Dm chat post
/api/v1/dm/threads/{thread_id}/chat/{message_id}
— Dm chat delete
/api/v1/dm/threads/{thread_id}/decline
— Dm decline
/api/v1/dm/unread-count
— Dm unread count
Mini chat
/api/v1/groups/{group_id}/chat
— Group chat list
/api/v1/groups/{group_id}/chat
— Group chat post
/api/v1/groups/{group_id}/chat/{message_id}
— Group chat delete
/api/v1/widgets/{widget_id}/chat
— Widget chat list
/api/v1/widgets/{widget_id}/chat
— Widget chat post
/api/v1/widgets/{widget_id}/chat/{message_id}
— Widget chat delete
Notifications
/api/v1/notifications
— Notifications list
/api/v1/notifications/read-all
— Notifications read all
/api/v1/notifications/unread-count
— Notifications unread count
/api/v1/notifications/{note_id}
— Notifications delete
/api/v1/notifications/{note_id}
— Notifications update
Push
/api/v1/push-token
— Register push token
Realtime
/api/v1/realtime/grant
— Realtime grant
Videomail
/api/v1/videomail/{handle}
— Videomail send
Building something with this? Say hi from the contact page.