[{"name":"cv-enhance-v3","version":"5","title":"Enhance","description":"Enhances and reconstructs fine details.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":"image/png","coming_soon":false,"video_coming_soon":false,"tenure":"fixed","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":13.0,"max_input_megapixels":8.4,"max_denoise_input_megapixels":33.6,"max_tiled_input_megapixels":null,"working_megapixels":null,"credits_per_image":1,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"not":{"anyOf":[{"required":["scale","width"]},{"required":["scale","height"]},{"required":["width","height"]}]},"allOf":[{"if":{"properties":{"denoise":{"const":true}},"required":["denoise"]},"then":{"properties":{"scale":{"maximum":2,"default":2}}}}],"properties":{"scale":{"type":"number","minimum":1,"maximum":4,"default":4,"description":"Enlargement factor, from 1 to 4; it need not be a whole number. What comes back is your image, or the region you name, multiplied by this in each direction and rounded down to whole pixels. Send this, width or height to size the result, and only one of them; with none, the result is 4 times the size. With denoise on, the factor is from 1 to 2, and 2 when you send none. The image or region you send must fit this model's input ceiling, and the result its result ceiling: send a smaller region of a large photograph, or ask for less enlargement.\n"},"width":{"type":"integer","minimum":1,"description":"The width of the result in pixels, instead of a scale: the height follows the proportions of your image, or of the region you name. It must be between 1 and 4 times the width of what is worked on, or 1 and 2 times with denoise on. Send width, height or scale, not more than one.\n"},"height":{"type":"integer","minimum":1,"description":"The height of the result in pixels, instead of a scale: the width follows the proportions of your image, or of the region you name. It must be between 1 and 4 times the height of what is worked on, or 1 and 2 times with denoise on. Send width, height or scale, not more than one.\n"},"roi":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","exclusiveMinimum":0,"maximum":1},"height":{"type":"number","exclusiveMinimum":0,"maximum":1}},"description":"The part of the image to work on, as fractions of the width and height of **the image you send**, with the origin at the top left — everything outside it is discarded before anything else happens. Omit it to use the whole image; if you have already cropped the file yourself, omit it or give it in the cropped image's own coordinates, never the original's. What is returned is this region at the size asked for, so naming a region is how a large image stays inside this model's published input and result ceilings while keeping every pixel of the part that matters. A region reaching past an edge is trimmed to the image.\n"},"denoise":{"type":"boolean","default":false,"description":"Reduces the noise of a photograph taken in low light or at a high ISO as it is enhanced. Use it on photographs with visible noise: on a clean one it redraws the finest texture rather than keeping it. With denoise on, the result is 1 to 2 times the size of your image or region.\n"},"output_format":{"type":"string","enum":["auto","png","jpeg","webp"],"default":"auto","description":"The format you would like the result in. auto prefers the format you sent, except HEIC and HEIF, which are read and not written and prefer JPEG, and TIFF, which comes back as PNG. Either way it is a preference: the result comes back in it where that format can hold the picture whole, and as PNG where it cannot. JPEG holds no alpha channel, even one that is opaque everywhere, and at most 65,500 pixels a side; WebP holds at most 16,383 pixels a side; both hold 8 bits per channel. result.output.content_type says which format came back. What you sent is carried across as well: an image with more than 8 bits per channel comes back at its own depth, and colours come back in the space you sent them in. A grayscale image comes back as color (RGB) at its own depth. Colour detail differs between the formats: png and jpeg return it at full resolution, and webp stores it at half in each direction, which is that format's own design.\n"},"quality":{"type":"integer","minimum":96,"maximum":100,"default":96,"description":"Encoder quality for jpeg and webp.\n"}}},"params_order":["scale","width","height","roi","denoise","output_format","quality"],"result_schema":{},"community":true,"image_only_params":["output_format","quality"]},{"name":"cv-faces-v1","version":"2","title":"Small face enhancement","description":"Makes small, blurry or distorted faces look natural.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":"image/png","coming_soon":false,"video_coming_soon":false,"tenure":"comet","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":0.0,"max_input_megapixels":0.0,"max_denoise_input_megapixels":null,"max_tiled_input_megapixels":null,"working_megapixels":null,"credits_per_image":1,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"properties":{"seed":{"type":"integer","minimum":0,"maximum":2147483647,"default":42,"description":"The same seed and input reproduce the same result. Faces up to about 48 pixels tall are redrawn, up to twelve per picture, and larger faces are left as they are; a face that small is drawn to fit the photograph rather than recovered, so vary the seed to get differently drawn faces.\n"},"output_format":{"type":"string","enum":["auto","png","jpeg","webp"],"default":"auto","description":"The format you would like the result in. auto prefers the format you sent, except HEIC and HEIF, which are read and not written and prefer JPEG, and TIFF, which comes back as PNG. Either way it is a preference: the result comes back in it where that format can hold the picture whole, and as PNG where it cannot. JPEG holds no alpha channel, even one that is opaque everywhere, and at most 65,500 pixels a side; WebP holds at most 16,383 pixels a side; both hold 8 bits per channel. result.output.content_type says which format came back. What you sent is carried across as well: an image with more than 8 bits per channel comes back at its own depth, and colours come back in the space you sent them in. A grayscale image comes back as color (RGB) at its own depth. Colour detail differs between the formats: png and jpeg return it at full resolution, and webp stores it at half in each direction, which is that format's own design.\n"},"quality":{"type":"integer","minimum":96,"maximum":100,"default":96,"description":"Encoder quality for jpeg and webp.\n"}}},"params_order":["seed","output_format","quality"],"result_schema":{},"community":true,"image_only_params":["output_format","quality"]},{"name":"cv-headshot-v1","version":"5","title":"Headshot","description":"Turns a photograph with a face in it into a professional headshot.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":"image/png","coming_soon":false,"video_coming_soon":false,"tenure":"comet","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":0.0,"max_input_megapixels":0.0,"max_denoise_input_megapixels":null,"max_tiled_input_megapixels":null,"working_megapixels":null,"credits_per_image":1,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"properties":{"attire":{"type":"string","enum":["business","as-is","starship-captain"],"default":"business","description":"business dresses the subject in a dark jacket over a plain shirt. as-is keeps what they are wearing. For both, the backdrop, lighting and framing are the headshot's, and sunglasses, hats and anything held in front of the face are removed. starship-captain puts the subject in a dark high-collared uniform on the bridge of a starship and gives them pointed ears and upswept eyebrows. Their hairstyle, facial hair, age, face shape and expression are kept.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"default":42,"description":"The same seed and input reproduce the same result. Vary it to get a different headshot from the same photograph.\n"},"output_format":{"type":"string","enum":["auto","png","jpeg","webp"],"default":"auto","description":"The format you would like the result in. auto prefers the format you sent, except HEIC and HEIF, which are read and not written and prefer JPEG, and TIFF, which comes back as PNG. Either way it is a preference: the result comes back in it where that format can hold the picture whole, and as PNG where it cannot. JPEG holds no alpha channel, even one that is opaque everywhere, and at most 65,500 pixels a side; WebP holds at most 16,383 pixels a side; both hold 8 bits per channel. result.output.content_type says which format came back. What you sent is carried across as well: an image with more than 8 bits per channel comes back at its own depth, and colours come back in the space you sent them in. A grayscale image comes back as color (RGB) at its own depth. The result is a portrait on an opaque backdrop, so it carries no transparency. Colour detail differs between the formats: png and jpeg return it at full resolution, and webp stores it at half in each direction, which is that format's own design.\n"},"quality":{"type":"integer","minimum":96,"maximum":100,"default":96,"description":"Encoder quality for jpeg and webp.\n"}}},"params_order":["attire","seed","output_format","quality"],"result_schema":{},"community":true,"image_only_params":["output_format","quality"]},{"name":"cv-denoise-v1","version":"1","title":"Denoise","description":"Removes sensor noise and graininess from your images.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":"image/png","coming_soon":false,"video_coming_soon":false,"tenure":"fixed","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":0.0,"max_input_megapixels":0.0,"max_denoise_input_megapixels":null,"max_tiled_input_megapixels":8.4,"working_megapixels":1.0,"credits_per_image":1,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"properties":{"roi":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","exclusiveMinimum":0,"maximum":1},"height":{"type":"number","exclusiveMinimum":0,"maximum":1}},"description":"The part of the image to denoise, as fractions of the width and height of **the image you send**, with the origin at the top left — everything outside it is discarded before anything else happens. Omit it to use the whole image; if you have already cropped the file yourself, omit it or give it in the cropped image's own coordinates, never the original's. Without tiled, a region larger than `working_megapixels` is reduced to about that area, so a smaller region keeps more of its own pixels; with tiled, the region is worked on at its own resolution, up to `max_tiled_input_megapixels`. A region reaching past an edge is trimmed to the image.\n"},"tiled":{"type":"boolean","default":false,"description":"Works the image, or the region you name, at its own resolution and returns it at its own size, instead of reducing anything larger than `working_megapixels` first. A tiled job takes longer the larger the image or region, and may be at most `max_tiled_input_megapixels`.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"default":42,"description":"The same seed and input reproduce the same result. Vary it to get a differently drawn result from the same photograph.\n"},"output_format":{"type":"string","enum":["auto","png","jpeg","webp"],"default":"auto","description":"The format you would like the result in. auto prefers the format you sent, except HEIC and HEIF, which are read and not written and prefer JPEG, and TIFF, which comes back as PNG. Either way it is a preference: the result comes back in it where that format can hold the picture whole, and as PNG where it cannot. JPEG holds no alpha channel, even one that is opaque everywhere, and at most 65,500 pixels a side; WebP holds at most 16,383 pixels a side; both hold 8 bits per channel. result.output.content_type says which format came back. What you sent is carried across as well: an image with more than 8 bits per channel comes back at its own depth, and colours come back in the space you sent them in. A grayscale image comes back as color (RGB) at its own depth. Colour detail differs between the formats: png and jpeg return it at full resolution, and webp stores it at half in each direction, which is that format's own design.\n"},"quality":{"type":"integer","minimum":96,"maximum":100,"default":96,"description":"Encoder quality for jpeg and webp.\n"}}},"params_order":["roi","tiled","seed","output_format","quality"],"result_schema":{},"community":true,"image_only_params":["output_format","quality"]},{"name":"cv-restore-v1","version":"5","title":"Restore","description":"Tears, creases, scratches, dust and grain are removed and washed-out color is corrected.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":"image/png","coming_soon":false,"video_coming_soon":false,"tenure":"fixed","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":0.0,"max_input_megapixels":0.0,"max_denoise_input_megapixels":null,"max_tiled_input_megapixels":null,"working_megapixels":null,"credits_per_image":1,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"properties":{"monochrome":{"type":"boolean","default":false,"description":"Set for a black-and-white photograph: it is returned black and white and the repair is more conservative. Left unset, a black-and-white photograph is returned in color.\n"},"context":{"type":"string","maxLength":260,"default":"","description":"What you know about the photograph that the picture alone cannot show, in a sentence: who the people are, the color of what they are wearing, where and when it was taken. The repair follows it, which matters most when a black-and-white photograph is returned in color: \"The first Black Canadian Olympian\", \"A soldier in a red tunic\". Up to 260 characters.\n"},"size":{"type":"string","enum":["standard","large"],"default":"standard","description":"standard returns the photograph at about one megapixel, at its own aspect ratio, whatever size was sent. large returns a 2048-pixel long side, refined at that size, and takes several times longer.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"default":42,"description":"The same seed and input reproduce the same result. Vary it to get a different repair of the same photograph.\n"},"output_format":{"type":"string","enum":["auto","png","jpeg","webp"],"default":"auto","description":"The format you would like the result in. auto prefers the format you sent, except HEIC and HEIF, which are read and not written and prefer JPEG, and TIFF, which comes back as PNG. Either way it is a preference: the result comes back in it where that format can hold the picture whole, and as PNG where it cannot. JPEG holds no alpha channel, even one that is opaque everywhere, and at most 65,500 pixels a side; WebP holds at most 16,383 pixels a side; both hold 8 bits per channel. result.output.content_type says which format came back. What you sent is carried across as well: an image with more than 8 bits per channel comes back at its own depth, and colours come back in the space you sent them in. A grayscale image comes back as color (RGB) at its own depth. Colour detail differs between the formats: png and jpeg return it at full resolution, and webp stores it at half in each direction, which is that format's own design.\n"},"quality":{"type":"integer","minimum":96,"maximum":100,"default":96,"description":"Encoder quality for jpeg and webp.\n"}}},"params_order":["monochrome","context","size","seed","output_format","quality"],"result_schema":{},"community":true,"image_only_params":["output_format","quality"]},{"name":"cv-content-check-v1","version":"1","title":"Content Check","description":"Screens an image against the service's content policy without changing it.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":null,"coming_soon":false,"video_coming_soon":true,"tenure":"comet","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":0.0,"max_input_megapixels":0.0,"max_denoise_input_megapixels":null,"max_tiled_input_megapixels":null,"working_megapixels":null,"credits_per_image":0,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"properties":{}},"params_order":[],"result_schema":{"type":"object","properties":{"verdict":{"type":"string","enum":["passed","flagged"],"description":"`flagged` when the image may fall outside what the service allows, `passed` when it was checked and nothing was found. The same answer as the job's `flagged` field.\n"}}},"community":true,"image_only_params":[]},{"name":"cv-real-check-v1","version":"1","title":"Real Check","description":"Estimates whether an image was produced by a generative model rather than captured, without changing it, and says how sure it is.\n","accepts":["image/png","image/jpeg","image/webp","image/heic","image/heif","image/tiff"],"produces":null,"coming_soon":false,"video_coming_soon":true,"tenure":"comet","max_input_bytes":268435456,"max_frame_megapixels":128.0,"max_frames":1.0,"max_output_megapixels":0.0,"max_input_megapixels":0.0,"max_denoise_input_megapixels":null,"max_tiled_input_megapixels":null,"working_megapixels":null,"credits_per_image":0,"credits_per_video_second":null,"reference_fps":30.0,"params_schema":{"type":"object","additionalProperties":false,"properties":{}},"params_order":[],"result_schema":{"type":"object","properties":{"verdict":{"type":"string","enum":["generated","real","uncertain"],"description":"Which way the evidence points — an estimate, with `generated_probability` saying how firm. `uncertain` means the image sits between the two lines and a caller should not act on it either way.\n"},"generated_probability":{"type":"number","minimum":0,"maximum":1,"description":"The estimated probability that the image was generated, from 0 to 1. `verdict` is this number against fixed lines; read this to draw a stricter or looser one.\n"}}},"community":true,"image_only_params":[]}]