Skip to main content
Keep your Context7 documentation in sync by triggering a refresh whenever you push to your main branch.

Setup

1

Get your API key

Go to your Context7 dashboard and copy your API key.
2

Add the API key as a repository secret

In your GitHub repository, go to SettingsSecrets and variablesActions and add a new secret:
NameValue
CONTEXT7_API_KEYYour API key from the Context7 dashboard
3

Create the workflow file

Add the following file to your repository at .github/workflows/context7-refresh.yml:
name: Refresh Context7 Docs

on:
  push:
    branches:
      - master # change to your default branch if different

jobs:
  refresh:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger Context7 Refresh
        run: |
          curl -s -X POST https://context7.com/api/v1/refresh \
            -H "Content-Type: application/json" \
            -H "Authorization: Bearer ${{ secrets.CONTEXT7_API_KEY }}" \
            -d '{"libraryName": "/${{ github.repository }}"}'
This uses ${{ github.repository }} to automatically resolve to your repository’s owner/repo (e.g., vercel/next.js). If your library identifier on Context7 differs from your GitHub repository name, replace it with the correct value (e.g., /your-org/your-repo).

Refreshing a Specific Branch

To refresh a non-default branch, add the branch field to the request body. The branch value must match a branch name that already exists on your library in Context7.
- name: Trigger Context7 Refresh
  run: |
    curl -s -X POST https://context7.com/api/v1/refresh \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer ${{ secrets.CONTEXT7_API_KEY }}" \
      -d '{"libraryName": "/your-org/your-repo", "branch": "v2"}'
If the branch has not been added to your library on Context7, the refresh will fail with a branch_not_found error.

Private Repositories

For private repositories, include a gitToken so Context7 can access your code:
- name: Trigger Context7 Refresh
  run: |
    curl -s -X POST https://context7.com/api/v1/refresh \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer ${{ secrets.CONTEXT7_API_KEY }}" \
      -d '{"libraryName": "/your-org/your-repo", "gitToken": "${{ secrets.GIT_ACCESS_TOKEN }}"}'
Private sources require a Pro or Enterprise plan. See the Private Sources guide for more details.