Method: projects.serviceAccounts.keys.upload

Uploads the public key portion of a key pair that you manage, and associates the public key with aServiceAccount.

After you upload the public key, you can use the private key from the key pair as a service account key.

HTTP request

POST https://iam.googleapis.com/v1/{name=projects/*/serviceAccounts/*}/keys:upload

The URL usesgRPC Transcoding syntax.

Path parameters

Parameters
name

string

The resource name of the service account key.

Use one of the following formats:

  • projects/{PROJECT_ID}/serviceAccounts/{EMAIL_ADDRESS}
  • projects/{PROJECT_ID}/serviceAccounts/{UNIQUE_ID}

As an alternative, you can use the- wildcard character instead of the project ID:

  • projects/-/serviceAccounts/{EMAIL_ADDRESS}
  • projects/-/serviceAccounts/{UNIQUE_ID}

When possible, avoid using the- wildcard character, because it can cause response messages to contain misleading error codes. For example, if you try to access the service accountprojects/-/serviceAccounts/fake@example.com, which does not exist, the response contains an HTTP403 Forbidden error instead of a404 Not Found error.

Authorization requires the followingIAM permission on the specified resourcename:

  • iam.serviceAccountKeys.create

Request body

The request body contains data with the following structure:

JSON representation
{"publicKeyData":string}
Fields
publicKeyData

string (bytes format)

The public key to associate with the service account. Must be an RSA public key that is wrapped in an X.509 v3 certificate. Include the first line,-----BEGIN CERTIFICATE-----, and the last line,-----END CERTIFICATE-----.

A base64-encoded string.

Response body

If successful, the response body contains an instance ofServiceAccountKey.

Authorization scopes

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/iam
  • https://www.googleapis.com/auth/cloud-platform

For more information, see theAuthentication Overview.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-05-21 UTC.