Public APIv1

ASKTC API Reference

Build live Q&A, audience engagement, and event automation into your product. The ASKTC API is REST-based, returns JSON, and uses API key authentication.

Base URLhttps://asktc.live/api/v1

Overview

API Key Auth

All requests require a Bearer token in the Authorization header.

REST + JSON

Standard HTTP methods. All responses are JSON.

AI-powered

Create events from plain English, cluster questions, and analyse sentiment.

Real-time ready

Pair with ASKTC's PartyKit layer for live audience data.

Authentication

All API requests must include your API key as a Bearer token in the Authorization header. API keys start with aktc_.

bash
curl https://asktc.live/api/v1/events \
  -H "Authorization: Bearer aktc_your_api_key_here"
Get your API key from the ASKTC dashboard under Settings → API Keys.

Rate Limits

Rate limits are enforced per API key using a sliding window. When exceeded, the API returns 429 Too Many Requests.

PlanPer minutePer day
Pro30010,000
Enterprise1,000Unlimited
AI endpoints10 (all plans)

Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Events

GET
/events

List all events owned by the authenticated user.

POST
/events

Create a new event.

titlestringrequired

The event title. Max 100 characters.

event_codestring

Custom join code (4–16 chars, A–Z 0–9). Auto-generated if omitted.

session_modeenum

One of panel, open_floor, thread. Defaults to panel.

descriptionstring

Optional event description. Max 500 characters.

bash
curl -X POST https://asktc.live/api/v1/events \
  -H "Authorization: Bearer aktc_..." \
  -H "Content-Type: application/json" \
  -d '{"title": "DevDay Lagos 2026", "session_mode": "panel", "event_code": "DEVDAY26"}'
PATCH
/events/:code

Update an existing event's title, description, or status.

DELETE
/events/:code

Permanently delete an event and all associated data.

PATCH
/events/:code/schedule

Set or clear the scheduled start time for an event.

scheduled_atISO 8601 string

Set to a future datetime to schedule, or null to clear.

Questions

GET
/events/:code/questions

Fetch all questions for an event, ordered by vote count.

PATCH
/events/:code/questions/:id

Moderate a question — approve, reject, mark answered, or push to screen.

statusenumrequired

One of pending, approved, on_screen, answered, rejected.

GET
/events/:code/questions/clusters

AI-powered — group semantically similar questions into clusters. Useful for surfacing themes across hundreds of submissions.

Panelists

GET
/events/:code/panelists

List all panelists for an event.

POST
/events/:code/panelists

Add a panelist to an event.

namestringrequired

Panelist full name.

titlestring

Job title or role.

topicsstring

Comma-separated topics this panelist covers.

DELETE
/events/:code/panelists/:id

Remove a panelist from an event.

Moderators

GET
/events/:code/moderators

List all co-moderators for an event.

POST
/events/:code/moderators

Invite a co-moderator by user ID.

user_idstringrequired

The ASKTC user ID of the co-moderator.

DELETE
/events/:code/moderators/:id

Remove a co-moderator from an event.

Breakout Rooms

GET
/events/:code/breakout

List all breakout rooms for an event.

POST
/events/:code/breakout

Create a breakout room.

namestringrequired

Room name.

capacitynumber

Max participants. Defaults to unlimited.

PATCH
/events/:code/breakout/:id

Update a breakout room's name or capacity.

DELETE
/events/:code/breakout/:id

Delete a breakout room.

AI

AI endpoints are rate-limited to 10 requests per minute across all plans.
POST
/ai/create-event

Create a fully structured event from a natural language prompt. AI picks the right session mode, extracts named panelists, and generates everything in one call.

promptstringrequired

Plain English description of your event. Max 1000 characters.

event_codestring

Override the AI's suggested join code.

dry_runboolean

If true, returns the AI plan without creating anything. Use to preview before committing.

bash
curl -X POST https://asktc.live/api/v1/ai/create-event \
  -H "Authorization: Bearer aktc_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A fintech panel at Lagos Tech Week with Ada Obi covering regulation and Emeka Nwosu on infrastructure",
    "dry_run": false
  }'
json
{
  "event": {
    "id": "evt_...",
    "title": "Lagos Tech Week — Fintech Panel",
    "event_code": "LAGOSTECHWK",
    "session_mode": "panel",
    "status": "waiting",
    "created_at": "2026-08-02T10:00:00Z"
  },
  "panelists": [
    { "id": "p_...", "name": "Ada Obi",    "title": null, "topics": "regulation" },
    { "id": "p_...", "name": "Emeka Nwosu","title": null, "topics": "infrastructure" }
  ],
  "plan": {
    "reasoning": "Named panelists detected; panel mode selected.",
    "suggested_event_code": "LAGOSTECHWK"
  },
  "dry_run": false
}

Reports & Analytics

GET
/events/:code/report

Full event summary — questions, polls, answer counts, top voted, participation stats.

POST
/events/:code/report/send

Email the event report to the host and any specified recipients.

emailsstring[]

Additional recipient emails beyond the host.

GET
/events/:code/sentiment

Aggregated sentiment breakdown across all audience questions — positive, neutral, negative percentages with top themes.

Errors

All errors return a JSON object with an error field.

StatusMeaning
400Bad Request — missing or invalid parameters.
401Unauthorized — missing or invalid API key.
403Forbidden — your plan doesn't support this endpoint.
404Not Found — event or resource doesn't exist.
409Conflict — event code already taken.
429Too Many Requests — rate limit exceeded.
500Internal Server Error — something went wrong on our end.
502Bad Gateway — AI service unavailable.
json
{
  "error": "Event code \"DEVDAY26\" is already taken. Pass a custom event_code or omit it to auto-generate."
}

ASKTC API v1 · Built with 🧡 in Nigeria