Preview. This site is still being built. Features, prices and terms may change, and nothing here is a binding offer. Read the preview notice

Preview. Still being built; nothing here is a binding offer. Details

What you can build

Everything here runs on the same routes the Intersink console uses. Each part works on its own, so take only what your app needs.

Channel apps and storefronts

Your app sends the channel’s publishable app key, and Kodkila answers with that channel’s data: its name and branding, public settings, home page sections, menus, pages and products. The server prices orders and checks stock, so your app only renders what the API returns.

A site on its own domain keeps the session in httpOnly cookies on that domain through a small same-origin route, and browser code holds only the app key. Browser calls are accepted from the channel’s own domains and listed origins.

RouteWhat it does
GET /channel/key-infoThe channel an app key belongs to, with branding and installed apps
GET /channel/app-configPublic settings an app needs at start
GET /cms/surfaces/{surface}A published home surface: banners, shortcuts and sections
GET /profiles/me/data/{ns}Per-user app data, such as a cart or settings

Reference: Channel management, CMS public, Profile data

Sign-in with codes and passkeys

A user asks for a 6-digit code, which is valid for 15 minutes, and exchanges it for a session. Web sign-in sets httpOnly cookies; apps get tokens in the body and refresh them. Accounts with two-step sign-in finish with an authenticator code, an emailed code or a passkey.

Passkeys work per domain: a passkey made on your site works on that site. Users can also sign in with a passkey alone.

RouteWhat it does
POST /auth/request-otpSend a sign-in code
POST /auth/login-appExchange the code for tokens (apps and servers)
POST /auth/passkey/login/optionsStart a passkey sign-in
POST /auth/refresh-appGet new tokens with the refresh token

Reference: Authentication and profile, Sign-in methods

Products and orders

List and search published products, check a coupon against a cart, and place an order with an idempotency key so a retry never charges twice. Sellers move orders through their states, and webhooks tell your server when an order is created or changes.

On the preview host, payments run in demo mode: a hosted demo page stands in for the card step and no money moves.

RouteWhat it does
GET /productsPublished products of a channel, paged
POST /coupons/channels/{channelId}/validateWhat a code takes off a cart
POST /ordersPlace an order
PATCH /orders/{id}/statusMove an order along (seller)

Reference: Products, Orders, Coupons, Payments (demo)

CRM and public forms

The CRM keeps contacts, pipelines with ordered stages, deals and an activity timeline, with CSV import and export. A contact or enquiry form on your site can post straight from the browser with the app key: you define the form once on the channel, and each submission becomes a lead or a job application.

Public forms need a Cloudflare Turnstile check, with both keys stored in the channel’s settings.

RouteWhat it does
PUT /forms/channels/{channelId}/definitions/{formKey}Define a form (channel managers)
POST /public/forms/{formKey}/submitSend a form from the browser with the app key
POST /crm/public/{channelId}/leadsAdd a lead from your own server or form
GET /crm/deals/boardDeals by stage

Reference: CRM, Browser forms, Public job applications

Media

Upload a source video and get adaptive HLS and DASH streams with a poster, thumbnails and subtitles. Large files go up in resumable uploads, and playback links are signed. Public videos play with the app key; private ones need the owner’s session or a server key with the media scopes.

Ordinary files, such as images and documents, go through Drive uploads.

RouteWhat it does
POST /media/v1/assetsCreate a video
POST /media/v1/uploadsStart a resumable upload
GET /media/v1/assets/{id}/playbackSigned playback links
POST /drive/files/uploadUpload a file

Reference: Media, Drive

Realtime and push

Open one Server-Sent Events stream per tab or app session and the API pushes changes as they happen, such as new notifications. Presence rooms share live state between people in the same place, like cursors or players, without storing it.

Register a device’s Expo push token and the user’s notifications also arrive as push messages.

RouteWhat it does
GET /realtime/streamThe event stream (signed in)
GET /presence/streamJoin presence rooms
POST /notifications/push-tokenRegister a push token
GET /notificationsThe user’s notifications, newest first

Reference: Realtime, Presence, Notifications

App updates server

Kodkila serves Expo’s open Updates protocol (v1). Every manifest is signed with your channel’s key and the app refuses anything else. Roll an update out to a share of devices, pause it, or send apps back to their store build.

A small command-line tool exports your app, uploads only new files and publishes the update. Native changes still need a store build.

RouteWhat it does
GET /updates/{channelId}/manifestThe signed manifest an app asks for
POST /updates/channels/{channelId}Publish an update
PATCH /updates/channels/{channelId}/{id}Change the rollout
GET /updates/cli.mjsThe publishing tool

Reference: App updates

Webhooks

Add an HTTPS endpoint and choose events. Each delivery is signed with HMAC-SHA256, retried for up to about 15 hours, and listed in a delivery log you can replay from.

RouteWhat it does
POST /developer/channels/{channelId}/webhooksAdd an endpoint
POST /developer/channels/{channelId}/webhooks/{id}/testSend a test ping

Reference: Developer

Search and feature flags

Search your channel’s published products with an app key, using a safe subset of the OpenSearch query language for filters, sorting and facets. Channels can also keep their own indexes.

Feature flags let you ship a feature as internal, beta, coming soon or generally available, with a kill switch. The API enforces them, so a hidden feature stays closed even to direct calls.

RouteWhat it does
POST /search/v1/indices/{name}/searchSearch an index
GET /features/resolveThe flags one person gets

Reference: Search, Features

Paths are relative to https://api.intersink.com/v1.