Getting started
From a new account to your first API call in about ten minutes.
1. Get your keys
- Sign in or sign up at console.intersink.com, then create a business and a channel for your app.
- In your channel, open Developers › API keys and choose Enable API.
- Under App keys, create a test key. It starts with
kk_app_test_and is safe to put in a web page or a phone app. - Under Server keys, create a test key with the scopes you need. It starts with
kk_test_. It is shown once, so copy it to your server’s secrets right away.
Test keys work as soon as the API is on. They read your channel’s real data and refuse every write with 403, so you can build without changing anything. Live keys work once your business is verified. Keys and test mode explains the difference.
2. Check the API answers
The API answers at https://api.intersink.com/v1. This is the preview host: data on it can be reset during testing, and payments run in demo mode, so no money moves.
No key is needed for the health check:
curl https://api.intersink.com/v1/healthThen ask which channel your app key belongs to:
curl https://api.intersink.com/v1/channel/key-info \
-H "X-App-Key: kk_app_test_…"The answer is your channel’s public profile: id, title, branding, the installed apps and the sign-up mode. A server key has its own check, which also returns the key’s mode and scopes:
curl https://api.intersink.com/v1/channel/me \
-H "Authorization: Bearer kk_test_…"3. Install the SDK
@kodkila/sdk is a typed client for every route, generated from the API’s OpenAPI document. It isn’t on the npm registry yet, so install it from this site:
npm install https://kodkila.com/sdk/kodkila-sdk-0.1.0.tgzThe package is TypeScript source with no runtime dependencies, compiled by your bundler as part of your app (in Next.js, add it to transpilePackages). For a plain Node script, run it with tsx and set "type": "module" in your package.json. See SDK for the details.
4. Make your first call
import { createKodkilaClient, ApiError } from "@kodkila/sdk";
const api = createKodkilaClient({
baseUrl: "https://api.intersink.com/v1",
headers: { "X-App-Key": process.env.KODKILA_APP_KEY! },
});
try {
const channel = await api.get("/api/channel/key-info");
console.log(channel.title, channel.signup);
} catch (e) {
if (e instanceof ApiError) console.error(e.statusCode, e.code, e.message);
else throw e;
}KODKILA_APP_KEY=kk_app_test_… npx tsx first-call.tsThe SDK takes paths exactly as they appear in the OpenAPI document, which keeps the /api prefix. With a base URL ending in /v1 it drops that prefix for you, so /api/channel/key-info calls https://api.intersink.com/v1/channel/key-info. It returns the payload from data and throws ApiError on any error answer.
Before you go further
- Keep server keys on your server. Never put a
kk_test_orkk_live_key in a browser bundle, an app or a repository. - Browser calls are accepted only from your channel’s domains and allowed origins, plus localhost for test keys. Add origins under Settings › Allowed origins in the console.
- The API is a preview: routes can change, and data on the preview host can be reset.
Next
- Sign users in with email codes or passkeys
- See what you can build
- Browse the API reference