API REFERENCE
List Coding Agent Slack Authors (Admin)
On this page
/api/admins/coding-agent/slack-tagsReturns 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 --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 --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 · enumrequiredValues: "success"
totalintegerrequiredNumber of distinct author IDs in the collected data.
minimum: 0
tagsarray<object>requiredDistinct 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
idstringrequiredSlack author ID; use it as the analytics tag filter.
namestringrequiredDisplay name from the first collected profile.
avatarstring | nullrequiredAvatar URL from the first collected profile, or null.
Synthetic distinct authors; the first collected Bob profile has no avatar.
{
"status": "success",
"total": 2,
"tags": [
{
"id": "U1",
"name": "Alice",
"avatar": null
},
{
"id": "U2",
"name": "Bob",
"avatar": null
}
]
}No collected authors.
{
"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 · enumrequiredValues: "error"
errorstringrequiredThe first invalid query field or authentication-mechanism error.
oneOf · AccountErrorResponse 2
statusstring · enumrequiredStatus of the request
Values: "error"
messagestringrequiredError message describing what went wrong
403The authenticated account is not a Recoup admin.+
application/json
statusstring · enumrequiredStatus of the request
Values: "error"
messagestringrequiredError message describing what went wrong
500Thrown collection failure with a generic server message.+
application/json
statusstring · enumrequiredStatus of the request
Values: "error"
messagestringrequiredError message describing what went wrong
Full specification
Download the OpenAPI file for complete schemas, constraints, and examples.
Download accounts.jsonView operation source
{
"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"
}
}
}
}
}
}