API REFERENCE

List Coding Agent Slack Authors (Admin)

On this page
GET/api/admins/coding-agent/slack-tags

Returns distinct authors of collected Coding Agent mentions for an admin author selector. Requires the authenticated account to be a Recoup admin, using exactly one of x-api-key or Authorization Bearer. No query parameters are defined. Each authorized request runs the existing all-period Slack collector once, then deduplicates by Slack author ID, retains the first collected profile and sorts by display name using localeCompare; identical names do not merge different IDs. The result is authors in that collected data, not a complete all-time Slack directory. Existing channel access, retention, paginated history, first-page thread replies and partial-failure limits remain; partial collection can still produce an incomplete successful result. Thrown collection failures return 500. This call is not free cached metadata: a future caller must account for scan latency and quotas. The release adds no automatic caller, UI, polling, scheduled action, new Slack scope or Slack send. Production admin access, history coverage, latency and quotas were not verified by the source contract tests.

Authentication

x-api-key in header

bearerAuth bearer

Request

cURL
curl --request GET \
  --url 'https://api.recoupable.dev/api/admins/coding-agent/slack-tags' \
  --header 'x-api-key: YOUR_API_KEY'

Try it

Fill in the fields, send the request from your browser, and read the live response. The curl below updates as you type.

Kept in this browser tab only and cleared when it closes.

cURL for this request
curl --request GET \
  --url 'https://recoup-api.vercel.app/api/admins/coding-agent/slack-tags'

Responses

200Distinct collected authors; an empty collected dataset returns total 0 and tags [].

application/json

statusstring · enumrequired

Values: "success"

totalintegerrequired

Number of distinct author IDs in the collected data.

minimum: 0

tagsarray<object>required

Distinct authors, deduplicated by ID and sorted by display name with the server localeCompare order. The first collected profile is retained; equal names do not merge distinct IDs.

Item properties for tags
idstringrequired

Slack author ID; use it as the analytics tag filter.

namestringrequired

Display name from the first collected profile.

avatarstring | nullrequired

Avatar URL from the first collected profile, or null.

Synthetic distinct authors; the first collected Bob profile has no avatar.

collectedAuthors
{
  "status": "success",
  "total": 2,
  "tags": [
    {
      "id": "U1",
      "name": "Alice",
      "avatar": null
    },
    {
      "id": "U2",
      "name": "Bob",
      "avatar": null
    }
  ]
}

No collected authors.

noAuthors
{
  "status": "success",
  "total": 0,
  "tags": []
}

401Missing, conflicting or invalid credentials; inspect error or message according to the authentication envelope.

application/json

oneOf · AdminCodingSlackQueryError 1
statusstring · enumrequired

Values: "error"

errorstringrequired

The first invalid query field or authentication-mechanism error.

oneOf · AccountErrorResponse 2
statusstring · enumrequired

Status of the request

Values: "error"

messagestringrequired

Error message describing what went wrong

403The authenticated account is not a Recoup admin.

application/json

statusstring · enumrequired

Status of the request

Values: "error"

messagestringrequired

Error message describing what went wrong

500Thrown collection failure with a generic server message.

application/json

statusstring · enumrequired

Status of the request

Values: "error"

messagestringrequired

Error message describing what went wrong

Full specification

Download the OpenAPI file for complete schemas, constraints, and examples.

Download accounts.json
View operation source
json
{
  "operationId": "getAdminsCodingSlackAuthors",
  "description": "Returns distinct authors of collected Coding Agent mentions for an admin author selector. Requires the authenticated account to be a Recoup admin, using exactly one of x-api-key or Authorization Bearer. No query parameters are defined. Each authorized request runs the existing all-period Slack collector once, then deduplicates by Slack author ID, retains the first collected profile and sorts by display name using localeCompare; identical names do not merge different IDs. The result is authors in that collected data, not a complete all-time Slack directory. Existing channel access, retention, paginated history, first-page thread replies and partial-failure limits remain; partial collection can still produce an incomplete successful result. Thrown collection failures return 500. This call is not free cached metadata: a future caller must account for scan latency and quotas. The release adds no automatic caller, UI, polling, scheduled action, new Slack scope or Slack send. Production admin access, history coverage, latency and quotas were not verified by the source contract tests.",
  "parameters": [],
  "security": [
    {
      "apiKeyAuth": []
    },
    {
      "bearerAuth": []
    }
  ],
  "responses": {
    "200": {
      "description": "Distinct collected authors; an empty collected dataset returns total 0 and tags [].",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AdminCodingSlackAuthorsResponse"
          },
          "examples": {
            "collectedAuthors": {
              "summary": "Synthetic distinct authors; the first collected Bob profile has no avatar.",
              "value": {
                "status": "success",
                "total": 2,
                "tags": [
                  {
                    "id": "U1",
                    "name": "Alice",
                    "avatar": null
                  },
                  {
                    "id": "U2",
                    "name": "Bob",
                    "avatar": null
                  }
                ]
              }
            },
            "noAuthors": {
              "summary": "No collected authors.",
              "value": {
                "status": "success",
                "total": 0,
                "tags": []
              }
            }
          }
        }
      }
    },
    "401": {
      "description": "Missing, conflicting or invalid credentials; inspect error or message according to the authentication envelope.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AdminCodingSlackAuthenticationError"
          }
        }
      }
    },
    "403": {
      "description": "The authenticated account is not a Recoup admin.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AccountErrorResponse"
          }
        }
      }
    },
    "500": {
      "description": "Thrown collection failure with a generic server message.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AccountErrorResponse"
          }
        }
      }
    }
  }
}

Get started with Recoup.