Scrabblecam exposes APIs for: Caution: APIs are subject to strict rate limiting. Contact me if you need to execute more requests.

Board state recognition API

Request example:

curl -F "file=@board.jpg" https://scrabblecam.com/process

Response syntax:

{
   "status": "string",
   "board": "string",
   "message": "string"
}

Response elements:

status: OK | ERROR
board: String representing the board state, or null if no board was found in the image. Board fields are separated by commas. Each row is separated by the "|" character. Blanks are represented by ?. Split the string by "|" and then by "," to get a 2D board representation.
message: Error message. Only present when status=ERROR.

Response example:

{
   "status": "OK",
   "board": ",,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,H,,,,,,,|,,,,,,,O,,,,,,,|,,,,,,,L,A,U,G,H,,,|,,,,C,A,L,L,,,,,,,|,,,,,,,Y,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,|,,,,,,,,,,,,,,"
}

Rack recognition API

Request example:

curl -F "file=@rack.jpg" https://scrabblecam.com/process_rack

Response syntax:

{
   "status": "string",
   "rack": "string"
}

Response elements:

status: OK | ERROR
rack: Rack letters separated by commas. Blanks are represented by ?.
message: Error message. Only present when status=ERROR.

Response example:

{
   "status": "OK",
   "rack": "L,E,T,?,E,R,S"
}

Move generation API

Request parameters:

rack_str: Rack letters separated by commas. Use ? for blanks.
board_str: String representing the board, as returned by the board state recognition API.
lang: Game language. Allowed values: EN|EN_NWL|FR|IT.

Request example:

curl -G --data-urlencode "lang=EN"\
   --data-urlencode "rack_str=L,E,T,?,E,R,S"\
   --data-urlencode "board_str=,,,,,,,K,,,,,,M,I|,,,,L,O,G,O,,,W,S,Z,Y,|,,,,,,,N,O,C,A,,,,|,,,,,,,I,,,S,P,A,D,L|,,,,?,O,S,E,S,J,A,,,I,|,,,,,,,,E,,,L,,P,|,,,,,,W,,T,R,W,O,N,,L|,,,,,T,A,C,E,,,J,,,E|,,,,,,Z,,R,,H,E,B,A,N|,,,N,I,B,Y,,,,,,,,N|,,,A,,,,,,C,H,U,D,Z,I|,,,G,,,,,,,,F,,E,|,,Z,A,K,R,E,T,O,W,,A,,Z,|,,,D,,,,Y,,E,,C,P,A,M|Z,M,I,?,N,O,,S,,Z,,,,,U"\
   https://scrabblecam.com/solve

Response syntax:

{
   "status": "string",
   "moves": [ "string" ]
}

Response elements:

status: OK | ERROR
moves: Array of up to 10, top scoring moves. Each move is a string of the following format: "row,column,tiles,letters,score,orientation". Coordinates are zero-based. The letters value is the same as tiles, except the blanks (?) are replaced with actual letters. The orientation value can be H or V, and indicates whether the word is placed horizontally or vertically.
message: Error message. Only present when status=ERROR.

Response example:

{
   "status": "OK",
   "moves":[
      "1,12,ZEAT?N,ZEATIN,34,V",
      "1,12,ZEAL,ZEAL,28,V",
      "1,12,ZEAS,ZEAS,28,V",
      "1,12,Z?AL,ZEAL,26,V",
      "1,12,Z?AS,ZEAS,26,V",
      "13,3,DEELY,DEELY,25,H",
      "0,0,STREEL,STREEL,25,H",
      "1,12,ZEA?,ZEAL,25,V",
      "1,12,ZEA?,ZEAS,25,V",
      "1,12,ZEA,ZEA,24,V"
   ]
}