GitHub v3 REST API

Re-run a workflow

DEPRECATED

Re-runs your workflow run using its id. You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the actions:write permission to use this endpoint.

post
{protocol}://{hostname}/api/v3/repos/{owner}/{repo}/actions/runs/{run_id}/rerun

Path Parameters

ownerstringrequired
repostringrequired
run_idintegerrequired

The id of the workflow run.

Response

201 application/json

Response

object
* Additional properties are NOT allowed.
post/repos/{owner}/{repo}/actions/runs/{run_id}/rerun
 
201 application/json

List repository secrets

Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the secrets repository permission to use this endpoint.

get
{protocol}://{hostname}/api/v3/repos/{owner}/{repo}/actions/secrets

Query Parameters

per_pageinteger

Results per page (max 100)

Default:30

pageinteger

Page number of the results to fetch.

Default:1

Path Parameters

ownerstringrequired
repostringrequired

Response

200 application/json

Response

total_countintegerrequired
secretsarray[object]required

Set secrets for GitHub Actions.

Show Child Parameters
get/repos/{owner}/{repo}/actions/secrets
 
200 application/json

Get a repository public key

Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the repo scope. GitHub Apps must have the secrets repository permission to use this endpoint.

get
{protocol}://{hostname}/api/v3/repos/{owner}/{repo}/actions/secrets/public-key

Path Parameters

ownerstringrequired
repostringrequired

Response

200 application/json

Response

ActionsPublicKey

The public key used for setting Actions Secrets.

key_idstringrequired

The identifier for the key.

Example:1234567

keystringrequired

The Base64 encoded public key.

Example:hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs=

idinteger

Example:2

urlstring

Example:https://api.github.com/user/keys/2

titlestring

Example:ssh-rsa AAAAB3NzaC1yc2EAAA

created_atstring

Example:2011-01-26T19:01:12Z

get/repos/{owner}/{repo}/actions/secrets/public-key
 
200 application/json

Get a repository secret

Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the secrets repository permission to use this endpoint.

get
{protocol}://{hostname}/api/v3/repos/{owner}/{repo}/actions/secrets/{secret_name}

Path Parameters

ownerstringrequired
repostringrequired
secret_namestringrequired

secret_name parameter

Response

200 application/json

Response

Actions Secret

Set secrets for GitHub Actions.

namestringrequired

The name of the secret.

Example:SECRET_TOKEN

created_atstring(date-time)required
updated_atstring(date-time)required
get/repos/{owner}/{repo}/actions/secrets/{secret_name}
 
200 application/json

Create or update a repository secret

Creates or updates a repository secret with an encrypted value. Encrypt your secret using
LibSodium. You must authenticate using an access
token with the repo scope to use this endpoint. GitHub Apps must have the secrets repository permission to use
this endpoint.

Example encrypting a secret using Node.js

Encrypt your secret using the tweetsodium library.

const sodium = require('tweetsodium');

const key = "base64-encoded-public-key";
const value = "plain-text-secret";

// Convert the message and key to Uint8Array's (Buffer implements that interface)
const messageBytes = Buffer.from(value);
const keyBytes = Buffer.from(key, 'base64');

// Encrypt using LibSodium.
const encryptedBytes = sodium.seal(messageBytes, keyBytes);

// Base64 the encrypted secret
const encrypted = Buffer.from(encryptedBytes).toString('base64');

console.log(encrypted);

Example encrypting a secret using Python

Encrypt your secret using pynacl with Python 3.

from base64 import b64encode
from nacl import encoding, public

def encrypt(public_key: str, secret_value: str) -> str:
  """Encrypt a Unicode string using the public key."""
  public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
  sealed_box = public.SealedBox(public_key)
  encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
  return b64encode(encrypted).decode("utf-8")

Example encrypting a secret using C#

Encrypt your secret using the Sodium.Core package.

var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");

var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);

Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));

Example encrypting a secret using Ruby

Encrypt your secret using the rbnacl gem.

require "rbnacl"
require "base64"

key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
public_key = RbNaCl::PublicKey.new(key)

box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
encrypted_secret = box.encrypt("my_secret")

# Print the base64 encoded secret
puts Base64.strict_encode64(encrypted_secret)
put
{protocol}://{hostname}/api/v3/repos/{owner}/{repo}/actions/secrets/{secret_name}

Path Parameters

ownerstringrequired
repostringrequired
secret_namestringrequired

secret_name parameter

Body

application/json
encrypted_valuestring

Value for your secret, encrypted with LibSodium using the public key retrieved from the Get a repository public key endpoint.

Match pattern:^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$

key_idstring

ID of the key you used to encrypt the secret.

Response

application/json

Response when creating a secret

object
* Additional properties are NOT allowed.
put/repos/{owner}/{repo}/actions/secrets/{secret_name}

Body

{ "encrypted_value": "c2VjcmV0", "key_id": "012345678912345678" }
 
application/json