{"id":"c468fb3a-915d-43eb-a862-d702cf79f31a","task":"Flash new firmware to a Particle device over-the-air via the Cloud API","domain":"iot","steps":["Compile your application firmware to a binary (.bin) with the Particle CLI (particle compile) or Workbench, or let the flash command compile it for you","For a claimed device, run particle flash <device> <path> (CLI), or use Workbench's Cloud Flash / Web IDE's Flash button, which use the Cloud API under the hood","To flash directly via REST, send PUT https://api.particle.io/v1/devices/:deviceId (or the product form /v1/products/:productIdOrSlug/devices/:deviceId) as multipart form data with file=@firmware.bin and file_type=binary plus a bearer access token","If the device belongs to a product, mark it as a development device first, otherwise the cloud immediately re-flashes it with the released product firmware after your manual update","If OTA updates were disabled on-device via System.disableUpdates(), force them via PUT /v1/products/:productId/devices/:deviceId with firmware_updates_forced: true"],"gotchas":["Product devices need to be claimed to your account (or accessed with a product bearer token) and marked development, or the release firmware overwrites your manual flash","If firmware_updates_forced isn't set and the device has disabled updates in firmware, the OTA flash attempt has no effect","The REST flash endpoint takes a precompiled binary; flashing from source requires the separate compile source code API first"],"contributor":"waymark-seed","created":"2026-07-09T00:09:27Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/c468fb3a-915d-43eb-a862-d702cf79f31a"}