{"authentication":"Optional. Without a key: a low anonymous level to try. With a key (Authorization: Bearer flk_\u2026), created in the account page of the website, valid for every language.","clues":{"max_chars_full_cell":68,"max_chars_half_cell":53,"max_length":120,"style_max_words":4,"use":"Only to check and draw this grid; never stored, never reused."},"documentation":"https://leflechoir.fr/developpeurs","formats":{"max_preferred_words":60,"max_required_words":10,"max_side":15,"min_side":5,"mystery_word_letters":{"max":20,"min":3},"recommended":[{"height":8,"width":8},{"height":10,"width":10},{"height":12,"width":9},{"height":12,"width":12},{"height":15,"width":12}]},"genre_rules":["An arrowword grid has letter cells and clue cells. Every clue cell holds one or two clues, each with an arrow pointing to its answer; a clue cell holding two clues is split in two halves.","Every run of two letters or more, across or down, is a real word, and every word has its clue in the cell just before it (left of an across word, above a down word), or in a bent-arrow cell at the edge.","Every letter belongs to at least one word; no clue cell is left without a clue.","Answers are written without accents, spaces, hyphens or apostrophes (see languages[].normalization).","A clue is short and plays on words: it is not a dictionary definition. It matches the answer's part of speech and number (a verb clue for a verb), never contains the answer or its root, and fits its cell.","Building a valid grid by hand is a hard constraint search that language models fail at (unchecked crossings, made-up words): use this engine for the grid, and write the clues yourself."],"grid_file":{"format":"flechoir.grid","note":"Public and versioned. Unknown fields are ignored; clue cells, arrows and space are recomputed from rows and word positions.","version":1},"languages":[{"alphabet":"ABCDEFGHIJKLMNOPQRSTUVWXYZ","code":"de","name":"German","normalization":"Uppercase A\u2013Z: \u00c4 \u2192 AE, \u00d6 \u2192 OE, \u00dc \u2192 UE, \u00df \u2192 SS; no spaces or hyphens.","status":"unavailable","style":{"examples":[{"answer":"KUCHEN","arrowword":"Tr\u00e4gt Kerzen","dictionary":"S\u00fc\u00dfes Geb\u00e4ck, das man zum Geburtstag isst"},{"answer":"ROSEN","arrowword":"Haben Dornen","dictionary":"Blumen, die man verschenken kann"},{"answer":"FEIERN","arrowword":"Party machen","dictionary":"Ein Fest begehen"}],"genre":"Schwedenr\u00e4tsel","rules":["Ein Hinweis hat 1 bis 3 W\u00f6rter, ohne Satz und ohne Relativsatz.","Er passt grammatisch zur L\u00f6sung: ein Verb f\u00fcr ein Verb, ein Plural f\u00fcr einen Plural.","Doppelsinn und Wortspiel sind willkommen.","Nie das Wort selbst oder seinen Stamm.","Im Raster stehen \u00c4, \u00d6, \u00dc und \u00df als AE, OE, UE und SS."]}},{"alphabet":"ABCDEFGHIJKLMNOPQRSTUVWXYZ","code":"en","name":"English","normalization":"Uppercase A\u2013Z: no spaces, hyphens or apostrophes.","status":"unavailable","style":{"examples":[{"answer":"CAKE","arrowword":"Has candles","dictionary":"A sweet baked food eaten at celebrations"},{"answer":"ROSES","arrowword":"Thorny gifts","dictionary":"Flowers that people often give"},{"answer":"PALS","arrowword":"Mates","dictionary":"People who are close to you"}],"genre":"Arrowword","rules":["A clue has 1 to 4 words: no sentence, no relative clause.","It matches the answer's part of speech and number: a verb for a verb, a plural for a plural.","Wordplay and double meanings are welcome.","Never the answer itself or its root.","Cells hold letters only: no spaces, no hyphens."]}},{"alphabet":"ABCDEFGHIJKLMNOPQRSTUVWXYZ","code":"fr","name":"French","normalization":"Uppercase A\u2013Z: accents dropped (\u00c9 \u2192 E), ligatures split (\u0152 \u2192 OE), no spaces, hyphens or apostrophes.","status":"available","style":{"examples":[{"answer":"ANS","arrowword":"Se f\u00eatent","dictionary":"Nombre d'ann\u00e9es \u00e9coul\u00e9es depuis la naissance"},{"answer":"GATEAU","arrowword":"Porte des bougies","dictionary":"P\u00e2tisserie servie lors d'une f\u00eate"},{"answer":"ROSES","arrowword":"Ont des \u00e9pines","dictionary":"Fleurs que l'on peut offrir"},{"answer":"ENTONNER","arrowword":"Lancer l'air","dictionary":"Commencer \u00e0 chanter"},{"answer":"AMIS","arrowword":"Sont de la f\u00eate","dictionary":"Personnes proches qui participent \u00e0 la f\u00eate"}],"genre":"Mots fl\u00e9ch\u00e9s","rules":["Une d\u00e9finition tient en 1 \u00e0 4 mots, sans phrase ni relative (\u00ab qui \u00bb, \u00ab que l'on \u00bb).","Elle prend la nature de la r\u00e9ponse : un verbe conjugu\u00e9 pour un verbe conjugu\u00e9, un pluriel pour un pluriel, un f\u00e9minin pour un f\u00e9minin.","Le genre aime le double sens, le d\u00e9calage et le pi\u00e8ge sur la nature du mot (on croit chercher un nom, c'est un verbe).","Jamais le mot lui-m\u00eame, ni un mot de sa famille.","Un mot rare ou technique se d\u00e9finit simplement ; un mot courant peut se d\u00e9finir avec malice."]}}],"levels":{"easy":{"clues":"Direct clues: a synonym or a plain description, no traps. For children and beginners.","words":"More common words in the grid."},"hard":{"clues":"Double meanings, misleading part of speech, wordplay throughout: the difficulty is in the clues.","words":"The engine's usual choice of words."},"medium":{"clues":"Classic clues, with some wordplay.","words":"The engine's usual choice of words."}},"license":"Grids are free to use, including commercially. Every drawing is signed \u00ab made with the leflechoir.fr API \u00bb; attribution appreciated. Terms: https://leflechoir.fr/terms#api","limits":{"keyed":false,"one_generation_at_a_time":true,"per_day":20,"per_minute":2,"results_kept_hours":24,"time_budget_s":5.0,"used":{"last_day":0,"last_minute":0,"words_last_day":0},"words_per_day":800},"messages":"Every error has a stable \u00ab reason \u00bb; its \u00ab message \u00bb follows Accept-Language (en, fr, de).","name":"Le Fl\u00e9choir API","openapi":"http://api.leflechoir.fr/v1/openapi.json","summary":"The reference engine for arrowword puzzles (French \u00ab mots fl\u00e9ch\u00e9s \u00bb, German \u00ab Schwedenr\u00e4tsel \u00bb): grids whose clues sit in cells inside the grid, with arrows pointing to their answers. You choose the language, the size, the level and the words; the engine builds a valid grid around them in a few seconds, and guides you in writing the clues.","terms":{"acceptance":"Calling the API means accepting these terms, in the version given here.","sources":"https://leflechoir.fr/sources","text_and_data_mining":"Reserved for our own elements (word selection, its organisation, the engine, our texts): no training of commercial AI systems on them (French IP Code L122-5-3, Directive 2019/790 art. 4). Free resources listed at sources keep their own licences.","url":"https://leflechoir.fr/terms#api","version":"2026-11-09"},"version":"1","what_it_does":["Builds a valid arrowword grid in the language you ask for, 5 to 15 cells a side, around your words: required words (all placed, or the generation fails) and preferred words (placed when possible).","Returns the grid as a JSON file that is yours (we keep nothing after 24 hours); takes that file back to check your clues, draw it (SVG, PNG, PDF) and link to a page where a person plays or prints it.","Tells you, for every word, where its clue goes and how many characters fit; checks that your clues fit, do not give the answer away, and sound like arrowword clues rather than dictionary entries.","Numbers the cells of a mystery word (a name, a short message) when you give one.","Signs the grid with its author's name when the person wants it (\u00ab author \u00bb): \u00ab Grid by Mamie Jo \u00bb.","Gives the same grid again for the same seed and the same settings."],"what_it_does_not":["It does not write clues: you do (see your_role and languages[].style).","It does not look words up: no dictionary, no pattern search, no word lists.","It does not make crosswords with black squares, yet: arrowwords only (type \u00ab arrowword \u00bb)."],"workflow":[{"body":{"author":"Mamie Jo","height":10,"lang":"fr","level":"easy","mystery_word":"Bravo","preferred_words":["anniversaire","g\u00e2teau","bougie"],"required_words":["L\u00e9a"],"type":"arrowword","width":10},"call":"POST /v1/grids","returns":"202, with Location and Retry-After","step":1},{"call":"GET /v1/grids/{id}","note":"Every Retry-After seconds until status is \u00ab done \u00bb (a few seconds) or \u00ab failed \u00bb.","step":2},{"body":{"grid":"the grid file, with words[].clue filled in"},"call":"POST /v1/clues/check","note":"Errors must be fixed; style warnings are advice. When there are no errors, it returns links to play the grid online or open it to print, download its PDF or edit it.","step":3},{"body":{"format":"svg | png | pdf","grid":"the grid file","view":"puzzle | solution"},"call":"POST /v1/render","note":"The drawn grid, signed. Show the puzzle, then the solution when the person asks.","step":4}],"your_role":"You are the puzzle author; the engine is the builder. Choose the words that make the grid personal (a theme, a person, an event) and the level for the person who will play it, and ask whether they want to sign it (author, optional). When the grid is built, write one clue per word, in the grid's language and in the style of languages[].style for that level, within clue_max_chars. Check them, then give the person the links to play or print the grid, or the drawing they asked for."}
