Find text color and effects
Main text color and effects (stroke, glow, shadow, gradient) of every text block. Color webtoons only: on black-and-white manga the results are unreliable, and still charged.
Blocks — your masks; for an image without masks we find them: on a BLOCK — the text inside it, on a PAGE — OCR blocks where text was read.
Billing per block without error: api_styles. A block we found adds api_ocr_mask: 1 on a BLOCK image, 2 on a PAGE. Before the work a hold is charged, after it the actual cost (see Billing).
apiKeyAuthorizationBearer <nlk_… (team API key)>Idempotency-Key?stringUp to 255 characters, e.g. a UUID. A repeat with the same key is not done: 409 DUPLICATE_REQUEST.
length <= 255multipart/form-data- body
images*array<>masks?stringText blocks, JSON text (see the overview).
language?LanguageSource language, not UND. Required when some image has no masks.
"AR""AZ""BE""BG""BN""BS""CS""DA""DE""EL""EN""ES""ET""FA""FI""FR""HE""HI""HR""HU""HY""ID""IT""JA""KA""KK""KO""KY""LT""LV""MK""MN""MR""MS""NE""NL""NO""PL""PT""RO""RU""SK""SL""SQ""SR""SV""SW""TA""TE""TG""TH""TL""TR""UK""UND""UR""UZ""VI""ZH"kind?stringApplies to every image; default — by size (see the overview).
"BLOCK""PAGE"Blocks of every image with their color and effects.
application/json- response
requestId?stringRequest id — the same as the X-Request-Id header.
uuidimages?array<>usage?What the request cost. A line = price item × quantity; cost = sum of lines.
curl -X POST 'https://api.neurolate.com/ext/v1/styles' \ -F 'images=[ "string"]'{ "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "images": [ { "index": 0, "width": 0, "height": 0, "kind": "BLOCK", "masks": "CLIENT", "blocks": [ { "number": 0, "mask": [ { "outer": [ [ 0 ] ], "exclude": [ [ [ 0 ] ] ] } ], "bbox": { "x": 0, "y": 0, "width": 0, "height": 0 }, "textColor": "string", "effects": [ { "kind": "STROKE", "color": "string", "color2": "string", "direction": 0, "size": 0 } ], "error": { "code": "string", "message": "string" } } ], "error": { "code": "string", "message": "string" } } ], "usage": { "cost": 0, "items": [ { "item": "string", "name": "string", "unit": "BLOCK", "quantity": 0, "amount": 0 } ] }}Slice a strip into pages POST
`images` — consecutive pieces of one webtoon strip, top to bottom. Returns where to cut it into about `pages` pages. A page is at most 36.25 × `width` px tall (25,012 px at 690), so there may be more. Charged per 10,000 px of strip height at 690 px width: `api_slicing_find` without `cut`; with `cut=true` you also get the PNG pages, charged `api_slicing_cut` instead. Charged up front, refunded if we fail.
Get upload URLs POST
One upload URL per file, in the order of `files`. Then send each file with `PUT uploadUrl`, the body is the file itself, exactly `size` bytes (the size is part of the signature). Files can go in any order and in parallel. Then pass the `uploadId`s to `POST /ext/v1/chapters/from-uploads`. A file that is cut off or crawls costs only that file: abort it and send it again over a new connection, to the same URL while it is valid. If `uploadUrl` cannot be reached at all (its port is closed in your network), use `fallbackUploadUrl`. URLs are valid for 1 hour; files not used by an operation are deleted after 3 hours — for files that did not make it in time, ask for new URLs. Free.