diff --git a/core/base-service/openapi.js b/core/base-service/openapi.js
index d6f6c7b5e75518116263979a9340cfe87cf0ba71..3d2e6082ee639d7392952a203404d9bdda316f79 100644
--- a/core/base-service/openapi.js
+++ b/core/base-service/openapi.js
@@ -84,7 +84,7 @@ function services2openapi(services, sort) {
     for (const [key, value] of Object.entries(
       addGlobalProperties(service.openApi),
     )) {
-      if (key in paths && key !== '/github/{variant}/{user}/{repo}') {
+      if (key in paths) {
         throw new Error(`Conflicting route: ${key}`)
       }
       paths[key] = value
diff --git a/services/github/github-contributors.service.js b/services/github/github-contributors.service.js
index 23d07dfe48c773b77b3457238ba5bbaf3e06eae8..c0f62bfa07ba15d86313dffcddd48fa0f734e143 100644
--- a/services/github/github-contributors.service.js
+++ b/services/github/github-contributors.service.js
@@ -12,19 +12,23 @@ export default class GithubContributors extends GithubAuthV3Service {
   static category = 'activity'
   static route = {
     base: 'github',
-    pattern: ':variant(contributors|contributors-anon)/:user/:repo',
+    // note we call this param 'metric' instead of 'variant' because of
+    // https://github.com/badges/shields/issues/10323
+    pattern: ':metric(contributors|contributors-anon)/:user/:repo',
   }
 
   static openApi = {
-    '/github/{variant}/{user}/{repo}': {
+    '/github/{metric}/{user}/{repo}': {
       get: {
         summary: 'GitHub contributors',
         description: documentation,
         parameters: pathParams(
           {
-            name: 'variant',
+            name: 'metric',
             example: 'contributors',
-            schema: { type: 'string', enum: this.getEnum('variant') },
+            schema: { type: 'string', enum: this.getEnum('metric') },
+            description:
+              '`contributors-anon` includes anonymous commits, whereas `contributors` excludes them.',
           },
           {
             name: 'user',
@@ -45,8 +49,8 @@ export default class GithubContributors extends GithubAuthV3Service {
     return renderContributorBadge({ contributorCount })
   }
 
-  async handle({ variant, user, repo }) {
-    const isAnon = variant === 'contributors-anon'
+  async handle({ metric, user, repo }) {
+    const isAnon = metric === 'contributors-anon'
 
     const { res, buffer } = await this._request({
       url: `/repos/${user}/${repo}/contributors`,