Skip to Content
SignStream APIREST API ReferenceGenerate Translation

Generate Translation

Generate a sign language translation video from text input.

POST/v2/generate

Request Body

The request body consists of three required top-level objects: content, output, and context.

content

Defines the input content to be translated.

content

NameTypeRequiredDescription
typestringrequired
The type of content to translate.
text
datastringrequired
The text content to translate into sign language.
durationnumberoptional
Optional target sign-language duration in seconds. When set, the pipeline paces signing to fit the requested duration (useful for aligning to a fixed video slot).

output

Defines the output format and delivery method.

output

NameTypeRequiredDescription
formatstringrequired
Output video format. Use "mov" directly instead of the legacy "mp4" + "exportType: MOV" combination.
hlsmp4mov
deliveryobjectrequired
Delivery configuration.
methodstringrequired
How the output should be delivered.
streamdownloaddisplay
configobjectoptional
Additional delivery configuration options.
qualitystringoptional
Bitrate tier. The friendly labels are aliases: low → SD (~1.5 Mbps), standard → HD (~5 Mbps), high → 4K (~15 Mbps). SD, HD, HDR, and 4K also accepted for backward compatibility.
lowstandardhighSDHDHDR4K
resolutionstringoptional
Explicit output resolution (e.g. "1920x1080"). Independent of quality, which controls bitrate.
codecstringoptional
Video codec.
Default: h264
h264h265vp9av1
backgroundColorstringoptional
Background color. Use "transparent" for alpha channel support, or hex color (e.g., "#1a73e8").
Default: white
digitalSignerstringoptional
Avatar signer to use. RAE signs BSL, JAY and MAX sign ASL.
Default: RAE
RAEJAYMAX
languagestringoptional
Target sign language. Must match the selected digitalSigner: BSL for RAE, ASL for JAY and MAX.
BSLASL
signerSizestringoptional
Signer size within the frame.
smallmediumlarge
signerOnlybooleanoptional
When true, output only the signer with no background compositing.
fitModestringoptional
How the signer is placed relative to the output frame. "pad" letterboxes to fit; "native" preserves source proportions.
padnative
exportTypestringoptional
Legacy container override for MP4 downloads. Honored for backward compatibility, but new integrations should set output.format = "mov" instead.
Default: MP4
MP4MOV
socialMediaDimensionstringoptional
Aspect ratio for social media.
16:91:19:164:5
lowLatencyModebooleanoptional
Enable LL-HLS for reduced latency.
Default: false
hlsSegmentDurationnumberoptional
HLS segment duration in seconds (1.0-10.0).
Default: 2.0
hlsSegmentTypestringoptional
HLS segment container. Use "fmp4" for CMAF/LL-HLS-compatible fragmented MP4 segments, "ts" for MPEG-TS.
fmp4ts
embeddedSubtitlesobjectoptional
Embed subtitles in the output.
enabledbooleanoptional
When true, burns subtitles into the output.
logoobjectoptional
Logo overlay configuration.
urlstringrequired
Fetchable URL of the logo asset.
positionstringrequired
Placement of the logo within the frame.
sizestringoptional
Optional logo size specifier.
screenIdnumberoptional
Target display screen identifier. Required when delivery.method is "display".

context

Provides application context for the request.

context

NameTypeRequiredDescription
applicationstringrequired
Free-form application identifier used for routing and analytics (e.g. "media", "airport-display", "education", "my-app").
locationstringoptional
Physical or logical location identifier.
sessionIdstringoptional
User session identifier.
screenIdintegeroptional
Target display screen identifier. Also used by display-method deliveries; can be set here for routing or on delivery.config.
gateintegeroptional
Optional gate/lane identifier used by transport and airport integrations to associate the request with a specific gate or platform.

Response

The response shape depends on output.format and output.delivery.method.

HLS + stream — JSON with manifest URLs

For output.format = "hls" with delivery.method = "stream", the API returns 200 OK with a JSON body containing a manifests object. Clients pick the streaming protocol that fits their player and fetch the manifest themselves.

jobIdstring

Job identifier.

statusstring

Translation status.

manifests.hlsstring

Stable CDN HLS playlist URL (.m3u8). Poll this as new segments land.

manifests.dashstring

Stable CDN DASH manifest URL (.mpd).

Both manifests are written alongside each other and served from the same prefix, so a DASH client and an HLS client can watch the same job.

MP4 / MOV — 303 redirect

For output.format = "mp4" or "mov", the API returns 303 See Other with the Location header pointing to the generated file.

Locationheader

Presigned URL to the MP4 or MOV file.

Common Use Cases

Text to HLS Stream

{ "content": { "type": "text", "data": "Your text here" }, "output": { "format": "hls", "delivery": { "method": "stream" } }, "context": { "application": "media" } }

Text to MP4 Download

{ "content": { "type": "text", "data": "Your text here" }, "output": { "format": "mp4", "delivery": { "method": "download" } }, "context": { "application": "media" } }

Text to MOV Download

Request a QuickTime MOV directly via output.format = "mov". The output is stored under its own mov/{jobID}/{jobID}.mov S3 prefix.

{ "content": { "type": "text", "data": "Your text here" }, "output": { "format": "mov", "delivery": { "method": "download" } }, "context": { "application": "media" } }

Display on a Screen

Route the translation to a configured display screen with delivery.method = "display". The target screen is identified by delivery.config.screenId, which is required for this method.

{ "content": { "type": "text", "data": "Your text here" }, "output": { "format": "hls", "delivery": { "method": "display", "config": { "screenId": 1 } } }, "context": { "application": "airport-display" } }

Low-Latency HLS

{ "content": { "type": "text", "data": "Your text here" }, "output": { "format": "hls", "delivery": { "method": "stream", "config": { "lowLatencyMode": true, "hlsSegmentDuration": 1.0 } } }, "context": { "application": "media" } }

Custom Background and Social Media Format

{ "content": { "type": "text", "data": "Your text here" }, "output": { "format": "mp4", "delivery": { "method": "download", "config": { "backgroundColor": "#1a73e8", "socialMediaDimension": "9:16" } } }, "context": { "application": "media" } }
Request
curl -X POST "https://ai.api.production.signapsesolutions.com/v2/generate" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": {
      "type": "text",
      "data": "Hello, welcome to our service"
    },
    "output": {
      "format": "hls",
      "delivery": {
        "method": "stream"
      }
    },
    "context": {
      "application": "media"
    }
  }'
Response
HTTP/1.1 200 OK
Content-Type: application/json

{
  "jobId": "cd320c9b-fc8f-45ad-9ae9-8fa7d159c937",
  "status": "completed",
  "manifests": {
    "hls":  "https://cdn.production.signapsesolutions.com/hls/cd320c9b-fc8f-45ad-9ae9-8fa7d159c937/index.m3u8",
    "dash": "https://cdn.production.signapsesolutions.com/hls/cd320c9b-fc8f-45ad-9ae9-8fa7d159c937/manifest.mpd"
  }
}
Last updated on
Question? Give us feedback
support@signapse.ai