ControlNet Preprocess Canny
ControlNet Preprocess Canny converts an input image into a high-contrast Canny edge map for ControlNet conditioning. It is best suited to workflows that need clear object boundaries, strong silhouette retention, and tightly constrained structure during guided image generation or editing.

API Reference
INTEGRATE
Complete technical specification for integration
RequestResponse
Examples4
CODE
Ready-to-use code snippets for common workflows
canny-edge-detection
Wheelchair Racer Arena Composite$0.0006~3s
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'runware:controlnet-preprocess@canny',
settings: {
lowThresholdCanny: 100,
highThresholdCanny: 200
},
inputs: {
image: 'https://assets.runware.ai/assets/inputs/6f8826ae-1b04-4d58-871f-60edb2373d9c.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/6f8826ae-1b04-4d58-871f-60edb2373d9c.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "controlNetPreprocess",
"taskUUID": "edfe33e9-45e0-45ac-84a0-900410fedbbc",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/6f8826ae-1b04-4d58-871f-60edb2373d9c.jpg"
}
}
]'runware run runware:controlnet-preprocess@canny \
settings.lowThresholdCanny=100 \
settings.highThresholdCanny=200 \
inputs.image=https://assets.runware.ai/assets/inputs/6f8826ae-1b04-4d58-871f-60edb2373d9c.jpg{
"taskType": "controlNetPreprocess",
"taskUUID": "edfe33e9-45e0-45ac-84a0-900410fedbbc",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/6f8826ae-1b04-4d58-871f-60edb2373d9c.jpg"
}
}Response
{
"taskType": "imageControlNetPreProcess",
"taskUUID": "edfe33e9-45e0-45ac-84a0-900410fedbbc",
"guideImageURL": "https://im.runware.ai/image/os/a04d20/ws/3/ii/5b470f0a-6475-4deb-a826-28ff9a19252c.jpg",
"cost": 0.0006,
"guideImageUUID": "5b470f0a-6475-4deb-a826-28ff9a19252c",
"inputImageUUID": "1cb576ca-5970-4e9f-9968-85af1b2dbb3e"
}canny-edge-detection
Roman Mosaic Cleanup Edge Guide$0.0006~5s
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'runware:controlnet-preprocess@canny',
settings: {
lowThresholdCanny: 100,
highThresholdCanny: 200
},
inputs: {
image: 'https://assets.runware.ai/assets/inputs/b794107a-c49b-4644-bf84-dc01570c2e60.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/b794107a-c49b-4644-bf84-dc01570c2e60.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "controlNetPreprocess",
"taskUUID": "df3224fe-fd54-43cd-99c2-cd95d7365435",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/b794107a-c49b-4644-bf84-dc01570c2e60.jpg"
}
}
]'runware run runware:controlnet-preprocess@canny \
settings.lowThresholdCanny=100 \
settings.highThresholdCanny=200 \
inputs.image=https://assets.runware.ai/assets/inputs/b794107a-c49b-4644-bf84-dc01570c2e60.jpg{
"taskType": "controlNetPreprocess",
"taskUUID": "df3224fe-fd54-43cd-99c2-cd95d7365435",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/b794107a-c49b-4644-bf84-dc01570c2e60.jpg"
}
}Response
{
"taskType": "imageControlNetPreProcess",
"taskUUID": "df3224fe-fd54-43cd-99c2-cd95d7365435",
"guideImageURL": "https://im.runware.ai/image/os/a02d21/ws/4/ii/f5360a69-ab3f-469e-b638-af2c805610ab.jpg",
"cost": 0.0006,
"guideImageUUID": "f5360a69-ab3f-469e-b638-af2c805610ab",
"inputImageUUID": "94916aa8-e961-4768-b02d-c20a12d20a1c"
}canny-edge-detection
Watchmaker Team Composite Edge Guide$0.0006~3s
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'runware:controlnet-preprocess@canny',
settings: {
lowThresholdCanny: 100,
highThresholdCanny: 200
},
inputs: {
image: 'https://assets.runware.ai/assets/inputs/cee67ffb-b689-4688-9669-3d330f071ca4.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/cee67ffb-b689-4688-9669-3d330f071ca4.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "controlNetPreprocess",
"taskUUID": "859f1e59-4e97-4444-b696-434a85c263e7",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/cee67ffb-b689-4688-9669-3d330f071ca4.jpg"
}
}
]'runware run runware:controlnet-preprocess@canny \
settings.lowThresholdCanny=100 \
settings.highThresholdCanny=200 \
inputs.image=https://assets.runware.ai/assets/inputs/cee67ffb-b689-4688-9669-3d330f071ca4.jpg{
"taskType": "controlNetPreprocess",
"taskUUID": "859f1e59-4e97-4444-b696-434a85c263e7",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/cee67ffb-b689-4688-9669-3d330f071ca4.jpg"
}
}Response
{
"taskType": "imageControlNetPreProcess",
"taskUUID": "859f1e59-4e97-4444-b696-434a85c263e7",
"guideImageURL": "https://im.runware.ai/image/os/a03d21/ws/3/ii/423020cd-db99-43b4-9e60-31cd65b5a5c4.jpg",
"cost": 0.0006,
"guideImageUUID": "423020cd-db99-43b4-9e60-31cd65b5a5c4",
"inputImageUUID": "5e20b7a6-c606-4bf9-84f2-72fe416f6eb0"
}canny-edge-detection
Saturation Diver Headshot Edge Guide$0.0006~5s
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'runware:controlnet-preprocess@canny',
settings: {
lowThresholdCanny: 100,
highThresholdCanny: 200
},
inputs: {
image: 'https://assets.runware.ai/assets/inputs/a66b0d45-32a9-4371-b7e4-dfebdfbbadce.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/a66b0d45-32a9-4371-b7e4-dfebdfbbadce.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "controlNetPreprocess",
"taskUUID": "1c5a97ec-f916-4a90-aacd-d708aa801a58",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/a66b0d45-32a9-4371-b7e4-dfebdfbbadce.jpg"
}
}
]'runware run runware:controlnet-preprocess@canny \
settings.lowThresholdCanny=100 \
settings.highThresholdCanny=200 \
inputs.image=https://assets.runware.ai/assets/inputs/a66b0d45-32a9-4371-b7e4-dfebdfbbadce.jpg{
"taskType": "controlNetPreprocess",
"taskUUID": "1c5a97ec-f916-4a90-aacd-d708aa801a58",
"model": "runware:controlnet-preprocess@canny",
"settings": {
"lowThresholdCanny": 100,
"highThresholdCanny": 200
},
"inputs": {
"image": "https://assets.runware.ai/assets/inputs/a66b0d45-32a9-4371-b7e4-dfebdfbbadce.jpg"
}
}Response
{
"taskType": "imageControlNetPreProcess",
"taskUUID": "1c5a97ec-f916-4a90-aacd-d708aa801a58",
"guideImageURL": "https://im.runware.ai/image/os/a10dlim3/ws/3/ii/11b3f24d-31ae-4629-80ae-6b64314f8545.jpg",
"cost": 0.0006,
"guideImageUUID": "11b3f24d-31ae-4629-80ae-6b64314f8545",
"inputImageUUID": "190b23d1-1657-45f6-a58a-8d25466b98bb"
}