Agent skill

github-copilot

GitHub Copilot REST API via curl. Use this skill to manage Copilot subscriptions and retrieve usage metrics.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/product/github-copilot

SKILL.md

GitHub Copilot API

Use the GitHub Copilot REST API via direct curl calls to manage Copilot subscriptions and retrieve usage metrics for your organization.

Official docs: https://docs.github.com/en/rest/copilot

Note: This API is for managing Copilot subscriptions and viewing metrics, not for code generation.


When to Use

Use this skill when you need to:

  • Manage Copilot seat assignments (add/remove users and teams)
  • View Copilot billing information for an organization
  • Retrieve usage metrics (active users, code completions, chat usage)
  • Monitor Copilot adoption across teams
  • Audit Copilot usage for compliance

Prerequisites

  1. You need a GitHub organization with Copilot Business or Enterprise
  2. Generate a Personal Access Token (PAT) or use a GitHub App
  3. Required permissions: manage_billing:copilot or admin:org
  4. Store your token in the environment variable GITHUB_TOKEN
bash
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"

Token Permissions

  • manage_billing:copilot - For billing and seat management
  • read:org - For reading organization data
  • admin:org - For adding/removing users and teams

Important: When using $VAR in a command that pipes to another command, wrap the command containing $VAR in bash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.

bash
bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"'

How to Use

All examples below assume you have GITHUB_TOKEN set.

Base URL: https://api.github.com

Required headers:

  • Authorization: Bearer ${GITHUB_TOKEN}
  • Accept: application/vnd.github+json
  • X-GitHub-Api-Version: 2022-11-28

1. Get Copilot Billing Information

Get seat breakdown and settings for an organization. Replace your-org-name with your organization name:

bash
bash -c 'curl -s -X GET "https://api.github.com/orgs/your-org-name/copilot/billing" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28"'

Response:

json
{
  "seat_breakdown": {
  "total": 12,
  "added_this_cycle": 2,
  "pending_cancellation": 0,
  "pending_invitation": 1,
  "active_this_cycle": 12,
  "inactive_this_cycle": 0
  },
  "seat_management_setting": "assign_selected",
  "public_code_suggestions": "block"
}

2. List All Copilot Seat Assignments

Get all users with Copilot seats. Replace your-org-name with your organization name:

bash
bash -c 'curl -s -X GET "https://api.github.com/orgs/your-org-name/copilot/billing/seats?per_page=50" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28"' | jq '.seats[] | {login: .assignee.login, last_activity: .last_activity_at}'

3. Get Copilot Seat Details for a User

Get specific user's Copilot seat information. Replace your-org-name with your organization name and username with the target username:

bash
bash -c 'curl -s -X GET "https://api.github.com/orgs/your-org-name/members/username/copilot" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28"'

4. Add Users to Copilot Subscription

Assign Copilot seats to specific users. Replace your-org-name with your organization name:

Write to /tmp/github_copilot_request.json:

json
{
  "selected_usernames": ["user1", "user2"]
}

Then run:

bash
bash -c 'curl -s -X POST "https://api.github.com/orgs/your-org-name/copilot/billing/selected_users" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28" --header "Content-Type: application/json" -d @/tmp/github_copilot_request.json'

Response:

json
{
  "seats_created": 2
}

5. Remove Users from Copilot Subscription

Remove Copilot seats from specific users. Replace your-org-name with your organization name:

Write to /tmp/github_copilot_request.json:

json
{
  "selected_usernames": ["user1", "user2"]
}

Then run:

bash
bash -c 'curl -s -X DELETE "https://api.github.com/orgs/your-org-name/copilot/billing/selected_users" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28" --header "Content-Type: application/json" -d @/tmp/github_copilot_request.json'

Response:

json
{
  "seats_cancelled": 2
}

6. Add Teams to Copilot Subscription

Assign Copilot to entire teams. Replace your-org-name with your organization name:

Write to /tmp/github_copilot_request.json:

json
{
  "selected_teams": ["engineering", "design"]
}

Then run:

bash
bash -c 'curl -s -X POST "https://api.github.com/orgs/your-org-name/copilot/billing/selected_teams" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28" --header "Content-Type: application/json" -d @/tmp/github_copilot_request.json'

7. Remove Teams from Copilot Subscription

Remove Copilot from teams. Replace your-org-name with your organization name:

Write to /tmp/github_copilot_request.json:

json
{
  "selected_teams": ["engineering"]
}

Then run:

bash
bash -c 'curl -s -X DELETE "https://api.github.com/orgs/your-org-name/copilot/billing/selected_teams" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28" --header "Content-Type: application/json" -d @/tmp/github_copilot_request.json'

8. Get Copilot Usage Metrics for Organization

Get usage statistics (requires 5+ active users). Replace your-org-name with your organization name:

bash
bash -c 'curl -s -X GET "https://api.github.com/orgs/your-org-name/copilot/metrics?per_page=7" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28"' | jq '.[] | {date, total_active_users, total_engaged_users}'

Response:

json
{
  "date": "2024-06-24",
  "total_active_users": 24,
  "total_engaged_users": 20
}

9. Get Copilot Metrics for a Team

Get team-specific usage metrics. Replace your-org-name with your organization name and team-name with the target team:

bash
bash -c 'curl -s -X GET "https://api.github.com/orgs/your-org-name/team/team-name/copilot/metrics" --header "Authorization: Bearer ${GITHUB_TOKEN}" --header "Accept: application/vnd.github+json" --header "X-GitHub-Api-Version: 2022-11-28"'

Metrics Data Structure

The metrics response includes:

Field Description
total_active_users Users with Copilot activity
total_engaged_users Users who accepted suggestions
copilot_ide_code_completions Code completion stats by language/editor
copilot_ide_chat IDE chat usage stats
copilot_dotcom_chat GitHub.com chat usage
copilot_dotcom_pull_requests PR summary usage

Guidelines

  1. Requires Copilot Business/Enterprise: Free tier users cannot use this API
  2. Metrics need 5+ users: Usage metrics only available with 5+ active Copilot users
  3. Data retention: Metrics available for up to 100 days
  4. Rate limits: Standard GitHub API rate limits apply
  5. API in preview: Some endpoints may change

Didn't find tool you were looking for?

Be as detailed as possible for better results