Skip to content

Set organization membership for a user

PUT
/orgs/{org}/memberships/{username}

Only authenticated organization owners can add a member to the organization or update the member’s role.

  • If the authenticated user is adding a member to the organization, the invited user will receive an email inviting them to the organization. The user’s membership status will be pending until they accept the invitation.

  • Authenticated users can update a user’s membership by passing the role parameter. If the authenticated user changes a member’s role to admin, the affected user will receive an email notifying them that they’ve been made an organization owner. If the authenticated user changes an owner’s role to member, no email will be sent.

Rate limits

To prevent abuse, organization owners are limited to creating 50 organization invitations for an organization within a 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.

API method documentation

org
required
string

The organization name. The name is not case sensitive.

username
required
string

The handle for the GitHub user account.

Media type application/json
object
role

The role to give the user in the organization. Can be one of:

  • admin - The user will become an owner of the organization.
  • member - The user will become a non-owner member of the organization.
string
default: member
Allowed values: admin member
Examples
Example default

Set an organization membership role for a user

{
"role": "member"
}

Response

Media type application/json
Org Membership

Org Membership

object
url
required
string format: uri
state
required

The state of the member in the organization. The pending state indicates the user has not yet accepted an invitation.

string
Allowed values: active pending
role
required

The user’s membership type in the organization.

string
Allowed values: admin member billing_manager
direct_membership

Whether the user has direct membership in the organization.

boolean
enterprise_teams_providing_indirect_membership

The slugs of the enterprise teams providing the user with indirect membership in the organization. A limit of 100 enterprise team slugs is returned.

Array<string>
<= 100 items
organization_url
required
string format: uri
organization
required
Organization Simple

A GitHub organization.

object
login
required
string
id
required
integer
node_id
required
string
url
required
string format: uri
repos_url
required
string format: uri
events_url
required
string format: uri
hooks_url
required
string
issues_url
required
string
members_url
required
string
public_members_url
required
string
avatar_url
required
string
description
required
string
nullable
user
required
Simple User

A GitHub user.

object
name
string
nullable
email
string
nullable
login
required
string
id
required
integer format: int64
node_id
required
string
avatar_url
required
string format: uri
gravatar_id
required
string
nullable
url
required
string format: uri
html_url
required
string format: uri
followers_url
required
string format: uri
following_url
required
string
gists_url
required
string
starred_url
required
string
subscriptions_url
required
string format: uri
organizations_url
required
string format: uri
repos_url
required
string format: uri
events_url
required
string
received_events_url
required
string format: uri
type
required
string
site_admin
required
boolean
starred_at
string
user_view_type
string
permissions
object
can_create_repository
required
boolean
Examples
Example response-if-user-already-had-membership-with-organization

Response if user has an active admin membership with organization

{
"url": "https://api.github.com/orgs/octocat/memberships/defunkt",
"state": "active",
"role": "admin",
"organization_url": "https://api.github.com/orgs/octocat",
"direct_membership": true,
"enterprise_teams_providing_indirect_membership": [
"ent:justice-league",
"ent:security-managers"
],
"organization": {
"login": "github",
"id": 1,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE=",
"url": "https://api.github.com/orgs/github",
"repos_url": "https://api.github.com/orgs/github/repos",
"events_url": "https://api.github.com/orgs/github/events",
"hooks_url": "https://api.github.com/orgs/github/hooks",
"issues_url": "https://api.github.com/orgs/github/issues",
"members_url": "https://api.github.com/orgs/github/members{/member}",
"public_members_url": "https://api.github.com/orgs/github/public_members{/member}",
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"description": "A great organization"
},
"user": {
"login": "octocat",
"id": 1,
"node_id": "MDQ6VXNlcjE=",
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "",
"url": "https://api.github.com/users/octocat",
"html_url": "https://github.com/octocat",
"followers_url": "https://api.github.com/users/octocat/followers",
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
"organizations_url": "https://api.github.com/users/octocat/orgs",
"repos_url": "https://api.github.com/users/octocat/repos",
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/octocat/received_events",
"type": "User",
"site_admin": false
}
}

Forbidden

Media type application/json
Basic Error

Basic Error

object
message
string
documentation_url
string
url
string
status
string
Example generated
{
"message": "example",
"documentation_url": "example",
"url": "example",
"status": "example"
}

Validation failed, or the endpoint has been spammed.

Media type application/json
Validation Error

Validation Error

object
message
required
string
documentation_url
required
string
errors
Array<object>
object
resource
string
field
string
message
string
code
required
string
index
integer
value
One of:
string
nullable
Example generated
{
"message": "example",
"documentation_url": "example",
"errors": [
{
"resource": "example",
"field": "example",
"message": "example",
"code": "example",
"index": 1,
"value": [
"example"
]
}
]
}