I’m receiving The provided ssh_keys value must be an array.
, and I’ve tried various dumping of the array of ssh key ids. using API attribute described in https://developers.digitalocean.com/documentation/v2/#create-a-new-droplet.
# list of numbers
print(type(key_ids), key_ids)
<class 'list'> [12345678, 12345678]
# stringified list via `str()` or via `json.dumps()`
<class 'str'> [12345678, 12345678]
# mapping each value to string, seems unlikely since ids are returned as numbers when creating droplets... but trying many things anyway. via `list(map(lambda k: str(k), [12345678, 12345678]))`
<class 'list'> ['12345678', '12345678']
The payload looks like:
{
'name': 'mydropletname',
'region': 'sfo2',
'size': '4gb',
'image': 'ghost-18-04',
'ssh_keys': <variations of above>
}
And I’m using the following endpoint: https://api.digitalocean.com/v2/droplets
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
ok, figured it out! the issue is with formatting the params. it has to be like 'ssh_keys[]': [123]
instead of 'ssh_keys': [123]
.
following up; it also doesnt appear as if using the SSH key fingerprints matters either. for example replacing the above example’s
get_key_ids
method with:doesnt effect things either.
also! if you do
'ssh_keys': []
it isnt rejected, but any string or number value (whether valid ids/fingerprints or not!) give the exact same error message. is this because Digital Ocean doesnt want to reveal whether or not youre using a proper ID for security purposes???Hey friend,
You’ll want to get the ID for the SSH key by listing the keys first: https://developers.digitalocean.com/documentation/v2/#list-all-keys
From there just plug it in like this:
Here’s a curl string I just ran, with the API key removed, which did the job:
Jarland