curl https://app.tryafk.com/api/v1/ask \
-H "Authorization: Bearer $KIP_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "What is the status of the Oklo deal?", "mentions": ["pranav@yourcompany.com"]}'
const res = await fetch("https://app.tryafk.com/api/v1/ask", {
method: "POST",
headers: { authorization: `Bearer ${process.env.KIP_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ question: "Who is talking to Firefly?", scope: "company" }),
});
const { answer, sources } = await res.json();
import os, requests
r = requests.post(
"https://app.tryafk.com/api/v1/ask",
headers={"Authorization": f"Bearer {os.environ['KIP_KEY']}"},
json={"question": "What did I promise Oklo?"},
timeout=300,
)
print(r.json()["answer"])
{
"answer": "<string>",
"sources": [
"<string>"
],
"steps": [
{}
]
}API reference
Ask
Ask your Kip, a teammate’s Kip, or the company.
POST
/
api
/
v1
/
ask
curl https://app.tryafk.com/api/v1/ask \
-H "Authorization: Bearer $KIP_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "What is the status of the Oklo deal?", "mentions": ["pranav@yourcompany.com"]}'
const res = await fetch("https://app.tryafk.com/api/v1/ask", {
method: "POST",
headers: { authorization: `Bearer ${process.env.KIP_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ question: "Who is talking to Firefly?", scope: "company" }),
});
const { answer, sources } = await res.json();
import os, requests
r = requests.post(
"https://app.tryafk.com/api/v1/ask",
headers={"Authorization": f"Bearer {os.environ['KIP_KEY']}"},
json={"question": "What did I promise Oklo?"},
timeout=300,
)
print(r.json()["answer"])
{
"answer": "<string>",
"sources": [
"<string>"
],
"steps": [
{}
]
}Authorization
Authorization: Bearer kipm_..., your personal key from API keys, or a key a partner got from Create a user. The Ask is made as you: your plan is charged one credit, your access applies, and your Claude does the work.
Body
string
required
The question, up to 4,000 characters.
string[]
Teammates to ask, by work email (up to 20). Only their Kips are asked, and each answers from its owner’s brain. Same as tagging them in Kip.
"personal" | "company"
default:"personal"
company asks the company: the company brain first, then each teammate’s Kip if needed. Needs a company account (Google Workspace sign-in).{ role: 'user' | 'assistant', content: string }[]
Earlier turns of the conversation, oldest first, up to 20. Kip keeps no conversation state for API calls; send the turns you want it to see.
{ name, type, data }[]
Files, as base64
data. Audio is transcribed before Kip reads it.Response
string
Kip’s answer, in Markdown.
string[]
What the answer came from: brain pages and source labels.
object[]
The research Kip did:
id, app (the source app, such as gmail), label, detail, state (run, ok, err), and for a team question, team with each teammate’s progress.Accept: application/x-ndjson the response streams {"type":"step"} lines, then one {"type":"answer", ...} line, or {"type":"error","code":"..."} if it fails after starting.
curl https://app.tryafk.com/api/v1/ask \
-H "Authorization: Bearer $KIP_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "What is the status of the Oklo deal?", "mentions": ["pranav@yourcompany.com"]}'
const res = await fetch("https://app.tryafk.com/api/v1/ask", {
method: "POST",
headers: { authorization: `Bearer ${process.env.KIP_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ question: "Who is talking to Firefly?", scope: "company" }),
});
const { answer, sources } = await res.json();
import os, requests
r = requests.post(
"https://app.tryafk.com/api/v1/ask",
headers={"Authorization": f"Bearer {os.environ['KIP_KEY']}"},
json={"question": "What did I promise Oklo?"},
timeout=300,
)
print(r.json()["answer"])

