> For the complete documentation index, see [llms.txt](https://docs.defguard.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.defguard.net/for-developers/rest-api/core/device/add-a-device-for-a-user.md).

# Add a device for a user

The device is added to every location. `wireguard_pubkey` has to be unique. Devices of disabled users can only be added by an admin.

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"tags":[{"name":"device","description":"User devices and their WireGuard configuration."}],"security":[{"cookie":[]},{"api_token":[]}],"components":{"securitySchemes":{"cookie":{"type":"apiKey","in":"cookie","name":"defguard_session"},"api_token":{"type":"http","scheme":"bearer"}},"schemas":{"AddDevice":{"type":"object","required":["name","wireguard_pubkey"],"properties":{"name":{"type":"string"},"wireguard_pubkey":{"type":"string"}}},"AddDeviceResult":{"type":"object","required":["configs","device"],"properties":{"configs":{"type":"array","items":{"$ref":"#/components/schemas/DeviceConfig"}},"device":{"$ref":"#/components/schemas/Device_i64"}}},"DeviceConfig":{"type":"object","required":["network_id","network_name","config","address","endpoint","allowed_ips","pubkey","keepalive_interval","location_mfa_mode","service_location_mode"],"properties":{"address":{"type":"array","items":{"type":"string"}},"allowed_ips":{"type":"array","items":{"type":"string"}},"config":{"type":"string"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"i64":{"type":"integer","format":"int64"},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"ApiErrorResponse":{"type":"object","description":"Body returned with error responses.","required":["msg"],"properties":{"code":{"type":["string","null"],"description":"Machine-readable error code, returned for selected errors."},"msg":{"type":"string","description":"Human-readable error message."}}}}},"paths":{"/api/v1/device/{device_id}":{"post":{"tags":["device"],"summary":"Add a device for a user","description":"The device is added to every location. `wireguard_pubkey` has to be unique. Devices of\ndisabled users can only be added by an admin.","operationId":"add_device","parameters":[{"name":"device_id","in":"path","description":"Name of the user the device is created for.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDevice"}}},"required":true},"responses":{"201":{"description":"Device added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDeviceResult"}}}},"400":{"description":"No networks are configured, or a device with this public key already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Session is missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Requires admin privileges or the request must target your own account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"User not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Unable to add device.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
