Akteora API docs

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:

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

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

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.