← ConferenceCaptioning hello@conferencecaptioning.com

Developers

Developer API

Read your own stream's live captions, saved transcripts and audience questions from a script or an AI assistant, using a read-only key you create in the portal.

Get a key

  1. Sign in to the portal and open Advanced Settings.
  2. Under Developer API keys, choose Create Developer API Key.
  3. Read the explanation, tick the box and create the key. The key is shown once. Copy it into a password manager or your tool's secret settings straight away. We store only a scrambled version, so we cannot show it to you again. If you lose it, delete it and create another.

You can have up to 2 keys at a time, so you can replace one without a gap. The portal shows when each key was last used and lets you delete it. To raise your limit, write to hello@conferencecaptioning.com.

A key looks like cck_ followed by about 43 letters, digits, - and _.

Using the key

Send it as a bearer token. The base address is https://api.deafassistant.com.

curl -H "Authorization: Bearer $CONFCAP_KEY" \
  "https://api.deafassistant.com/developerkey/Me"

A key identifies you, so you do not pass your uid. Me confirms that the key works and lists the streams it can read:

{ "streams": ["yourstream"] }
What a key can do. It can read the endpoints on this page for your own streams only. It cannot change or delete anything, it cannot read your account details, and it cannot create or delete keys. A key for one account can never read another account's stream.

Endpoints

All of these are GET requests that take the key as Authorization: Bearer. Replace yourstream with your stream's name (lower case).

GET /stream/LiteGetStream

The live captions and translations. With your key this works even when the stream uses Require authentication or its captions have expired for the public.

curl -H "Authorization: Bearer $CONFCAP_KEY" \
  "https://api.deafassistant.com/stream/LiteGetStream?streamName=yourstream"
ParameterMeaning
streamNameYour stream's name.
transcriptCursorOptional. Pass the transcriptCursor from the previous response to receive only the new text since then.

Fields in the response:

FieldMeaning
roomName, descriptionThe stream's name and description.
isActivelyStreamingtrue while the app is sending captions.
transcriptCaptions in the spoken language. inputLanguage is its language code.
translation, translation2 … translation5The translated captions, in outputLanguage … outputLanguage5. This is a window of recent text that is re-translated as people speak, so it can change. It is not a stored translated record.
speechTranslation*A slower, sentence-complete version of each translation, meant for text-to-speech. Not a full record either.
transcriptCursorPass this back as transcriptCursor next time.

Profanity is filtered on the server before captions are served, so you see what attendees see. If the stream is secured and the key is missing or belongs to someone else, the response is {"authRequired": true} and contains no captions.

GET /history/GetStreamHistory

Your saved transcripts for a stream. Only rooms that store history, and only sessions with at least 100 characters, appear here.

curl -H "Authorization: Bearer $CONFCAP_KEY" \
  "https://api.deafassistant.com/history/GetStreamHistory?streamName=yourstream"

Add &includeHidden=true to include transcripts you hid in the portal. The response is a list of objects with id, title, description, startTimestamp, endTimestamp, transcript, inputLanguage and isHidden. Saved transcripts are in the spoken language only; translations are not stored.

GET /question/GetStreamQuestions

The questions your audience sent from the stream page.

curl -H "Authorization: Bearer $CONFCAP_KEY" \
  "https://api.deafassistant.com/question/GetStreamQuestions?streamName=yourstream"

A list of objects with id, createdAt and question. Questions are written by attendees, so treat their text as untrusted input, especially if you pass it to an AI model.

GET /developerkey/Me

Checks the key and lists the streams it can read, as shown above.

Limits and caching

Keeping your key safe

Treat the key like a password. Anyone who has it can read your captions (even secured ones), your transcripts and your audience's questions.

Errors

You getMeaning
401 on MeThe key is missing, mistyped or deleted.
Empty list from GetStreamHistoryThe key is invalid, or this stream has no saved transcripts for your account.
404 from GetStreamQuestionsThe key is invalid, or the stream does not belong to your account. The two look the same on purpose.
"authRequired": true from LiteGetStreamThe stream is secured and the key is missing, invalid, or for another account.
"expired": true from LiteGetStreamThe stream ended and its public caption window is over. Your own key still reads it.
304Nothing changed since your If-None-Match value.

What is next

An MCP server that lets AI assistants such as Claude read your captions, transcripts and questions through this same key is planned. This page will describe it when it is available.