Search code examples
gitgithubgithub-api

Create Github repository from API


Please provide working code that creates a Github repository using the API.

I have tried different versions of the following:

curl 'https://api.github.com/users/repos?client_id= myusername&client_secret=abcdefghijklmnopqrstuvwxyz1234567890abcd'
curl -u 'myusername' https://api.github.com/users/repos -d '{"name":"my-new-repo"}'

But I always get the following error:

"{
  \"message\": \"Bad credentials\",
  \"documentation_url\": \"https://developer.github.com/v3\"
}"

Solution

  • The following works:

    (without variables)
    curl -H "Authorization: token abcdefghijklmnopqrstuvwxyz1234567890abcd" 
      --data '{"name":"name-foo"}' https://api.github.com/user/repos
    
    (with variables)
    NAME='name-foo'
    TOK='abcdefghijklmnopqrstuvwxyz1234567890abcd'
    BASE='https://api.github.com/'
    EXT='user/repos'
    URL=$BASE$EXT
    curl -H "Authorization: token $TOK" --data "{\"name\":\"$NAME\"}" $URL
    

    One can use personal access tokens instead of OAuth.

    The YOUR_TOKEN value in the "Authorization: token YOUR_TOKEN" section of the curl command can be obtained as follows.

    1. Upper right corner, click User
    2. Settings
    3. Personal Access Tokens
    4. For scopes, select Repos.
    5. Create New Token.

    For more details, click here and here.