Settings you can see
Every setting on one page. The prompt X-ray shows the exact prompt the model receives, block by block.
- Dialect
- Saudi
- Tone
- Friendly
- History window
- Last 12 messages
- Business hours
- 10 am to 11 pm, Friday from 4 pm
Set up your agent once: its identity, dialect, instructions and what it must leave to your team. Then use the same settings everywhere: chat sessions, one-shot answers, the API, your website widget and the OpenAI SDK. WhatsApp is coming soon.
The free plan includes 100 AI conversations a month. No card needed.
Nada assistant
Recorded example
Customer:How much is the oud oil?
Agent:Our Royal Oud oil (12 ml) is SAR 450, and delivery is free on orders over SAR 200. Shall I add it to your order?
Customer:My order arrived and the bottle is broken!
Agent:We’re so sorry about that. We’ve passed your order to a member of our team, who will follow up with you directly.
Handed to your team
The conversation is now in your Handoff Desk. The agent stays quiet until your team hands it back.
Its rules, knowledge and escalation reply apply the same way wherever you call it.
One-shot ask
A question in, an answer out. No session.
POST /v1/agents/{agent}/askChat sessions
The full conversation history, under our ID or yours.
POST /v1/sessions/order-8812/messagesAn API for everything
Agents, settings, knowledge, keys and usage. Our own dashboard is built on it.
PATCH /v1/agents/{agent}Website widget
One line in your page, with right-to-left Arabic done properly.
<script src="…/widget/v1.js">OpenAI SDK
Change the base URL and keep the rest of your code.
base_url=".../openai/v1"WhatsAppSoon
The same agent on your WhatsApp Business number.
A secret key and an HTTP request is all it takes. Use your order or ticket number as the session ID, and we link it to ours.
Idempotency-Key header.stream.sess_ ID or by yours, in any URL.API=https://api.k-agent.kerneltics.com/v1
KEY=kt_sk_live_…
# One question, one answer
curl $API/agents/agt_01J…/ask \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"input":"How much is delivery?"}'
# → {"object":"run","status":"completed","outcome":"answered",
# "output_text":"Delivery is SAR 25, or free over SAR 200.",
# "usage":{"units":0.25,…}}
# A session under your own ID: created once, then resumed
curl $API/sessions -H "Authorization: Bearer $KEY" \
-H "Idempotency-Key: 6f1c…" \
-d '{"agent":"agt_01J…","external_id":"order-8812",
"input":"Where is my order?"}'
# → 201 {"session":{"id":"sess_01J…","external_id":"order-8812"},
# "created":true,"run":{…}}
# Later turns use your ID in the URL, streamed over SSE
curl $API/sessions/order-8812/messages \
-H "Authorization: Bearer $KEY" \
-d '{"input":"Can I change the delivery address?","stream":true}'
# run.created … message.delta … run.completedconst API = "https://api.k-agent.kerneltics.com/v1";
const headers = {
Authorization: `Bearer ${process.env.KAGENT_SECRET_KEY}`,
"Content-Type": "application/json",
};
// One question, one answer
const run = await fetch(`${API}/agents/agt_01J…/ask`, {
method: "POST",
headers,
body: JSON.stringify({ input: "How much is delivery?" }),
}).then((res) => res.json());
console.log(run.output_text); // Delivery is SAR 25, or free over SAR 200.
// A session under your own ID: created once, then resumed
const { session, created } = await fetch(`${API}/sessions`, {
method: "POST",
headers: { ...headers, "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify({
agent: "agt_01J…",
external_id: "order-8812",
input: "Where is my order?",
}),
}).then((res) => res.json());
// Later turns use your ID in the URL
await fetch(`${API}/sessions/order-8812/messages`, {
method: "POST",
headers,
body: JSON.stringify({ input: "Can I change the delivery address?" }),
});import os, uuid, requests
API = "https://api.k-agent.kerneltics.com/v1"
headers = {"Authorization": f"Bearer {os.environ['KAGENT_SECRET_KEY']}"}
# One question, one answer
run = requests.post(
f"{API}/agents/agt_01J…/ask",
headers=headers,
json={"input": "How much is delivery?"},
).json()
print(run["output_text"]) # Delivery is SAR 25, or free over SAR 200.
# A session under your own ID: created once, then resumed
res = requests.post(
f"{API}/sessions",
headers={**headers, "Idempotency-Key": str(uuid.uuid4())},
json={
"agent": "agt_01J…",
"external_id": "order-8812",
"input": "Where is my order?",
},
).json()
print(res["created"], res["session"]["id"]) # True sess_01J…
# Later turns use your ID in the URL
requests.post(
f"{API}/sessions/order-8812/messages",
headers=headers,
json={"input": "Can I change the delivery address?"},
)Values like agt_01J… and kt_sk_live_… are placeholders. Use your own from the dashboard.
Six things that keep the agent clear to you and safe for your customers.
Every setting on one page. The prompt X-ray shows the exact prompt the model receives, block by block.
List what the agent must never handle itself. When it hands off, your customer gets your reply word for word and the conversation goes to your team. If the model provider fails, nobody is left without a reply.
Never handle
Escalation reply
We’re so sorry about that. We’ve passed your order to a member of our team, who will follow up with you directly.
Saudi, Gulf, Modern Standard Arabic or English, or let it match the customer. Tone: friendly, formal or brief.
Use your order or ticket number as the session ID. We link it to ours, and both work in every call.
order-8812sess_01j9f3k8q2…Both reach the same session
GET /v1/sessions/order-8812Edit a draft, test it, then publish. Every version is kept, and you can restore any earlier one when you need to.
One unit, the AI conversation: one customer over 24 hours, up to 50 replies. Handoffs and test chats are free.
= one AI conversation
Start from a template, write your instructions, add your price list or FAQs and choose what goes to your team.
Chat with the draft in the test panel, see every tool call and the full prompt, then publish version 1.
Call the API, open sessions with your own IDs, add the widget to your site or point the OpenAI SDK at it.
Didn’t find your answer? Write to info@kerneltics.com
Yes. Send an external_id (such as your order number, order-8812) when you create the session, and we link it to our sess_ ID. Both work in every URL, and sending the same ID again resumes that session instead of creating a new one. Keep phone numbers and emails out of IDs; they belong in the end user’s details.
It hands the conversation to your team instead of guessing. You decide what it never handles itself and the exact reply the customer sees when it hands off. The conversation lands in your Handoff Desk, and the agent stays quiet until your team hands it back. If the model provider fails, your customer still gets your fallback message and the conversation is handed off, so nobody is left without a reply.
Models from OpenAI, Anthropic and DeepSeek through our account, in three tiers: Standard, such as gpt-6-luna and deepseek-flash; Advanced, such as Claude Haiku 4.5 and deepseek-v4-pro; and Premium, Claude Sonnet 5.5. Gemini models are coming soon. You can also connect your own key from OpenAI, Anthropic, DeepSeek or any OpenAI-compatible provider and pay us only the platform fee.
Not yet, and we would rather be clear about it. Your settings and your customers’ conversations are stored in our database on our server. To write a reply, the conversation text is sent to the model provider you choose, which processes it outside the Kingdom under its contract and data-processing terms. We never use your data to train models. In-Kingdom data residency is on our roadmap.
Not to set up the agent: the dashboard has templates, every setting is on one page, and you can test and publish without code. Adding the widget to your site is one line of HTML. You will want a developer when you connect your own systems through the API or HTTP tools.
An AI conversation is one customer with one agent, within 24 hours of the agent’s first reply, up to 50 replies. A conversation with a single reply counts as a quarter. Handoffs, model provider errors and the test panel don’t count. Advanced models count 3 and Premium models 6.
100 AI conversations a month, every setting, and no card needed.