{"type":"api","title":"Create Organization Inventory Devices Swaps Bulk","meta":{"id":"/apps/pubhub/media/Meraki-Dashboard-API-v1-Documentation/9d30a16886a116eb6fb996e5d66f67d0df0da886/28b52581-f438-3451-9ea2-e3d65df40b84","info":{"title":"Meraki Dashboard API","description":"A RESTful API to programmatically manage and monitor Cisco Meraki networks at scale.\n\n\u003e Date: 16 October, 2026\n\u003e\n\u003e [Recent Updates](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n","contact":{"name":"Meraki Developer Community","url":"https://meraki.io/community"},"version":"v1.75.1"},"security":[{"meraki_api_key":[]},{"bearerAuth":[]}],"tags":[{"name":"organizations"},{"name":"networks"},{"name":"devices"},{"name":"insight"},{"name":"wireless"},{"name":"camera"},{"name":"appliance"},{"name":"switch"},{"name":"cellularGateway"},{"name":"sm"},{"name":"sensor"},{"name":"administered"},{"name":"campusGateway"},{"name":"wirelessController"},{"name":"spaces"},{"name":"accessControlLists"},{"name":"accessPolicies"},{"name":"account"},{"name":"accounts"},{"name":"acls"},{"name":"actionBatches"},{"name":"adaptivePolicy"},{"name":"adaptivePolicyGroups"},{"name":"addresses"},{"name":"admins"},{"name":"aggregated"},{"name":"airMarshal"},{"name":"alertTypes"},{"name":"alerts"},{"name":"allowlist"},{"name":"alternateManagementInterface"},{"name":"analytics"},{"name":"api"},{"name":"apiRequests"},{"name":"apnsCert"},{"name":"appliances"},{"name":"applicationCategories"},{"name":"applicationUsage"},{"name":"applications"},{"name":"areas"},{"name":"arpInspection"},{"name":"arpTable"},{"name":"artifacts"},{"name":"assets"},{"name":"assignments"},{"name":"authenticationToken"},{"name":"authorities"},{"name":"autoLocate"},{"name":"autoRf"},{"name":"availabilities"},{"name":"bands"},{"name":"bandwidthUsageHistory"},{"name":"bgp"},{"name":"billing"},{"name":"blink"},{"name":"bluetooth"},{"name":"bluetoothClients"},{"name":"bonjourForwarding"},{"name":"boundaries"},{"name":"brandingPolicies"},{"name":"bulk"},{"name":"bulkCreate"},{"name":"bulkDelete"},{"name":"bulkUpdate"},{"name":"byBoundary"},{"name":"byClient"},{"name":"byCluster"},{"name":"byDevice"},{"name":"byEnergyUsage"},{"name":"byGroup"},{"name":"byInterval"},{"name":"byMetric"},{"name":"byModel"},{"name":"byNetwork"},{"name":"byPipeline"},{"name":"bySite"},{"name":"bySsid"},{"name":"byStatus"},{"name":"bySwitch"},{"name":"byType"},{"name":"byUsage"},{"name":"byUtilization"},{"name":"byVlan"},{"name":"bypassActivationLockAttempts"},{"name":"cableTest"},{"name":"callbacks"},{"name":"captures"},{"name":"categories"},{"name":"cellular"},{"name":"cellularFirewallRules"},{"name":"cellularUsageHistory"},{"name":"certificates"},{"name":"certs"},{"name":"changeHistory"},{"name":"channelUtilization"},{"name":"channelUtilizationHistory"},{"name":"channels"},{"name":"claim"},{"name":"claimKey"},{"name":"clientCountHistory"},{"name":"clients"},{"name":"clusters"},{"name":"commands"},{"name":"communicationPlans"},{"name":"compliance"},{"name":"configTemplates"},{"name":"configurationChanges"},{"name":"configure"},{"name":"configuredDevices"},{"name":"connectionStats"},{"name":"connections"},{"name":"connectivity"},{"name":"connectivityEvents"},{"name":"connectivityMonitoringDestinations"},{"name":"connectors"},{"name":"contentFiltering"},{"name":"controller"},{"name":"coterm"},{"name":"cpu"},{"name":"crls"},{"name":"current"},{"name":"customAnalytics"},{"name":"customPerformanceClasses"},{"name":"cycle"},{"name":"dailyConsumerMetrics"},{"name":"data"},{"name":"dataRateHistory"},{"name":"delegated"},{"name":"deltas"},{"name":"deployable"},{"name":"deployed"},{"name":"deployments"},{"name":"desktopLogs"},{"name":"details"},{"name":"detections"},{"name":"deviceCategories"},{"name":"deviceCommandLogs"},{"name":"deviceProfiles"},{"name":"deviceTypeGroupPolicies"},{"name":"dhcp"},{"name":"dhcpServerPolicy"},{"name":"discovery"},{"name":"disenrollments"},{"name":"dns"},{"name":"domains"},{"name":"doorLocks"},{"name":"downloadUrl"},{"name":"dscpTaggingOptions"},{"name":"dscpToCosMappings"},{"name":"eapOverride"},{"name":"earlyAccess"},{"name":"electronicShelfLabel"},{"name":"eligible"},{"name":"enrollments"},{"name":"entitlements"},{"name":"entries"},{"name":"eox"},{"name":"esims"},{"name":"ethernet"},{"name":"eventTypes"},{"name":"events"},{"name":"failedConnections"},{"name":"failover"},{"name":"features"},{"name":"fields"},{"name":"firewall"},{"name":"firewalledServices"},{"name":"firmware"},{"name":"firmwareUpgrades"},{"name":"floorPlans"},{"name":"gateways"},{"name":"geolocations"},{"name":"global"},{"name":"group"},{"name":"groupPolicies"},{"name":"groups"},{"name":"health"},{"name":"healthByTime"},{"name":"historical"},{"name":"history"},{"name":"hotspot20"},{"name":"httpServers"},{"name":"httpsInspection"},{"name":"httpsi"},{"name":"identities"},{"name":"identityPsks"},{"name":"idps"},{"name":"impacted"},{"name":"impactedDevice"},{"name":"inboundCellularFirewallRules"},{"name":"inboundFirewallRules"},{"name":"integrate"},{"name":"integration"},{"name":"integrations"},{"name":"interfaces"},{"name":"internetPolicies"},{"name":"intrusion"},{"name":"inventory"},{"name":"ipsec"},{"name":"ipv6"},{"name":"isolation"},{"name":"jobs"},{"name":"keys"},{"name":"l2"},{"name":"l3"},{"name":"l3FirewallRules"},{"name":"l7FirewallRules"},{"name":"lan"},{"name":"latencyHistory"},{"name":"latencyStats"},{"name":"latest"},{"name":"leds"},{"name":"licenses"},{"name":"licensing"},{"name":"lines"},{"name":"linkAggregations"},{"name":"linkLayer"},{"name":"live"},{"name":"liveTools"},{"name":"lldpCdp"},{"name":"load"},{"name":"local"},{"name":"localOverrides"},{"name":"location"},{"name":"loginSecurity"},{"name":"logs"},{"name":"lookups"},{"name":"lossAndLatencyHistory"},{"name":"macTable"},{"name":"malware"},{"name":"managementInterface"},{"name":"manufacturers"},{"name":"masks"},{"name":"mdns"},{"name":"me"},{"name":"memory"},{"name":"merakiAuthUsers"},{"name":"meshStatuses"},{"name":"migrations"},{"name":"mode"},{"name":"models"},{"name":"monitor"},{"name":"monitoredMediaServers"},{"name":"moves"},{"name":"mqtt"},{"name":"mqttBrokers"},{"name":"mtu"},{"name":"multicast"},{"name":"multicastForwarding"},{"name":"multicastRouting"},{"name":"nat"},{"name":"netflow"},{"name":"networkAdapters"},{"name":"networkHealth"},{"name":"objectDetectionModels"},{"name":"onboarding"},{"name":"oneToManyNatRules"},{"name":"oneToOneNatRules"},{"name":"openRoaming"},{"name":"openapiSpec"},{"name":"optIns"},{"name":"order"},{"name":"orders"},{"name":"ospf"},{"name":"override"},{"name":"overrides"},{"name":"overview"},{"name":"overviews"},{"name":"owe"},{"name":"packetCapture"},{"name":"packetLoss"},{"name":"packets"},{"name":"payloadTemplates"},{"name":"peers"},{"name":"performance"},{"name":"performanceHistory"},{"name":"permissions"},{"name":"pii"},{"name":"piiKeys"},{"name":"ping"},{"name":"pingDevice"},{"name":"pipelines"},{"name":"policies"},{"name":"policy"},{"name":"policyObjects"},{"name":"portForwardingRules"},{"name":"portSchedules"},{"name":"ports"},{"name":"power"},{"name":"powerModules"},{"name":"prefixes"},{"name":"priorities"},{"name":"profiles"},{"name":"provisioning"},{"name":"qosRules"},{"name":"qualityAndRetention"},{"name":"qualityRetentionProfiles"},{"name":"radio"},{"name":"radsec"},{"name":"ratePlans"},{"name":"readings"},{"name":"receivers"},{"name":"recent"},{"name":"records"},{"name":"redundancy"},{"name":"regions"},{"name":"relationships"},{"name":"rendezvousPoints"},{"name":"requests"},{"name":"responseCodes"},{"name":"rest"},{"name":"restrictions"},{"name":"rfProfiles"},{"name":"roles"},{"name":"rollbacks"},{"name":"routing"},{"name":"routingTable"},{"name":"rrm"},{"name":"ruleGroups"},{"name":"rules"},{"name":"rulesets"},{"name":"saml"},{"name":"samlRoles"},{"name":"sase"},{"name":"scanning"},{"name":"schedules"},{"name":"sdwan"},{"name":"search"},{"name":"security"},{"name":"securityCenters"},{"name":"seen"},{"name":"sense"},{"name":"sentry"},{"name":"servers"},{"name":"serviceProviders"},{"name":"settings"},{"name":"signalQualityHistory"},{"name":"sims"},{"name":"singleLan"},{"name":"siteToSite"},{"name":"siteToSiteVpn"},{"name":"sites"},{"name":"slas"},{"name":"smDevicesForKey"},{"name":"smOwnersForKey"},{"name":"snmp"},{"name":"softwares"},{"name":"splash"},{"name":"splashAuthorizationStatus"},{"name":"splashLoginAttempts"},{"name":"split"},{"name":"ssids"},{"name":"stacks"},{"name":"staged"},{"name":"stages"},{"name":"staticRoutes"},{"name":"statics"},{"name":"stats"},{"name":"status"},{"name":"statuses"},{"name":"stormControl"},{"name":"stp"},{"name":"subnetPool"},{"name":"subnets"},{"name":"subscription"},{"name":"subscriptions"},{"name":"summaries"},{"name":"summary"},{"name":"summaryConsumerMetrics"},{"name":"sustainability"},{"name":"swap"},{"name":"swaps"},{"name":"switches"},{"name":"syslog"},{"name":"syslogServers"},{"name":"system"},{"name":"targetGroups"},{"name":"targets"},{"name":"taxonomy"},{"name":"themes"},{"name":"thirdPartyVPNPeers"},{"name":"throughputTest"},{"name":"top"},{"name":"topology"},{"name":"towers"},{"name":"traffic"},{"name":"trafficAnalysis"},{"name":"trafficHistory"},{"name":"trafficShaping"},{"name":"transceivers"},{"name":"trustedAccessConfigs"},{"name":"trustedServers"},{"name":"tunnelable"},{"name":"tunneling"},{"name":"types"},{"name":"umbrella"},{"name":"update"},{"name":"upgrades"},{"name":"uplink"},{"name":"uplinkBandwidth"},{"name":"uplinkSelection"},{"name":"uplinks"},{"name":"uplinksLossAndLatency"},{"name":"usage"},{"name":"usageHistories"},{"name":"usageHistory"},{"name":"userAccessDevices"},{"name":"utilization"},{"name":"v4"},{"name":"video"},{"name":"videoLink"},{"name":"vlanAssignments"},{"name":"vlanProfiles"},{"name":"vlans"},{"name":"vmx"},{"name":"vpn"},{"name":"vpnExclusions"},{"name":"vpnFirewallRules"},{"name":"vppAccounts"},{"name":"vrfs"},{"name":"wakeOnLan"},{"name":"warmSpare"},{"name":"warnings"},{"name":"webhookTests"},{"name":"webhooks"},{"name":"wirelessControllers"},{"name":"wirelessProfiles"},{"name":"wlanLists"},{"name":"xdr"},{"name":"zigbee"},{"name":"zones"}],"x-parser-conf":{"exampleAsDefault":true,"expand":3,"groupBy":{"$remoteModule":"config/group_platform.js"},"httpBearer":{"bearerToken":"75dd5334bef4d2bc96f26138c163c0a3fa0b5ca6"},"labelConfig":{"endpoint":{"field":"operationId","format":"startCase"}},"meta":{"useProxy":true},"overview":{"markdownPath":"docs/overview.md"},"sampleCode":{"python":{"folder":"meraki/sdk/python","highlight":"python","name":"Meraki Python Library"}},"serverConfig":true,"sortBy":{"$remoteModule":"config/sort_by.js"},"theme":"meraki","variables":{"networkId":"N_784752235069315754","organizationId":"1215707","serial":"QBSB-VQ3J-XZ54"}},"openapi":"3.0.1","servers":[{"url":"https://api.meraki.com/{basePath}","variables":{"basePath":{"default":"api/v1"}}}],"securitySchemes":{"meraki_api_key":{"type":"apiKey","name":"X-Cisco-Meraki-API-Key","in":"header"},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key"},"oauth2":{"type":"oauth2","description":"This API uses OAuth 2 with the authorization code grant flow. [More info](https://developer.cisco.com/meraki/api-v1/authorization/)","flows":{"authorizationCode":{"authorizationUrl":"https://as.meraki.com/oauth/authorize","tokenUrl":"https://as.meraki.com/oauth/token","scopes":{"camera:config:read":"Cameras (MV)","camera:config:write":"Cameras (MV)","camera:telemetry:read":"Cameras (MV)","camera:telemetry:write":"Cameras (MV)","dashboard:general:config:read":"Entire dashboard, excluding identity and access management","dashboard:general:config:write":"Entire dashboard, excluding identity and access management","dashboard:general:telemetry:read":"Entire dashboard, excluding identity and access management","dashboard:general:telemetry:write":"Entire dashboard, excluding identity and access management","dashboard:iam:config:read":"Dashboard related to identity and access management, including early access features","dashboard:iam:config:write":"Dashboard related to identity and access management, including early access features","dashboard:iam:telemetry:read":"Dashboard related to identity and access management, including early access features","dashboard:iam:telemetry:write":"Dashboard related to identity and access management, including early access features","dashboard:licensing:config:read":"Licensing","dashboard:licensing:config:write":"Licensing","dashboard:licensing:telemetry:read":"Licensing","dashboard:licensing:telemetry:write":"Licensing","iot:gateway:general:config:read":"Sensor Connect (IoT Control)","iot:gateway:general:config:write":"Sensor Connect (IoT Control)","iot:gateway:general:telemetry:read":"Sensor Connect (IoT Control)","iot:gateway:general:telemetry:write":"Sensor Connect (IoT Control)","iot:gateway:onboarding:config:read":"Sensor Connect (IoT Onboarding)","iot:gateway:onboarding:config:write":"Sensor Connect (IoT Onboarding)","policy:config:read":"Provides granular authorization over all global policy resources including policy objects, adaptive policy, and Organization Group Policy","policy:config:write":"Provides granular authorization over all global policy resources including policy objects, adaptive policy, and Organization Group Policy","policy:telemetry:read":"Provides granular authorization over all global policy resources including policy objects, adaptive policy, and Organization Group Policy","policy:telemetry:write":"Provides granular authorization over all global policy resources including policy objects, adaptive policy, and Organization Group Policy","sdwan:config:read":"Secure SD-WAN (MX including MXIGZ)","sdwan:config:write":"Secure SD-WAN (MX including MXIGZ)","sdwan:telemetry:read":"Secure SD-WAN (MX including MXIGZ)","sdwan:telemetry:write":"Secure SD-WAN (MX including MXIGZ)","sensor:config:read":"Sensors (MT)","sensor:config:write":"Sensors (MT)","sensor:telemetry:read":"Sensors (MT)","sensor:telemetry:write":"Sensors (MT)","sm:config:read":"Endpoint Management (SM)","sm:config:write":"Endpoint Management (SM)","sm:telemetry:read":"Endpoint Management (SM)","sm:telemetry:write":"Endpoint Management (SM)","switch:config:read":"Switches (MS)","switch:config:write":"Switches (MS)","switch:telemetry:read":"Switches (MS)","switch:telemetry:write":"Switches (MS)","wireless:config:read":"Wireless (MR)","wireless:config:write":"Wireless (MR)","wireless:telemetry:read":"Wireless (MR)","wireless:telemetry:write":"Wireless (MR)"}}}}}},"spec":{"description":"Swap the devices identified by devices.old with a devices.new, then perform the :afterAction on the devices.old.","operationId":"createOrganizationInventoryDevicesSwapsBulk","parameters":[{"name":"organizationId","in":"path","description":"Organization ID","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"swaps":{"type":"array","items":{"type":"object","properties":{"devices":{"type":"object","properties":{"old":{"type":"string","description":"The serial of the device to be cloned."},"new":{"type":"string","description":"The serial of the device that the old device's settings will be cloned to."}},"required":["old","new"],"description":"The devices involved in the swap."},"afterAction":{"type":"string","enum":["release from organization inventory","remove from network"],"description":"What action to perform on devices.old after the device cloning is complete. 'remove from network' will return the device to inventory, while 'release from organization inventory' will free up the license attached to the device."}},"required":["devices","afterAction"]},"description":"List of replacments to perform"}},"example":{"swaps":[{"devices":{"old":"Q234-ABCD-5678","new":"Q234-ABCD-5678"},"afterAction":"remove from network"}]},"required":["swaps"]}}},"required":true},"responses":{"207":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","description":"The ID of the job that was used to create all of the device swaps."},"swaps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Swap Request ID"},"devices":{"type":"object","properties":{"old":{"type":"object","properties":{"mac":{"type":"string","description":"MAC address of the device"},"serial":{"type":"string","description":"Serial number of device"},"model":{"type":"string","description":"Model name for device"},"name":{"type":"string","description":"Customized name for device, or MAC address"}},"required":["mac","serial","model"],"description":"The device that will be cloned"},"new":{"type":"object","properties":{"mac":{"type":"string","description":"MAC address of the device"},"serial":{"type":"string","description":"Serial number of device"},"model":{"type":"string","description":"Model name for device"},"name":{"type":"string","description":"Customized name for device, or MAC address"}},"required":["mac","serial","model"],"description":"The device that will have settings cloned to"}},"required":["old","new"],"description":"The devices involved in the swap"},"status":{"type":"string","enum":["complete","failed","pending"],"description":"The current status of the swap job."},"afterAction":{"type":"string","enum":["release from organization inventory","remove from network"],"description":"An action to perform on the devices.old object after swap is complete."},"createdAt":{"type":"string","description":"An iso8601 timestamp for the creation of the swap request."},"completedAt":{"type":"string","description":"An iso8601 timestamp for when the swap completed or failed."},"errors":{"type":"array","items":{"type":"string"},"description":"A list of error messages for why a swap failed."}},"required":["id","devices","status","afterAction","createdAt"]},"description":"An array of recent swap requests and their statuses."}}},"example":{"jobId":"1284392014819","swaps":[{"id":"1284392014819","devices":{"old":{"mac":"00:11:22:33:44:55","serial":"Q234-ABCD-5678","model":"MR34","name":"My AP"},"new":{"mac":"00:11:22:33:44:55","serial":"Q234-ABCD-5678","model":"MR34","name":"My AP"}},"status":"complete","afterAction":"remove from network","createdAt":"2023-04-24T12:40:11Z","completedAt":"2023-04-24T12:40:12Z","errors":[]}]}}}}},"security":[{"oauth2":["dashboard:general:config:write"]}],"summary":"Swap the devices identified by devices.old with a devices.new, then perform the :afterAction on the devices.old.","tags":["organizations","configure","inventory","devices","swaps","bulk"],"__originalOperationId":"createOrganizationInventoryDevicesSwapsBulk","method":"post","path":"/organizations/{organizationId}/inventory/devices/swaps/bulk","sampleCode":{"Meraki Python Library":{"code":"import meraki\n\n# Defining your API key as a variable in source code is discouraged.\n# This API key is for a read-only docs-specific environment.\n# In your own code, use an environment variable as shown under the Usage section\n# @ https://github.com/meraki/dashboard-api-python/\n\nAPI_KEY = 'your-key-here'\n\ndashboard = meraki.DashboardAPI(API_KEY)\n\norganization_id = '549236'\nswaps = [{'devices': {'old': 'Q234-ABCD-5678', 'new': 'Q234-ABCD-5678'}, 'afterAction': 'remove from network'}]\n\nresponse = dashboard.organizations.createOrganizationInventoryDevicesSwapsBulk(\n organization_id, swaps\n)\n\nprint(response)","highlight":"python"}}}}