These endpoints provide word predictions and auto-corrections based on a user tapping on an onscreen virtual keyboard. The process is as follows:
keyboard/create
.rec/taps
.Here are some test pages for the endpoints:
Create a new keyboard with a specified set of keys.
Each key is defined by a center x- and y-coordinate, a width, a height, and at least one character label.
Call should be via a POST containing a JSON collection with the name/value pair keys
and the optional parameter lang
.
lang
specifies the Language to use (see list) for the language of the keyboard (default is en).
The keys
value is a list that defines the following about each key:
Parameter | Required | Description | Valid values | Default |
---|---|---|---|---|
labels | yes | Character label(s) for this key | Array of strings | (none) |
x | yes | Center x-coordinate of the key | double | (none) |
y | yes | Center y-coordinate of the key | double | (none) |
width | yes | Width of the key | Positive double | (none) |
height | yes | Height of the key | Positive double | (none) |
type | no | The type of keyboard class to create | [GAUSSIAN2D, STEP, STEPUNCERTAIN] | GAUSSIAN2D |
Notes:
labels
is a list with just a single character.labels
is a list of all characters assigned to a key. Each character is assumed to be equally likely as far as the keyboard model is concerned.Returns JSON containing the following:
Name | Description | Type |
---|---|---|
id | Unique ID for the keyboard, needed for future API calls | string |
numKeys | Number of keys on the keyboard | integer |
x | Center x-coordinate of the bounding box of the keyboard | double |
y | Center y-coordinate of the bounding box of the keyboard | double |
width | Width of the bounding box of the keyboard | double |
height | Height of the bounding box of the keyboard | double |
Example POST request:
BASE_URL/keyboard/create {"keys": [ {"labels": ["a"], "x": 1.23, "y": 4.56, "height": 7.89, "width": 10.11}, {"labels": ["b"], "x": 3.33, "y": 4.44, "height": 5.55, "width": 6.66}, {"labels": [" "], "x": 6.66, "y": 7.77, "height": 8.88, "width": 9.99} ]}
Example response:
{"id" : "MY_KEYBOARD_ID", "numKeys" : 3, "x" : 3.915000, "y" : 6.412500, "width" : 15.480000, "height" : 11.595000}
Get details about an existing keyboard.
Parameter | Required | Description | Valid values | Default |
---|---|---|---|---|
id | yes | Unique ID for the existing keyboard | String returned by keyboard/create |
(none) |
lang | no | Language code | Language to use (see list) | en |
Returns JSON with the same fields as keyboard/create
.
Example GET request:
BASE_URL/keyboard/get?id=MY_KEYBOARD_IDExample response:
{"id" : "MY_KEYBOARD_ID", "numKeys" : 3, "x" : 3.915000, "y" : 6.412500, "width" : 15.480000, "height" : 11.595000}
Move or scale an existing keyboard.
Parameter | Required | Description | Valid values | Default |
---|---|---|---|---|
id | yes | Unique ID for the existing keyboard | String returned by keyboard/create |
(none) |
x | no | New x-coordinate for center of keyboard bounding box | Floating-point value | (none) |
y | no | New y-coordinate for center of keyboard bounding box | Floating-point value | (none) |
width | no | New width for keyboard bounding box | Floating-point value | (none) |
height | no | New height for keyboard bounding box | Floating-point value | (none) |
lang | no | Language code | Language to use (see list) | en |
Returns JSON with the same fields as keyboard/create
.
Example GET request:
BASE_URL/keyboard/transform?id=MY_KEYBOARD_ID&x=100&width=31
Example response:
{"id" : "MY_KEYBOARD_ID", "numKeys" : 3, "x" : 100.000000, "y" : 6.412500, "width" : 31.000000, "height" : 11.595000}
Returns the most likely text given a sequence of taps on the specified onscreen keyboard.
Caller should first create the keyboard using keyboard/create
.
Optionally can return word completion predictions based on the observation sequence being the prefix of a word.
Call should be via a POST containing JSON with the following key/value pairs:
Parameter | Required | Description | Valid values | Default |
---|---|---|---|---|
keyboardId | yes | Keyboard ID to use for recognition | String returned by keyboard/create |
(none) |
left | no | Left text context | One or more words separated by spaces | (none) |
right | no | Right text context | One or more words separated by spaces | (none) |
numBest | no | Number of best recognition results | Positive integer | 5 |
numPrefix | no | Number of prefix word completion results | Non-negative integer | 0 |
vocab | no | Filter to text only containing words in the specified vocabulary | 1k, 5k, 10k, 20k, 40k, 100k, 500k | (don't filter) |
sort | no | Sorting of result words |
alpha = alphabetically A-Z rev-alpha = reverse alphabetically Z-A logprob = log probability, largest first rev-logprob = log probability, smallest first |
logprob |
safe | no | Safe mode, remove hypotheses that contain any obscene words | true or false | false |
singleWord | no | Restricts recognition hypotheses to single words | true or false | true |
exactContext | no | Client is providing exact left and right context including any spaces or sentence start/end words (for experts) | true or false | false |
lang | no | Language code | Language to use (see list) | en |
config | no | Configuration code | Recognition configuration to use (see list) | en |
taps | yes | List of tap observations to recognize against | See details below | (none) |
The taps
parameter is a list of the sequence of taps made by the user. Each tap contains the following:
Key | Required | Description | Valid values | Default |
---|---|---|---|---|
touches | yes | Location/time of this tap | A list with 0 or more items containing: x location, y location, time in seconds (optional). |
(none) |
certain | no | Fix tap to nearest key | true or false | false |
Notes:
numPrefix > 0
, returns the most probable words given surrounding text.singleWord
is true, input is assumed to potentially contain observations from multiple words with or without spaces between them.certain
to true results in locking the corresponding character during the recognition. This can allow users to avoid auto-correct errors for difficult words.time
is the time of the observation in seconds from some arbitrary starting reference point (e.g. the start of input).Example POST request:
BASE_URL/rec/taps
{ "keyboardId" : "MY_KEYBOARD_ID", "left" : "this is a", "right" : "message", "numBest" : 2, "numPrefix" : 3, "vocab" : "100k", "sort" : "logprob", "safe" : false, "singleWord" : true, "taps" : [ { "touches" : [ {"x": 1.2, "y": 3.4, "time": 0.012}, {"x": 1.3, "y": 3.5, "time": 0.022} ], "certain" : false }, { "touches" : [ {"x": 4.4, "y": 5.5, "time": 0.031}, {"x": 4.5, "y": 5.4, "time": 0.048}, {"x": 4.7, "y": 5.1, "time": 0.078} ], "certain" : false } ] }
Example response:
{ "best" : [ { "text" : "te", "logProb" : -2.749233 }, { "text" : "tr", "logProb" : -3.548494 } ], "prefix" : [ { "text" : "test", "logProb" : -5.54844 }, { "text" : "trait", "logProb" : -8.484444 }, { "text" : "trace", "logProb" : -11.45330 } ] }