Apply structural edits (move/rotate footprints, resize a net's track width, add a mounting
Apply structural edits (move/rotate footprints, resize a net's track width, add a mounting hole, edit a field, swap a footprint) to a KiCad 8/9 project, run electrical and design-rule checks under a named fabrication profile, and return a scoped pass/fail report plus downloadable Gerber X2/Excellon, BOM, position file, PDF, and preview artifacts. Claims are scoped: ERC/DRC clean under the listed profile rules, never "DFM approved"; footprint swaps are checked structurally, never electrically.
250000 (raw units)
price
1
calls / 30d
1
unique payers
2026-09-11
updated
Provider
pcb.api.williamrobinson.dev · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x26026370fe8b2bb17af9092a17691c76519366da",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "250000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"edits": [
{
"kind": "set_track_width",
"net": "Net-R1_Pad2-LED1_Pad1",
"widthMm": 0.35
},
{
"drillMm": 3.2,
"kind": "add_mounting_hole",
"x": 2,
"y": 2
},
{
"field": "Value",
"kind": "set_field",
"reference": "R1",
"value": "1K"
}
],
"options": {
"requireDrcClean": true,
"requireErcClean": true,
"schematicParity": false
},
"profile": "2-layer-standard",
"project": "UEsDBBQAAAAIAACQn0/H8GZEtwAAAAQCAAAMAAAAZnAtbGliLXRhYmxllY5BC4IwFMfvfoohHebFIIroGK5QzBTzPqa+YqCbbDOI6Ls3oYMEEbu9/3v83u+PrwPteE0NqzvwEMJ3UJpLgbbBlOwJYcF6QH4JmmsjFb1kxA+weQx2mfKItTaNiiN/8UyTaE929JjnVVEm54qSpHwt52Q4KDDmYRE5GOvRyLdzC7pR0/QtPR2Iu+8DOaoiKQQ0U82CixhYC4quws26793sv/84FsrkKAwXt1h24FZhTv6VBt4bUEsDBBQAAAAIAACQn09Cf2yYuQ8AAN07AAAVAAAAcGNiX2V4YW1wbGUua2ljYWRfcGNi1Vtbc9s4ln7u/AqWax+SqUDBnUC/dS5d07OT2VS6d6r2SYWrrY0saUUqTmZr/vt+ICmJkm3Z3W2ld5yKTB+CwIeDc/uOpOefZsHF6Sr4Z989/5zWzWy5qDjlknFuX0B2mRZp7drlurrAoEW6uTiQTrfPXNgJHd2aP/vuu+ft1Sx8WqSmqdhEvyiSebp04eu0TW4d18tVUy2WkJfHVm6VsMYPsptk7r5i3vIErS5+nLzZXFTN7HLh5t0svLp4fSyzZdwP8So1F9WmKVMNf84+p4tuBGPlsYMhr4+HiPLYB9e0qR/SS1UZeSxVZejPs/mnn/cLlj+bsE5p0c9XlwcPxry+NYaVB9+75tNoblEGHskYJnt7c9lM/hOS7XTlevJ27W5mi8tmmA+aeHPd3jHuzfL6Oi3aYRzHwu/Ckt0eV6TDGNGN4XeO4cMYKOJdvEw4kLYZ4eXA+96tL2eL8ca63b5Zt/8V91p7s9ys26+wiGFC2x3veMzr4zGi0/6Pzo/n7rR2JLMDXjYSSjYI+VgoBqEYC9UglDthsc4mtZtVub+C67TL6TVOahrmMGq3CKmi3bNuPl/eTJvlPKZ1N8CvZ1BTM50tpnm5bFfrGc6idwC4Cg4GZ1jl9XLRVt6FT50YLreaYyxmvi7usPWMNE+hLW5Hv9DhZ7q7UMPPVNVKZZXzi+7JMtF0uZgC2LSfZXp6nlsX/Txx1jiPzcJf22sX1svtJr57Dh1dprVP6/QFGypx4Y57rm3XM79pU1N9Tc3xzfi56DDeNQhO49ph3H8vfZ7N0/5mdM1VitP5bJGm5XqKdWbLivHJAfbRqEu3GgaJgzHN58vVOoVZF9bkXncZZ4Cd5d2OrpcxVWy3Abf5slzPYO+7AVery/kqLRabayDejhyEzSqliEh7IIwzLNGWseoA0irmaWcZ07yarhA4ofqv09VytVmN9FNGFct5cBDWcNCwO5Q2sL85lLcMmxImdruIX/JqOf96uVx0G95r/EueXWORmZtvFrO2ObgDffTpIhd73q/TLJABWgTc3fSrxsnlpl1t9it2lurnZStuEac3V7N2tG7zKbXhCq7XLBfZ+YOnIO21vbe7q1lMcbE6HNvPsROPTGzZNEBz+06z8e3ahba4Mo7iukEY303X489LOHq7Pefr2XqNrLnT4no2nzdX8JrtgCa4edp7IBtPFWewQKTXr9VFF/CGwLNIbUV7UXeNQPa31JK/sOkHFxn52P/e3eb97V7MyV/fvT0aIPoB2xt8mKmL7M93Qaq6+Igc2ZRs//P7t99/nFJNxZRpat4neGm4eLaNS0Ou7kLXZjOL1YU2UbA6CmKjFkRqLYlhNSc0cxF44Dkr148vmqNVPVHdXzEhR+4XrrBwVZatnpd1q37hFy+r5n82bp2q50VdbnG5mbv1iwqOVMGLrmcoDl5WP314Q2qhGI5ikDx/vYxfUTz8I1U47HVI33eDfn5PasOrlbtMVc1fVldtu2q+f/Xq5uZmAmMmIk7C8vrVzXIdESCa5tXNigSYN5zl1QbWB4t8NVsF0lyXedwUvryIxZWmrLNjPoGbAfNQPMH9b2btVdVVYGSnbbKrrXq9tO6yqS7WgyJ62da7i4IyYhIi5gWu2UVnQq4YCWETpLQhfuwOp69FhpDVHVD2lqosKNE0ZyKjk8TxWpOgWV0LJhxXfHgg5Qwtd2moWMei7a5gyEWRbDDgg7KPTpjqpd3rYMlj/H9H8CjYhaAj8HdiL5l9jFwqkUSqLbGB5WJahvhaO+JMZDLWNc0+nxH5WwRQJJPUAv0IOj2Bu4SiUc7rdhGMVJzLRIT3NZHZZWKUronS0gsVdU5UPGoXExRc5eU37aV422xV4tDv2w0NzlsOT6dKlzNRmjglMwkxeill9EzJM+2mVAxVcx27P5ABS47v42zr1m1F6ISLmitTrqBxNaBAqLj7TtOul59SD+9mFuGoWJn3Kz9vv65K7JjP4g7ESS8TtYzWU02Y5IxICw1ZkyhxsQ7C85AUFxe7rZxCfy/4s2F3ikeQwURYzIbI2kYEc85JNtobU6tQC3cSO7y5020t9rCPZXchpupRiHumMEastc2S6kAYD0BsrYG2WSARSBGZE/RtHkZ8CPjWLp4UMWXWe+c14T5wIiWyjbEqEOUSY8Fpj3+nEN+r4jPhldxGTw00zAz8nMPFrWSJJCaYcrROmacH8d6l4DPhtSxoSYMlLkhKpMeVkcgVWcna1DXTzoQH/K/Tr2SHvnckvNPvHgX5OLkFlmohfCZRITfLjJLJuIy0kOrgU0Kiy/ZBwMd4b+/i6QALF+F0OpI6M1gwzBaAoySeMcCNtQu5PgX4XgWfBy7cDTWCSiQgqhEZENl8FrLECZ9pDCLykyHiXvWeCS6tvfXwtzpRRDSpKDGBOqTZZCSLGgHj0N9aMPChefJv//vx3Y/vPr7725t3/3xkat8tmqPPmhhfnMbKQJxFfWh0kq7WkbKaPiaZQyXl/12pnOo7CxOH1dlFyebVerlZxFLdb5EXLXO1BT8sUPRu1Wg/zbZtuGuu7Rp7/ajdvNN13wRAIh0mOM2sdupJCYdRK0GUkhomZCjxXggSAkhPlNxpPYrZ3Z74PXv6Jls6xQZ3m8omM1cLTiyHc0hBFcpRjsCeUb9FRKRo6X5TCVQ7gl5Py5HvelmlTTAvdvfvP7354a2dirfv/+Ptu79O3/708Z+vxlRyImLHiJtXtzjlBNta9da6zLlJvUE9//L1HyPTHfRVePT+NtsV9FuttOBa9z3+oifWI64LvXQ0t/z+FUTXoHyP+AdDQPWO/IiawzpNEBNlzDJ7x+o90dXHRBernZ3jFj470FkcQOtmpE3hquO0PX19FZc3i+6CU8YY5ZQLLoTQoIjid5BXbO4Uby2WOGauYqIeQVwVk5QbFQlzRkLrXoH+MUui5pb6qCPX4RsQ17K3PfZHEVelgqhBTgm3NXys8CPjuQUDpNki9Zgsz0m5n4i4Ui2FNlQS2Ioj0jiKmIGaO3uVVUjQf6z/dYirqHVwQtbEi1LQUsuIVdSj3sqSwf65EuoPIq6lLlZ9cT8uNnrxSPqkpI85n1xCOEMgc4X0oZzTtYGN4nRRAFDBT5Zzt+Ht67nzIE5wHuUcwq7kAgE4gZK47IhlVFiZaKrZgxXdPUom58IMRxHKGU9YSRUy48oYrQgDI6lRTkfKT9K+b0+teTZgpzmT2na5DpWPjUh42omAYtQ7XZ8kfn8AtXZWSMMUSZ4yUD8eiK2dJVnQ6DjTJVr9f6LWykCVhUMlJeB52ibiu3ZLbUKMMGKfHsb7Lam1SEl51ImJyoKXIg8IYUgOyaOaTCbK05FicDw2wjsQqRMe9yiwx4k3UxdpRO2bFexB5tKdzM4TzyNDfECJ+4C7HeAaEdSnBipCnYSWilCLk5dGBGAE+6cZecrUNYpN+gDQLmrJI53u1fx0WGGgNGjnCM8WdRiziLte1XgRDBE5116dbG1uif8B1DH6J1SrQX4AaUW5VQMqF4q4GuTGiKiVziklyR5B+g+P/xxAeRRe6iwRA5RFNeKRxmKBjIrX4Py9Foc+9RR0n4tkc1aSKMGxlGWCmBreAW/m1JhgHHtUQf3kdL829S1yXCR/AD1WKQkvoiWOlXfLdIjEGhQZShmkQSZRwo964Q9w/m+zr1Pv8e7PXsokcgikNqnQfieINxpnH3zwwmFn/vfR/oFV7xn/HfT6j+P8b5aLRfd++/TDbPHn5GJaT/lEyevr7/cC9oXy6YdePP07+Aeo7/xUS8DW1rsIiscFLU1nhEdjkSOz9IqBZgTLw64lII87Ar9c4WAvr6qr5RyRo1272eVVW61mi+qqw/OyKoBeVj0g3GjD1cuq/xAHrO1mTMAP5tpPUf3y51+6WbaTHD99N1//ywFb5xNhHkHXg5HBcGVIcAjA0gQUjlZowhXXKSZjjbLfgK6Xk57SsufRHuTE8gfDY4jO5YDw6BQvDR4DrpjBjaKJnHnkj5DPuYGnYu2lse2SI7X2YEk0CWJpwjEIpkyOzFpr/oVYu9KuVtyQZMub5xqUxIUciXTU0hio8LU/02461t72fjUtfnVfKcaKf3Svo7phLHhSRhktyypGRrh3SFBMRoIaPBAeuA2aMRHZQ/xs784DdzjE/7Tvi7vAhHWcIFCiIk81ooKkAeRMWqMtCz4+RICBbndyI8QCPn0GwDzaEFxEjYs6HPp1DGEs5fI2EiKc1ZLSh94MvwX4SPTEXZEoNCo3IuDZRCpbijqL0JUiShWdmNEnS95jZe7wnkm/wnsGC1YkW1EoWu1LqZUIw6WtqXJKq9Ps9271nguugAYlymXQyECkdOA9LgAuz0k4qmr2oDnUdf96YMAQyok4gfg303VjaR1rKghP0cDjYBDwQUOiVUKz0mF4gK4fges1fD68wXPjE2VEeYPKNCG6e1r6tDCEwoa8Os3Z71fwSPi0iHVmMSJERCfAoxJefGIUpTXTMsfEESceRHyHgs+FF/w8cYQJkg1HZYZijJRGKkGEUJLpUvecbjZ02RM8TR+0Tru/+5snHO9RmG+1HLIyyvnSjRaw4ezLWw+wZs9qESw1zj7YnAZiMTHswCaOdvGEfQdtrRMgVjVDrSIjVchyEZENMY26DJvQ/oF2zpEue6Pg9Xn0y6kNQtYMQTggyRXbMBRFb+IRv7Ri1sfTFnyIbId2r/KnA2sMSruMDAdzZTBfhArvNfgrKI6TUG0MJ/tP99rCOcAmlahBUUOS5mHbY1G8fFJSlU6pEuIwvT3c2Omw2ofYC3OJM+WRUmuoCmphxEWjiWDcUuGklexRn+X4dexlaOygTN50NXJ10AA56H0guJX/vaT7sPz2E/HbLsif+i7In/ouSH9vna6Xn9N0s4CK4vCtlt1H7h/5OQ6qkbFt4kQYBUoUC8XjrCbcaPyg5vCc3+7p7PcUZuvQNyP6XRUuff6NPaqtk6UvTalEFAulXSXB9jLThEZOTfYMBjhiA7+hrXN/42Tf6Xmgg/KNuz6X6+lghNum7vB9reL4HO7UN2H2Ln/k8b3Dx5TdZt7uPbUc66CwwQf334nrpAM9k0xQzjVxonw+WnBPDNc1CdQKV1OjkLsuXmy/ZXZZvjywR7pvERWsdsJqtZNsQYoxhH1DqnOFEQ4fU5I6lJTZxSHLiY0yEMVzZsoqiqrlXhys/7jSGAxTE874r4LDR3CYprlOmRJueQlRVBIjEayo8VxQJB1pdnA+z9yz74ZP0fQt1O2iQw+1/6Zp72kHCPad1NcHSMQYSfZZKCaRoHN5NytQYjSoKU3U1V5mLhy/XzFHgIpmZFEXlfdr5X4syqI0KB9PtALlo5SGwmxQBAfjSqdeFzq/xXKH77549n9QSwMEFAAAAAgAAJCfT2e+ESNiBwAAriAAABUAAABwY2JfZXhhbXBsZS5raWNhZF9wcm/tWdtuGzcQffdXGPvUAoYhyXbi9rl/UQQExaVWhLjkluRKUYL8e2e4N95WMgr0JYhhJzbnaMgZDs/MkN8fHh+rvaamrv58/A5/wJ8v9VnwS6eNszD495enYbjmVjSKWO6cUI2d8V50oL104RiM0q6TVzLJiNPk0JGD4LJG4IFKy5/uoO2RdvzDaMe/ugLWm0d076RQnPh/LqJ2R4BunjdvAZLpruMmhexyBM5EhKNSsMKEIciKb5ygnu1zYaYFcr4JcUfBTopb6xf0soLqOyOaY8kFTPfGXdENt8yvRcuVFVqRznAm8DcAvRYRvRJ+v19K0jgQcLuM0RciuWr8vNvd5w18PYUQMGBUrQ8HCDKAvW0y1InzYZ8J+L5RHMPWmZ5HINt3YIC15Bs32odPBvEqOm2FG4yMZ/HGkYM2LcV1bGbZj8DaA92n3twm4tthMiOCGNmsys/r8jg6tm8lzHpsaHfMY36bAW7bEmBWrEkRuT0B4oZFAWrdpo7WWQzWRkjp9b1Hm33ko5Lt8+5zJJncsXt+ey2GgBXydMtzXn7bcQtkxW8JIHfbAki8VsSs++ybVjxzWisUYZJTQxXjXu3b4omHxCNAAIcD6agwJKKCKYX4TWCEf2WyL8ha7micQc7cjCS0y+YyveSQjAACZ5inqUepXlIzb0vFgYBMFTJiYFRBqpXiDLlhUXGhRkHii2GefHndcHJPoUdaKWDBq9pGkrZEA0rSrqzKAAfSpjzPsgMN7TDnAZsSWNZdeK9g+k7yemRpSKmaSA0rLH4Oz9IH1INGwajjwKXaQeQpnzNKxkNsGrrAVlCRPJtulkKVIR3EDmmFBQpnfv8gXWjDy3h7bfdaRvBbsxN37fgd5Uct7wWFh0Dpgv+vTIkiSxhuBfqxXoEJdQZ+mYuc4mzCaokqyBCLa5ocbwmEfS0s3ftwoNcBnCsEqCVKYy6W+jIsLkON4XQ3VqTYL9tPhLU9X4uVGHpn01oqMZF7u8fzVZy/Fczos6Dkg7HdChwBtZ5WwWMHo2E1s7tKSwGrYCheSB45E+zeYVDcgSp1gCO2CtEqW+eestPNZaoO9ksAe9f83lIxzzrQt6Lp44rsEdoNNNoHVdHhPoflVFuY1iORQm+H+gwbmbYEOfHL/VCAg1XDZC21J7I3ol6DOWrOuBFQwEBUFjF+k+aKpLSkaRsHT/Su7KysHiiqOhrdN0fPP5AFash17ojWToSUq4Wk0FJ1JXBQViY2GF7gqjUNXl4jQAzJpbQwD7K8gSLCLW3Dmrb1LO/lwJ9G+yNVxGDm89ketmY9+noFHYWWuH9nagRyYxHnGeS2db7QgnOBGYqzIJUVa5yksmnpVzKgffsW9W95sbZJpXNdsyIu1zOb53Saxmg4OWEjmQCy9Ad9dKokyX8FxELKgkJ5yE3WkMeoucTfJpB582ynT96nqRLPBre9Fx/OqI9Y5HERvskw4ZmLrHpJkVFsJ10QAtDitNDNLc+89xrqCakLdmIMgHU39JaPHsD2eKoVGZVsarOzIHagqzYaqtHOTUX/rDBqNhwUMJh8gIqKPTuKwXuqHq6FtJLXvI+ZgLatb+nx3uWqXlcAjotNWjqeL7lxHTjM+/i2fb5SIuhFd9HDFpfvJ6Bc6SFbIAlC6vQ1wCZFjBthKPg1bQsHxLg/EyI6xwMC+GSO6F2uAMSgo6wc74kgaUCMIaOtORKSXgOFigLvINPBiN/C4WqvStE+jjESfbM7lPHB8v8oteG/fFzwMbD8Lxf/ry4e+Bkp5L97OOeThfST2xHXYx0BS3WgrXgNH1/AlK7k/SWDUX41tegtAbJnUGINtwnvsWtGpHVXn523kRDLENpCd+/6mhf8ipknlEdJ29feWCESbA3KFGw7yoYSClSXQjKw1VfpP4/Bm+dPRYNHFWMF/XOam1UPQ/lSvkwcCumBi/D5wCgq8bhJ7uY3o4dAXSU6tnt731bh05WwvgKfD7Ef6VQ85ot11C7qWNAemmRg/Gg0r++2faxGL2rjMNSmPH5qi9/fHkZFw0PWAqzYuWP72ZiK/9OLMwWeY550ePJpKfYGOpegoag6Ae1AHdylACZayAgYr8dm6awzurKtcNKJIGFlsCcYIvz5JBgQbGd0Ndk33+u+zKrwNiMjtYpJai0Pa6qA7fYQ4VPhu41e6eK+o0gajW/6k55jEWPc3YGUXwj9c8B0qOIOotTLvBQRxT5mcu1fw9GPLlrA20xL3xVWptnT3zZPj+M3NImb3yOwEdoIh7Xzbvv6+fX95dNr8PBRWXbkLWQr9nGVaa8SOiQz+VMqnK0NnXERZukvJ4YY+GGKzuTBIAir1+j4DRdlYArGEfRLchn38UXgRzQKLxvWEGPaTcIf3K74ZYlWgDqEHqPX8QZOJE14Q9SHeABmkhkVdVKnI9rOZzsYth1nDC/Qa5swl3W8S0bOCWWdTStzzsInBrwmxPugmltm/LwTbrB/jpTABbyh7IpUAZtugolCyWhp4El75CEHDvdX00WL9+aPhx8P/wJQSwMEFAAAAAgAAJCfTzFxU5nRBQAAgSgAABUAAABwY2JfZXhhbXBsZS5raWNhZF9zY2jtWW1v2zYQ/uz+CkIfBjuoFZLya4Ci6Jp2xdoCRVr0qyBLtMNFIgVJTuJ92G/fkdSr47hZbMndsAAxJIrkPXe6e+7E699w3wvc1L9+0evfsiTlUiCK6RgTMhrA2IoJlniZTJDFGExjkWc1xt1ilTW3sX60XvMAWRSbv+GOn/yP6OmxFzPY/c1I32U8C5m7CKV/86KX3yLry9tf0WcZ8CWgzZSwX9B7b5EUd+/EigsGuwxRxAWPvBCxey+KQ6b27PV9GcWe2CBL3SopIV+46SZayDCFO3OFrEt2y312cWWpNTEXrlhHC9AObnv9ax4wtGGp2nBQTvAiZh7L5TJlGcLlY3bvh+uAuctERm7KIySkHodVCxkVO/WluvWSoByIEwn2yADsFVuyhAmfWXBtaSlehqiNHYowmmtRIGe5ZH6mQfT6SykyfQVK8T8ZIjad6h89VwPrVQqUkr574bopBR9ZwnspszjhIgMppZAhsafT2SGSmq9ll+BLL/PSa8aU4L8a6rUoEwIl4bFyTWVUlvIUAqUj4TfcvWGbO5kEqRKOEpaq/44hLGN3ycMMgkeBcM9alVzE75WLXWIkJbCzJ1YhM+vSzEu0v2EyQUNqj0f5hkwEyIzWBtMskTcsR3PHg+waYZsWj4GUNjFDAVt66zBrwAOVw/ocIQXbFRcVYFIABjZBsZem/JahEMjMbKgN5tgzgugU50JCJlaAqLJNX7FQ4d1bdm1Y9hHbFvB7DV0M9yGLHHPbwY90HWpl5yfSlR5bV5MJYPMgYIGrtklNHhg8TDuf3l0ekHi0Ew92LzhuKrqsxbIKmmeH855ElNuicIpji9mZjVrOCSfPQ5/46jpDLOJZxsUKBVwGrCMgX3lkf+FC5QLy6iOir96cJBmCV3Wq9nYeBPlnCH7cr58vL8zVtw/fLrpJjkpamR5jGW4q5o0LpuvfbxQD49EMDbE9ndAB0kMjezylKgzpbJIPaZ5ujOyYlA8Re0xHDai7Muwxsut+zUy52dDMsR28BVqTzZauDyblQz+PZuAQ2GDLr38SUPo3N9put22z2toLcBtfBQ/tNuqwU+wPovfHtaKJyoJDyvKpVtqa8unjv79UzDUlsx/p+ua/VCq+lUKANJm4v6nzF+5fqBEXk3tMq+LxdLXh7x3Uhk2NixJxbOPZ/yXigSVi7lTIL9zsJUq5+opGibx7ibTRYUivQPkJIAtQXx8iDkO+SLxkM1xnPEzPU/8aBs69dSZh5nm55fngJLVfKf9EtV8ZuWcXZy65f/26ozORKlqq/PHY4Uhj9/xoRKU9xbXHTngLz79ZJXItggecvwcetkkDH1bVXDW0Ex0pS7RDa4k9wKA4HBGniYzak0lHyB6vCAwvblcEtTdqsiR8nblHTd+nqQqMuvXzgv0qHzWLn6g4qOoDNUl1NlT7ZW+loLcDc00nNkWzmT03xuqvBYdq4aC6IBBxMdX0gZwn9oEeLSlIyZMa7pzYo67qCmMf8KZxW6VF9ZrAHT8wL2CJq7w3ii6qAc3eX8yw+x02gXQbboEsX2KHpUknkhsFSheigVtyzso9ePRUD67W03+4nlbruYC8Aq5vKngwxB+gF7Jif+EWPU0DP/aA1azzJ/VZc2MkRVzpsCpSTxX1TZ/dTSxlk7QgEf0WTk8idB+JXFUkQshUd1DnU3s0aaWL6ji4Jm3cgqQ6gxTtRX2oeOXiCXZcMsGzzywD1q8BcWxKD1b7uVSx5SSnaLu2COE5lOEcSBmjzinj6kDKUE2dgjQIJvbkJ2ANZx9rAOAabzgYzaG8bLvdpeXM7Tltq+QoGhC6IfAYW2y9ng6ZohvRT++MtYnnObwxPpA3Jp3zhg6jpzDHHU+Y1ssYV527Twl83mvrm3N4Q+IQhvNSi+rTutHaePBFXSOG8VMUeRyUBjGn9pQYUJBTpya1tAyK7gFF8NgekZqpjOn051LLsJwClo5mt+5WhevkjQtvxZTHl+988OJvUEsDBBQAAAAIAACQn09Z7wc9kQAAAAcBAAANAAAAc3ltLWxpYi10YWJsZZWNMQvCMBCF9/6KIziki47iqAlIqSLo5BTS9IbDNilJLBTxv3vFTRfd3se9d59MU286aky2TYcFgBwxJgoe1uVMfALpbY8gNI7kUJQyTwNjTcq2TPdIIBaPulJbvTGX63F3OhhdnZ+r92B5I2dbwx4uhyHz7wSCc4vJxTl9ilTwHl0O0ezRYyT3h/Nr+4u+LF5QSwECHgMUAAAACAAAkJ9Px/BmRLcAAAAEAgAADAAAAAAAAAABAAAApIEAAAAAZnAtbGliLXRhYmxlUEsBAh4DFAAAAAgAAJCfT0J/bJi5DwAA3TsAABUAAAAAAAAAAQAAAKSB4QAAAHBjYl9leGFtcGxlLmtpY2FkX3BjYlBLAQIeAxQAAAAIAACQn09nvhEjYgcAAK4gAAAVAAAAAAAAAAEAAACkgc0QAABwY2JfZXhhbXBsZS5raWNhZF9wcm9QSwECHgMUAAAACAAAkJ9PMXFTmdEFAACBKAAAFQAAAAAAAAABAAAApIFiGAAAcGNiX2V4YW1wbGUua2ljYWRfc2NoUEsBAh4DFAAAAAgAAJCfT1nvBz2RAAAABwEAAA0AAAAAAAAAAQAAAKSBZh4AAHN5bS1saWItdGFibGVQSwUGAAAAAAUABQA+AQAAIh8AAAAA"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"artifacts": [
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/project.zip",
"mediaType": "application/zip",
"name": "project.zip",
"sha256": "0cdbde3d00469410e7f4b3ad16697fd3b7a78f16cecdb9a1791bb4044e90659b",
"sizeBytes": 9899
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/gerbers.zip",
"mediaType": "application/zip",
"name": "gerbers.zip",
"sha256": "014eac7a333c934570537967bbc9aec133f712db8dcf3b2a96eccb3ef11b6415",
"sizeBytes": 17438
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/bom.csv",
"mediaType": "text/csv; charset=utf-8",
"name": "bom.csv",
"sha256": "ecb1d9f39c4d16a26325e2ff77539fe82193747b36252910bd8d6a0c70563858",
"sizeBytes": 225
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/pos.csv",
"mediaType": "text/csv; charset=utf-8",
"name": "pos.csv",
"sha256": "d18d420534f21940552b197a9c7f15bf8253fa44e1cdc4f2c46906a9ce2d459f",
"sizeBytes": 250
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/schematic.pdf",
"mediaType": "application/pdf",
"name": "schematic.pdf",
"sha256": "91ddee5edcae2f616b08c7bbc3eff1266d82d5a77f9643e34f2982e6147bc814",
"sizeBytes": 20762
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/board.pdf",
"mediaType": "application/pdf",
"name": "board.pdf",
"sha256": "2f99af206e0d3ab21865ad8f630bf8afd4dcb12d17fce92507823f4fd8256296",
"sizeBytes": 16520
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/board-top.svg",
"mediaType": "image/svg+xml",
"name": "board-top.svg",
"sha256": "030acd64a19a194237156164998604d5acc3226795940a0a86d5571becb174c9",
"sizeBytes": 53070
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/board-top.png",
"mediaType": "image/png",
"name": "board-top.png",
"sha256": "ad28c684d6527ac62cbd25c4228408e3b9763f471cbb2a06f2a46c58db93f82a",
"sizeBytes": 48049
},
{
"href": "https://pcb.api.williamrobinson.dev/v1/pcb/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/report.json",
"mediaType": "application/json",
"name": "report.json",
"sha256": "14b5b416d34b826e09509df76c3f170479cc4f5dbcb8b348c65f9e0e004d346f",
"sizeBytes": 4543
}
],
"board": {
"copperLayers": 2,
"footprints": 3,
"libraries": [
{
"kind": "footprint",
"name": "Resistor_SMD",
"resolved": true,
"source": "kicad"
},
{
"kind": "footprint",
"name": "LED_SMD",
"resolved": true,
"source": "kicad"
},
{
"kind": "footprint",
"name": "Connector_PinHeader_2.54mm",
"resolved": true,
"source": "kicad"
},
{
"kind": "footprint",
"name": "MountingHole",
"resolved": true,
"source": "kicad"
},
{
"kind": "symbol",
"name": "Device",
"resolved": true,
"source": "kicad"
},
{
"kind": "symbol",
"name": "Connector_Generic",
"resolved": true,
"source": "kicad"
}
],
"name": "pcb_example",
"nets": 4,
"pads": 6,
"sizeMm": {
"height": 15.1,
"width": 20.1
},
"tracks": 3,
"vias": 1,
"zones": 0
},
"checks": [
{
"code": "structure_valid",
"detail": "project contains exactly one .kicad_pro with matching .kicad_sch/.kicad_pcb",
"status": "passed"
},
{
"code": "libraries_resolved",
"detail": "6/6 referenced libraries resolved",
"status": "passed"
},
{
"code": "within_limits",
"detail": "3 footprints, 6 pads, 3 tracks, 2 copper layers",
"status": "passed"
},
{
"code": "edits_applied",
"detail": "3/3 edits applied",
"status": "passed"
},
{
"code": "erc_clean",
"detail": "0 error(s), 0 warning(s)",
"status": "passed"
},
{
"code": "drc_clean",
"detail": "0 error(s), 0 warning(s) under profile 2-layer-standard",
"status": "passed"
},
{
"code": "parity_clean",
"detail": "schematic parity was not requested",
"status": "not_checked"
},
{
"code": "outline_present",
"detail": "board outline 20.1 x 15.1 mm",
"status": "passed"
},
{
"code": "exports_generated",
"detail": "7/7 artifacts generated",
"status": "passed"
}
],
"drc": {
"errors": 0,
"parity": 0,
"unconnected": 0,
"violations": [],
"warnings": 0
},
"edits": [
{
"after": {
"trackCount": 1,
"widthMm": 0.35
},
"before": {
"trackCount": 1,
"widthsMm": "0.3"
},
"detail": "set 1 track segment(s) on net 'Net-R1_Pad2-LED1_Pad1' to 0.35 mm",
"edit": {
"kind": "set_track_width",
"net": "Net-R1_Pad2-LED1_Pad1",
"widthMm": 0.35
},
"status": "applied"
},
{
"after": {
"drillMm": 3.2,
"reference": "H1",
"requestedDrillMm": 3.2,
"x": 2,
"y": 2
},
"detail": "added mounting hole 'H1' (3.2 mm drill, closest to the requested 3.2 mm) at (2, 2) mm",
"edit": {
"drillMm": 3.2,
"kind": "add_mounting_hole",
"x": 2,
"y": 2
},
"status": "applied"
},
{
"after": {
"schematicUpdated": true,
"value": "1K"
},
"before": {
"value": "330"
},
"detail": "set Value on R1 to '1K'",
"edit": {
"field": "Value",
"kind": "set_field",
"reference": "R1",
"value": "1K"
},
"status": "applied"
}
],
"erc": {
"errors": 0,
"violations": [],
"warnings": 0
},
"expiresAt": "2026-09-11T09:47:12.000Z",
"exports": [
{
"detail": "Gerber X2 + Excellon drill, normalised for deterministic output",
"name": "gerbers.zip",
"status": "generated"
},
{
"detail": "component position file",
"name": "pos.csv",
"status": "generated"
},
{
"detail": "bill of materials",
"name": "bom.csv",
"status": "generated"
},
{
"detail": "schematic document",
"name": "schematic.pdf",
"status": "generated"
},
{
"detail": "board document",
"name": "board.pdf",
"status": "generated"
},
{
"detail": "top-side board preview",
"name": "board-top.svg",
"status": "generated"
},
{
"detail": "edited project, deterministic archive",
"name": "project.zip",
"status": "generated"
}
],
"limitations": [
"swap_footprint pin-compatibility is structural only (pad numbers and pad count); it never verifies electrical pin function or footprint land-pattern fit.",
"ERC/DRC claims are scoped to the checks actually run under the stated profile and options; this is never a DFM (design-for-manufacture) approval.",
"PDF documents embed a generation timestamp and are not byte-reproducible across runs; every other artifact is.",
"No 3D/STEP model or courtyard-with-3D check is performed (kicad-packages3d is not installed).",
"Profile rule numbers reflect typical low-cost fabricator capabilities; confirm exact capabilities with the chosen fab before ordering.",
"The fabrication profile's .kicad_dru rule file takes precedence over the project's own netclass clearances during this run's DRC; the returned project.zip restores the project's original board-setup minimums.",
"The min_silk_to_pad rule is scoped to silkscreen-vs-pad clearance only; it does not check silk-vs-silk or silk-vs-mask spacing."
],
"profile": {
"name": "2-layer-standard",
"rules": {
"copperLayers": 2,
"minAnnularRingMm": 0.13,
"minClearanceMm": 0.15,
"minCopperToEdgeMm": 0.3,
"minHoleToHoleMm": 0.25,
"minSilkToPadMm": 0.15,
"minTrackWidthMm": 0.15,
"minViaDiameterMm": 0.45,
"minViaDrillMm": 0.3
}
},
"status": "passed",
"tools": {
"kicad": "KiCad 9.0.2"
},
"truncated": false,
"warnings": []
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"$defs": {
"edit": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "move_footprint"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"rotation": {
"description": "Degrees.",
"maximum": 360,
"minimum": -360,
"type": "number"
},
"x": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
},
"y": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
}
},
"required": [
"kind",
"reference",
"x",
"y"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "rotate_footprint"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"rotation": {
"description": "Degrees.",
"maximum": 360,
"minimum": -360,
"type": "number"
}
},
"required": [
"kind",
"reference",
"rotation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "set_track_width"
},
"net": {
"description": "KiCad net name; every track on this net is resized.",
"maxLength": 256,
"minLength": 1,
"type": "string"
},
"widthMm": {
"maximum": 20,
"minimum": 0.01,
"type": "number"
}
},
"required": [
"kind",
"net",
"widthMm"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"drillMm": {
"description": "Desired drill diameter; the worker snaps this to the closest of its fixed mounting-hole footprint set and reports which one it chose.",
"maximum": 25,
"minimum": 0.01,
"type": "number"
},
"kind": {
"const": "add_mounting_hole"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"x": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
},
"y": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
}
},
"required": [
"kind",
"x",
"y",
"drillMm"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"field": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"kind": {
"const": "set_field"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"value": {
"maxLength": 1024,
"type": "string"
}
},
"required": [
"kind",
"reference",
"field",
"value"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"footprint": {
"description": "\"LibraryNickname:FootprintName\" from the shipped KiCad 9 footprint libraries or the project's own.",
"pattern": "^[A-Za-z0-9_.-]{1,64}:[A-Za-z0-9_.+-]{1,80}$",
"type": "string"
},
"kind": {
"const": "swap_footprint"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
}
},
"required": [
"kind",
"reference",
"footprint"
],
"type": "object"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"edits": {
"default": [],
"items": {
"$ref": "#/properties/input/properties/body/$defs/edit"
},
"maxItems": 50,
"type": "array"
},
"options": {
"additionalProperties": false,
"properties": {
"requireDrcClean": {
"description": "Fail the report when DRC reports errors under the profile (warnings never fail).",
"type": "boolean"
},
"requireErcClean": {
"description": "Fail the report when ERC reports errors (warnings never fail).",
"type": "boolean"
},
"schematicParity": {
"description": "Include schematic/board parity in DRC.",
"type": "boolean"
}
},
"required": [
"requireErcClean",
"requireDrcClean",
"schematicParity"
],
"type": "object"
},
"profile": {
"enum": [
"2-layer-standard",
"2-layer-fine",
"4-layer-standard"
],
"type": "string"
},
"project": {
"description": "Base64 .zip containing exactly one .kicad_pro with its .kicad_sch and .kicad_pcb (KiCad 8/9 formats), decoded size at most 8388608 bytes.",
"maxLength": 11184812,
"minLength": 4,
"pattern": "^[A-Za-z0-9+/]*={0,2}$",
"type": "string"
}
},
"required": [
"project",
"edits",
"profile",
"options"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"$defs": {
"edit": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "move_footprint"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"rotation": {
"description": "Degrees.",
"maximum": 360,
"minimum": -360,
"type": "number"
},
"x": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
},
"y": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
}
},
"required": [
"kind",
"reference",
"x",
"y"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "rotate_footprint"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"rotation": {
"description": "Degrees.",
"maximum": 360,
"minimum": -360,
"type": "number"
}
},
"required": [
"kind",
"reference",
"rotation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "set_track_width"
},
"net": {
"description": "KiCad net name; every track on this net is resized.",
"maxLength": 256,
"minLength": 1,
"type": "string"
},
"widthMm": {
"maximum": 20,
"minimum": 0.01,
"type": "number"
}
},
"required": [
"kind",
"net",
"widthMm"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"drillMm": {
"description": "Desired drill diameter; the worker snaps this to the closest of its fixed mounting-hole footprint set and reports which one it chose.",
"maximum": 25,
"minimum": 0.01,
"type": "number"
},
"kind": {
"const": "add_mounting_hole"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"x": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
},
"y": {
"description": "Millimetres in the board's coordinate system.",
"maximum": 1000,
"minimum": -1000,
"type": "number"
}
},
"required": [
"kind",
"x",
"y",
"drillMm"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"field": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"kind": {
"const": "set_field"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
},
"value": {
"maxLength": 1024,
"type": "string"
}
},
"required": [
"kind",
"reference",
"field",
"value"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"footprint": {
"description": "\"LibraryNickname:FootprintName\" from the shipped KiCad 9 footprint libraries or the project's own.",
"pattern": "^[A-Za-z0-9_.-]{1,64}:[A-Za-z0-9_.+-]{1,80}$",
"type": "string"
},
"kind": {
"const": "swap_footprint"
},
"reference": {
"description": "KiCad reference designator, e.g. \"R1\".",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,15}$",
"type": "string"
}
},
"required": [
"kind",
"reference",
"footprint"
],
"type": "object"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"artifacts": {
"items": {
"additionalProperties": false,
"properties": {
"href": {
"format": "uri",
"type": "string"
},
"mediaType": {
"maxLength": 128,
"minLength": 1,
"type": "string"
},
"name": {
"enum": [
"project.zip",
"gerbers.zip",
"bom.csv",
"pos.csv",
"schematic.pdf",
"board.pdf",
"board-top.svg",
"board-top.png",
"report.json"
],
"type": "string"
},
"sha256": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
},
"sizeBytes": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"name",
"mediaType",
"sizeBytes",
"sha256",
"href"
],
"type": "object"
},
"maxItems": 9,
"type": "array"
},
"board": {
"additionalProperties": false,
"properties": {
"copperLayers": {
"maximum": 8,
"minimum": 1,
"type": "integer"
},
"footprints": {
"maximum": 500,
"minimum": 0,
"type": "integer"
},
"libraries": {
"items": {
"additionalProperties": false,
"properties": {
"kind": {
"enum": [
"symbol",
"footprint"
],
"type": "string"
},
"name": {
"type": "string"
},
"resolved": {
"type": "boolean"
},
"source": {
"enum": [
"kicad",
"project"
],
"type": "string"
}
},
"required": [
"name",
"kind",
"source",
"resolved"
],
"type": "object"
},
"type": "array"
},
"name": {
"type": "string"
},
"nets": {
"minimum": 0,
"type": "integer"
},
"pads": {
"maximum": 4000,
"minimum": 0,
"type": "integer"
},
"sizeMm": {
"additionalProperties": false,
"properties": {
"height": {
"type": "number"
},
"width": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"tracks": {
"maximum": 20000,
"minimum": 0,
"type": "integer"
},
"vias": {
"minimum": 0,
"type": "integer"
},
"zones": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"name",
"copperLayers",
"sizeMm",
"footprints",
"pads",
"nets",
"tracks",
"vias",
"zones",
"libraries"
],
"type": "object"
},
"checks": {
"items": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"detail": {
"type": "string"
},
"status": {
"enum": [
"passed",
"failed",
"not_checked"
],
"type": "string"
}
},
"required": [
"code",
"status",
"detail"
],
"type": "object"
},
"type": "array"
},
"drc": {
"additionalProperties": false,
"properties": {
"errors": {
"minimum": 0,
"type": "integer"
},
"parity": {
"minimum": 0,
"type": "integer"
},
"unconnected": {
"minimum": 0,
"type": "integer"
},
"violations": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
},
"position": {
"additionalProperties": false,
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"type": "object"
},
"severity": {
"enum": [
"error",
"warning"
],
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"severity",
"type",
"description",
"items"
],
"type": "object"
},
"maxItems": 100,
"type": "array"
},
"warnings": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"errors",
"warnings",
"unconnected",
"parity",
"violations"
],
"type": "object"
},
"edits": {
"items": {
"additionalProperties": false,
"properties": {
"after": {
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"type": "object"
},
"before": {
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"type": "object"
},
"detail": {
"type": "string"
},
"edit": {
"$ref": "#/properties/output/properties/example/$defs/edit"
},
"status": {
"enum": [
"applied",
"rejected"
],
"type": "string"
}
},
"required": [
"edit",
"status",
"detail"
],
"type": "object"
},
"maxItems": 50,
"type": "array"
},
"erc": {
"additionalProperties": false,
"properties": {
"errors": {
"minimum": 0,
"type": "integer"
},
"violations": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
},
"position": {
"additionalProperties": false,
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"type": "object"
},
"severity": {
"enum": [
"error",
"warning"
],
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"severity",
"type",
"description",
"items"
],
"type": "object"
},
"maxItems": 100,
"type": "array"
},
"warnings": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"errors",
"warnings",
"violations"
],
"type": "object"
},
"expiresAt": {
"format": "date-time",
"type": "string"
},
"exports": {
"items": {
"additionalProperties": false,
"properties": {
"detail": {
"type": "string"
},
"name": {
"enum": [
"project.zip",
"gerbers.zip",
"bom.csv",
"pos.csv",
"schematic.pdf",
"board.pdf",
"board-top.svg",
"board-top.png",
"report.json"
],
"type": "string"
},
"status": {
"enum": [
"generated",
"failed"
],
"type": "string"
}
},
"required": [
"name",
"status",
"detail"
],
"type": "object"
},
"maxItems": 9,
"type": "array"
},
"limitations": {
"items": {
"maxLength": 4096,
"type": "string"
},
"maxItems": 16,
"type": "array"
},
"profile": {
"additionalProperties": false,
"properties": {
"name": {
"enum": [
"2-layer-standard",
"2-layer-fine",
"4-layer-standard"
],
"type": "string"
},
"rules": {
"additionalProperties": false,
"properties": {
"copperLayers": {
"maximum": 8,
"minimum": 1,
"type": "integer"
},
"minAnnularRingMm": {
"type": "number"
},
"minClearanceMm": {
"type": "number"
},
"minCopperToEdgeMm": {
"type": "number"
},
"minHoleToHoleMm": {
"type": "number"
},
"minSilkToPadMm": {
"type": "number"
},
"minTrackWidthMm": {
"type": "number"
},
"minViaDiameterMm": {
"type": "number"
},
"minViaDrillMm": {
"type": "number"
}
},
"required": [
"copperLayers",
"minTrackWidthMm",
"minClearanceMm",
"minViaDiameterMm",
"minViaDrillMm",
"minAnnularRingMm",
"minHoleToHoleMm",
"minCopperToEdgeMm",
"minSilkToPadMm"
],
"type": "object"
}
},
"required": [
"name",
"rules"
],
"type": "object"
},
"status": {
"enum": [
"passed",
"failed"
],
"type": "string"
},
"tools": {
"additionalProperties": false,
"properties": {
"kicad": {
"type": "string"
}
},
"required": [
"kicad"
],
"type": "object"
},
"truncated": {
"type": "boolean"
},
"warnings": {
"items": {
"maxLength": 4096,
"type": "string"
},
"maxItems": 100,
"type": "array"
}
},
"required": [
"status",
"tools",
"profile",
"board",
"edits",
"erc",
"drc",
"exports",
"checks",
"warnings",
"limitations",
"truncated",
"expiresAt",
"artifacts"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"builder-code": {
"info": {
"s": [
"cdp_sdk_server"
]
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"a": {
"description": "App builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"s": {
"description": "Service builder codes",
"items": {
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"maxItems": 11,
"type": "array"
},
"w": {
"description": "Wallet builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
}
},
"type": "object"
}
},
"eip2612GasSponsoring": {},
"erc20ApprovalGasSponsoring": {},
"payment-identifier": {
"info": {
"required": true
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"maxLength": 128,
"minLength": 16,
"pattern": "^[a-zA-Z0-9_-]+$",
"type": "string"
},
"required": {
"type": "boolean"
}
},
"required": [
"required"
],
"type": "object"
}
}
}Use it
curl
curl "https://pcb.api.williamrobinson.dev/v1/pcb/fabricate" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://pcb.api.williamrobinson.dev/v1/pcb/fabricate");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://pcb.api.williamrobinson.dev/v1/pcb/fabricate")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/8209.json, and this resource appears in /discovery/resources and /discovery/search.