Sign text

Send text, get the signs back a word at a time. The first word arrives while the rest of the sentence is still being signed.

The request

POST/v1/sign
FieldRequiredMeaning
textYesWhat to sign. Punctuation is dropped; each word is signed in order.
fromNoThe language of the text: rw, en, fr, sw or ja. Default rw.
toNoThe sign language. Default ksl (Rwandan Sign Language). All languages.
curl https://api.usesigna.org/v1/sign \
  -H "Authorization: Bearer $SIGNA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Good morning, welcome to the news", "from": "en", "to": "ksl"}' \
  --output news.sgn

The response

200 with Content-Type: application/vnd.signa.sgn. The body is one .sgn segment per word, written the moment that word (and every word before it) is ready. Read the body as a stream to start playing the first word straight away; read it to the end and you have the whole sentence as one valid .sgn file.

A word that cannot be signed is skipped, so one unusual word never costs you the sentence. Only when no word at all could be signed do you get an error instead.

Speed

Every word is looked up at once. Words signed before, by anyone, come back almost instantly; new words are prepared in parallel. A sentence of everyday words usually starts playing in well under a second.

Long texts

Send one sentence or caption at a time rather than a whole article. Each request streams on its own, so the first sentence plays while you send the next, and an error affects one sentence, not the page.

Billing

The characters of text count against your monthly character limit, once, after something was signed. A request that fails costs nothing.

The whole sentence as .pose

GET/v1/spoken-to-signed-pose?text=…&spoken=en&signed=ksl

The same signs as one standard .pose file, for tools that already read that format. It answers once the whole sentence is ready, so /v1/sign is the better choice for anything shown live.