# List Coding Agent Slack Authors (Admin)

Source: https://recoupable.dev/docs/api-reference/admins/coding-agent-slack-authors

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.

## GET /api/admins/coding-agent/slack-tags

Full OpenAPI specification: https://recoupable.dev/docs/spec/accounts.json

## Authentication

This operation requires one of the security alternatives in the specification below. Security scheme definitions are included where present in the published specification.

[Authentication guide](https://recoupable.dev/docs/authentication)

## Operation and referenced schemas

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Recoup API - Accounts",
    "description": "API documentation for the Recoup platform - an AI agent platform for the music industry",
    "license": {
      "name": "MIT"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.recoupable.dev"
    }
  ],
  "paths": {
    "/api/admins/coding-agent/slack-tags": {
      "get": {
        "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"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AdminCodingSlackAuthorsResponse": {
        "type": "object",
        "required": [
          "status",
          "total",
          "tags"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "success"
            ]
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of distinct author IDs in the collected data."
          },
          "tags": {
            "type": "array",
            "description": "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.",
            "items": {
              "type": "object",
              "required": [
                "id",
                "name",
                "avatar"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Slack author ID; use it as the analytics tag filter."
                },
                "name": {
                  "type": "string",
                  "description": "Display name from the first collected profile."
                },
                "avatar": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Avatar URL from the first collected profile, or null."
                }
              }
            }
          }
        }
      },
      "AdminCodingSlackAuthenticationError": {
        "description": "Missing or simultaneous authentication mechanisms return status/error. An invalid API key or Bearer credential returns status/message. Supply exactly one mechanism and authenticate a Recoup admin account.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/AdminCodingSlackQueryError"
          },
          {
            "$ref": "#/components/schemas/AccountErrorResponse"
          }
        ]
      },
      "AccountErrorResponse": {
        "type": "object",
        "required": [
          "status",
          "message"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "error"
            ],
            "description": "Status of the request"
          },
          "message": {
            "type": "string",
            "description": "Error message describing what went wrong"
          }
        }
      },
      "AdminCodingSlackQueryError": {
        "type": "object",
        "required": [
          "status",
          "error"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "error"
            ]
          },
          "error": {
            "type": "string",
            "description": "The first invalid query field or authentication-mechanism error."
          }
        }
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "Your Recoup API key. [Learn more](/docs/quickstart#api-keys)."
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}
```
