Bantefa

Bantefa for developers

Send us the audio of a meeting while it happens. Get a live transcript as it goes, and the full transcript, notes and deadlines when it ends.

What it does

  • A live transcript while the meeting runs, about half a minute to a minute and a half behind the talk
  • The whole transcript when it ends, every line with its time
  • Notes and deadlines if you ask for them: the main points in clear sections, and every date someone gives
  • A signed webhook when a recording is ready, so you don't have to keep asking
  • The same engine that writes the class notes in the Bantefa app

Good to know first

  • No speaker names. The transcript says what was said, not who said it.
  • Live means close behind, not instant. Lines arrive 30 to 90 seconds after they're spoken, so it's a running transcript, not captions.
  • You ask your users first. Get the consent of everyone you record, as Nigeria's data protection law expects, and tell them a transcript is made.
  • Up to 2 hours a recording. After 2 hours of audio a recording takes no more, and you finish it to get the transcript.
  • We don't keep it long. Audio is deleted 7 days after its transcript is ready, and the transcript and notes 30 days after that. Save your own copy, or delete a recording sooner yourself.

Pricing

Transcript

₦10 a minute

Live lines, then the full transcript with times.

With notes

₦15 a minute

The transcript, plus notes and deadlines when it ends.

  • Billed by the second, from the length of the audio itself
  • Every new key starts with ₦200 of credit to try it: about 20 minutes of transcripts
  • Prepaid in naira. Top up through Paystack by card, transfer or USSD, from ₦5,000
  • More for more: 10% extra credit on top-ups from ₦50,000, and 20% from ₦200,000
  • When credit runs out, new recordings stop. Nothing you've sent is lost: it waits, and finishes by itself once you top up

Recording a lot every month? Write to us about a custom rate.

Quick start

Everything is under https://api.bantefa.com/v1/partner, with your key as a bearer token. Keep the key on your server, never in an app or a web page.

  1. Start a recording when the meeting starts

    curl -X POST https://api.bantefa.com/v1/partner/recordings \
      -H "Authorization: Bearer $BANTEFA_KEY" \
      -H "Content-Type: application/json" \
      -d '{"externalId":"room-42-2026-11-02","title":"Biology study room","notes":true,"metadata":{"roomId":"room-42"}}'

    externalId is your own id for it: sending the same one again gives back the same recording, so a retry is safe. notes: true asks for notes and deadlines too. The reply has the recording's id.

  2. Send the audio in pieces as it goes

    curl -X PUT https://api.bantefa.com/v1/partner/recordings/7/audio/0 \
      -H "Authorization: Bearer $BANTEFA_KEY" \
      -H "Content-Type: audio/mp4" \
      -H "X-Started-At: 2026-11-02T15:00:00Z" \
      -H "X-Ended-At: 2026-11-02T15:01:00Z" \
      --data-binary @piece-0.m4a

    Number the pieces 0, 1, 2 and so on. Pieces of 30 to 60 seconds give live lines soonest, in m4a, mp3, wav, ogg or webm. Send the start and end times of each piece, so gaps in the meeting stay gaps. A piece can go again if an upload fails: it replaces the first copy.

  3. Show the live lines

    curl "https://api.bantefa.com/v1/partner/recordings/7/live?from=0" \
      -H "Authorization: Bearer $BANTEFA_KEY"

    You get lines (each with start and end in milliseconds and its text) and stableUntil. Lines before stableUntil won't change. Ask again every 10 to 15 seconds with from set to it, and replace everything from there on.

  4. Finish when the meeting ends

    curl -X POST https://api.bantefa.com/v1/partner/recordings/7/finish \
      -H "Authorization: Bearer $BANTEFA_KEY" \
      -H "Content-Type: application/json" \
      -d '{"pieceCount":42}'

    With pieceCount it waits for any piece still on its way. A recording nobody finishes is finished for you 30 minutes after its last piece. Once a recording has 2 hours of audio, more pieces get 409 meeting_too_long: finish it then.

  5. Get the transcript

    curl https://api.bantefa.com/v1/partner/recordings/7 \
      -H "Authorization: Bearer $BANTEFA_KEY"

    When status is ready: transcript (timed lines), text (plain text) and, with notes, summary (markdown) and deadlines. Your webhook hears about it first, so there's no need to keep asking.

Also there: GET /v1/partner/usage for your balance and what each day used, POST /v1/partner/topups for a Paystack link to top up, GET /v1/partner/recordings to list them, and DELETE /v1/partner/recordings/:id to delete one now. We send the full reference with your key.

Webhooks

Set your address with PUT /v1/partner/webhook and {"url": "https://..."}. The reply has the secret that signs every delivery. We send recording.ready, recording.failed, recording.held (out of credit) and balance.low (under ₦1,000). Each has a Bantefa-Signature header: check it before you trust the body.

// Bantefa-Signature: t=<unix seconds>,v1=<hex HMAC SHA-256 of "t.body">
const [, t, v1] = req.headers["bantefa-signature"].match(/^t=(\d+),v1=([0-9a-f]{64})$/);
const want = crypto.createHmac("sha256", process.env.BANTEFA_WEBHOOK_SECRET)
  .update(`${t}.${rawBody}`).digest("hex");
const ok = crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(want))
  && Number(t) + 300 > Date.now() / 1000; // sent in the last 5 minutes

Answer with any 2xx within 10 seconds. If you don't, we try again after 1, 5, 30, 120 and 360 minutes. The same event can come twice, so skip an id you've seen.

Limits

WhatTo start
Recordings open at once3 (we raise it as you grow)
Requests a minute, per key300
One recordingUp to 2 hours of audio
A piece of audioUp to 25 MB
Audio kept7 days after its transcript is ready
Transcripts and notes kept30 days after that

Past a limit you get a 429 with how long to wait, or 402 no_credit when the credit is used up. Every error has a code to branch on and a plain sentence to show.

Get a key

Write to [email protected] with:

  • your app, and what you'll record (meetings, classes, study rooms)
  • about how many hours a month you expect
  • the email address for top-up receipts

We'll send your key with ₦200 of credit on it to try things out.

Email us for a key