Quickstart
From an API key to a testimonial you can read through the API, in about five minutes. You will work in test mode throughout: a sandbox of your organisation where nothing touches your live testimonials, brands or links.
You need an Akteora account on a plan with API access (Core or Plus), curl, and a browser.
1. Make a test key (1 minute)
In the dashboard, open Developers → API keys → Create key:
- Name:
Quickstart - Mode: Test
- Scopes: Brands and widgets → Read · Collect links → Write · Testimonials → Read
Copy the key — it starts rk_test_ and is shown once — and keep it in your shell:
export AKTEORA_API_KEY=rk_test_…
2. Find your brand (30 seconds)
Every request carries the key as a bearer token:
curl https://api.akteora.com/v1/brands \
-H "Authorization: Bearer $AKTEORA_API_KEY"
{
"data": [
{
"id": "brd_01K5C0A2B4C6D8E0F2G4H6J8K0",
"name": "Northwind Coffee",
"slug": "default",
"is_default": true,
"submission_count": 0,
"…": "…"
}
],
"next_cursor": null
}
Test mode starts with one brand of its own. Keep its id:
export BRAND_ID=brd_01K5C0A2B4C6D8E0F2G4H6J8K0
3. Make a collect link (1 minute)
A collect link is what you send a customer. It opens a page where they record or write a testimonial — no account, nothing to install.
curl https://api.akteora.com/v1/brands/$BRAND_ID/links \
-H "Authorization: Bearer $AKTEORA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: quickstart-link-1" \
-d '{
"title": "How was your first month?",
"prompts": [
{ "id": "p1", "text": "What problem were you trying to solve?", "max_seconds": 90 }
],
"consent_text": "I agree that my testimonial may be published on this company’s website.",
"consent_version": "2026-09-01"
}'
{
"id": "lnk_01K5C0D8E0F2G4H6J8K0M2N4P6",
"url": "https://c.akteora.com/k7m2p9qx4t",
"title": "How was your first month?",
"is_active": true,
"…": "…"
}
Idempotency-Key makes the request safe to retry: sent twice, it still makes one link
(idempotency).
4. Be your own customer (1–2 minutes)
Open the link's url in a browser — your phone works best. Choose Write it, type a sentence or
two (at least 20 characters), tick the consent box, and send. Recording a short video works too; it
takes a few seconds more to be ready.
5. Read it back (30 seconds)
curl "https://api.akteora.com/v1/submissions?brand_id=$BRAND_ID" \
-H "Authorization: Bearer $AKTEORA_API_KEY"
{
"data": [
{
"id": "sub_01K5C0H4J6K8M0N2P4Q6R8S0T2",
"kind": "text",
"status": "ready",
"respondent_name": "You",
"is_approved": false,
"created_at": "2026-09-15T12:04:11.000Z",
"…": "…"
}
],
"next_cursor": null
}
That is a testimonial, collected and read through the API. GET /v1/submissions/{id} has its
words, consent and media.
Where next
- Hear about new testimonials as they arrive instead of asking: add a
webhook. Give your key the
webhooks:managescope, or add the endpoint in the dashboard. - Approve and publish with the
submissions:moderatescope:POST /v1/submissions/{id}/approve. - Go live: make an
rk_live_key with the same scopes. Nothing else changes — same routes, same shapes. Test mode's data stays where it is (test mode). - Use TypeScript? The
@akteora/sdkclient types every route and event:
import { createAkteoraClient, unwrap } from '@akteora/sdk'
const akteora = createAkteoraClient({
baseUrl: 'https://api.akteora.com',
apiKey: process.env.AKTEORA_API_KEY,
})
const { data } = await unwrap(akteora.GET('/v1/submissions', { params: { query: { limit: 10 } } }))
Every route, with a runnable example, is in the API reference.