Draft a made-to-measure sewing pattern from a pinned freesewing design (aaron, b
Draft a made-to-measure sewing pattern from a pinned freesewing design (aaron, bruce, teagan, simon, hugo, wahid, bella, sven) using your measurements and design options, run fit/seam-allowance checks, lay pieces out on your fabric width with a bounding-box marker, and return a fabric-yield report plus downloadable pattern, layout, cutlist and piece artifacts. Freesewing designs are CC-BY (freesewing.org); this service adds drafting, layout, and reporting.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://garment.api.williamrobinson.dev/v1/garment/draft
| Category | Everything else |
|---|---|
| Provider host | garment.api.williamrobinson.dev |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.1 | 534 ms |
Example input (from the provider)
{
"body": {
"design": "aaron",
"fabric": {
"folded": true,
"gapMm": 10,
"widthMm": 1500
},
"measurements": {
"biceps": 300,
"chest": 1000,
"hips": 1030,
"hpsToBust": 320,
"hpsToWaistBack": 420,
"neck": 380,
"shoulderSlope": 13,
"shoulderToShoulder": 400,
"waistToArmpit": 220,
"waistToHips": 200
},
"options": {
"chestEase": 10,
"hipsEase": 12,
"lengthBonus": 15
},
"saMm": 10
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"design": {
"description": "aaron (v4.10.1): requires biceps, chest, hpsToBust, hpsToWaistBack, neck, shoulderToShoulder, shoulderSlope, waistToArmpit, waistToHips, hips; optional highBust; options chestEase:pct[0,20], draftForHighBust:bool, lengthBonus:pct[-20,60], armholeDepth:pct[-10,50], legacyArmholeDepth:bool, hipsEase:pct[0,20], stretchFactor:pct[0,15], armholeDrop:pct[0,75], necklineBend:pct[40,100], necklineDrop:pct[10,35], shoulderStrapWidth:pct[10,40], shoulderStrapPlacement:pct[20,80], backlineBend:pct[25,100], knitBindingWidth:pct[300,800] | bruce (v4.10.1): requires hips, upperLeg, waistToHips, waistToUpperLeg; options bulge:deg[0,40], legBonus:pct[-10,20], rise:pct[0,25], stretch:pct[5,25], legStretch:pct[25,45], backRise:pct[0,10] | teagan (v4.10.1): requires biceps, chest, hpsToBust, hpsToWaistBack, neck, shoulderToShoulder, shoulderSlope, waistToArmpit, waistToHips, hips, waist, shoulderToWrist, wrist; optional highBust; options chestEase:pct[5,25], cuffEase:pct[0,200], draftForHighBust:bool, lengthBonus:pct[-20,60], s3Collar:pct[-100,100], s3Armhole:pct[-100,100], acrossBackFactor:pct[93,100], armholeDepth:pct[-10,50], armholeDepthFactor:pct[50,70], backNeckCutout:pct[4,12], legacyArmholeDepth:bool, sleeveWidthGuarantee:pct[25,100], sleeveLength:pct[20,100], fitWaist:bool, waistEase:pct[8,40], hipsEase:pct[8,30], necklineDepth:pct[20,40], necklineWidth:pct[10,50], necklineBend:pct[0,70], sleevecapEase:pct[0,10], sleevecapTopFactorX:pct[25,75], sleevecapTopFactorY:pct[35,125], sleevecapBackFactorX:pct[35,65], sleevecapBackFactorY:pct[30,65], sleevecapFrontFactorX:pct[35,65], sleevecapFrontFactorY:pct[30,65], sleevecapQ1Offset:pct[0,7], sleevecapQ2Offset:pct[0,7], sleevecapQ3Offset:pct[0,7], sleevecapQ4Offset:pct[0,7], sleevecapQ1Spread1:pct[4,20], sleevecapQ1Spread2:pct[4,20], sleevecapQ2Spread1:pct[4,20], sleevecapQ2Spread2:pct[4,20], sleevecapQ3Spread1:pct[4,20], sleevecapQ3Spread2:pct[4,20], sleevecapQ4Spread1:pct[4,20], sleevecapQ4Spread2:pct[4,20], sleeveEase:pct[5,35] | simon (v4.10.1): requires biceps, chest, hpsToBust, hpsToWaistBack, neck, shoulderToShoulder, shoulderSlope, waistToArmpit, waistToHips, waist, hips, shoulderToWrist, wrist; optional highBust; options bicepsEase:pct[0,50], chestEase:pct[-4,35], collarEase:pct[0,10], cuffEase:pct[10,40], draftForHighBust:bool, shoulderEase:pct[0,15], lengthBonus:pct[-4,60], s3Collar:pct[-100,100], s3Armhole:pct[-100,100], acrossBackFactor:pct[93,100], armholeDepth:pct[-10,50], armholeDepthFactor:pct[50,70], backNeckCutout:pct[2,8], frontArmholeDeeper:pct[0,0.5], shoulderSlopeReduction:pct[0,80], legacyArmholeDepth:bool, backDarts:list[auto/never/always], backDartShaping:pct[5,75], boxPleat:bool, boxPleatFold:pct[10,20], boxPleatWidth:pct[4,10], roundBack:pct[0,10], buttonholePlacketWidth:pct[4,12], buttonholePlacketFoldWidth:pct[8,24], buttonPlacketWidth:pct[2,8], hemCurve:pct[25,100], hemStyle:list[straight/baseball/slashed], hipsEase:pct[10,35], yokeHeight:pct[40,90], sleevePlacketWidth:pct[8,18], waistEase:pct[10,35], buttonFreeLength:pct[-10,15], extraTopButton:bool, separateButtonPlacket:bool, separateButtonholePlacket:bool, buttons:count[4,12], ffsa:pct[100,200], collarAngle:deg[60,130], collarBend:pct[0,10], collarFlare:deg[0,10], collarGap:pct[0,6], collarRoll:pct[0,6], collarWidth:pct[90,200], collarStandBend:deg[0,5], collarStandCurve:deg[0,5], collarStandWidth:pct[3,13], barrelCuffNarrowButton:bool, cuffButtonRows:count[1,2], cuffDrape:pct[0,10], cuffLength:pct[3,15], cuffStyle:list[roundedBarrelCuff/angledBarrelCuff/straightBarrelCuff/roundedFrenchCuff/angledFrenchCuff/straightFrenchCuff], sleeveStyle:list[short/long], buttonPlacketStyle:list[classic/seamless], buttonholePlacketStyle:list[classic/seamless], sleevecapEase:pct[0,10], sleevecapTopFactorX:pct[25,75], sleevecapTopFactorY:pct[35,125], sleevecapBackFactorX:pct[35,65], sleevecapBackFactorY:pct[30,65], sleevecapFrontFactorX:pct[35,65], sleevecapFrontFactorY:pct[30,65], sleevecapQ1Offset:pct[0,7], sleevecapQ2Offset:pct[0,7], sleevecapQ3Offset:pct[0,7], sleevecapQ4Offset:pct[0,7], sleevecapQ1Spread1:pct[4,20], sleevecapQ1Spread2:pct[4,20], sleevecapQ2Spread1:pct[4,20], sleevecapQ2Spread2:pct[4,20], sleevecapQ3Spread1:pct[4,20], sleevecapQ3Spread2:pct[4,20], sleevecapQ4Spread1:pct[4,20], sleevecapQ4Spread2:pct[4,20], sleeveLengthBonus:pct[-40,10], sleeveWidthGuarantee:pct[25,100], sleeveLengthShort:pct[20,100], sleeveHemShort:pct[1,20], sleevePlacketLength:pct[15,35], splitYoke:bool | hugo (v4.10.1): requires biceps, chest, hpsToBust, hpsToWaistBack, neck, shoulderToShoulder, shoulderSlope, waistToArmpit, waistToHips, hips, shoulderToWrist, wrist, head; optional highBust; options bicepsEase:pct[0,50], chestEase:pct[4,20], collarEase:pct[0,10], cuffEase:pct[10,50], draftForHighBust:bool, shoulderEase:pct[-2,6], lengthBonus:pct[-4,60], s3Collar:pct[-100,100], s3Armhole:pct[-100,100], acrossBackFactor:pct[93,100], armholeDepth:pct[-10,50], armholeDepthFactor:pct[50,70], backNeckCutout:pct[2,8], frontArmholeDeeper:pct[0,0.5], shoulderSlopeReduction:pct[0,80], legacyArmholeDepth:bool, hipsEase:pct[4,20], ribbingHeight:pct[4,20], pocketWidth:pct[35,65], sleeveLengthBonus:pct[0,10], ribbingStretch:pct[0,10] | wahid (v4.10.1): requires biceps, chest, hpsToBust, hpsToWaistBack, neck, shoulderToShoulder, shoulderSlope, waistToArmpit, waistToHips, hips, waist; optional highBust; options chestEase:pct[1,10], draftForHighBust:bool, lengthBonus:pct[0,8], armholeDepth:pct[-10,50], armholeDepthFactor:pct[60,80], backNeckCutout:pct[-2,8], shoulderSlopeReduction:pct[0,80], legacyArmholeDepth:bool, necklineDrop:pct[35,85], frontStyle:list[