GroupeZ Docs
APIv2 (current)

Authors

A single endpoint returns the public identity of a seller (an author of resources): their id, their Discord identifier and their display name. Plugins use it to show who wrote a resource or to mention the seller in a Discord channel.

Frozen contract

This payload is a compatibility contract with plugins already deployed on Minecraft servers. It has exactly three keys, in this order, and will not gain new ones. The richer author data shown on the website (slug, avatar, bio, role) is not exposed here.

Common behaviour

ItemValue
Base URLhttps://groupez.dev/api/v1
AuthenticationNone
Rate limitapi limiter: 120 requests per minute, keyed by the authenticated user id or else the IP address. The API carries no session or token, so in practice it is the IP (proxies are trusted, so this is the client IP from X-Forwarded-For)
Version headerEvery response, including 404 and 429, carries X-GroupeZ-Api-Version: 1
CORSPaths api/v1/*, any origin (*), allowed methods GET, HEAD, OPTIONS, no credentials; X-GroupeZ-Api-Version is exposed to browsers
EnvelopeNone: the body is a bare JSON object, never wrapped in {"data": ...}

Endpoints

GET /api/v1/author/{user}

Returns the author identified by their numeric user id.

Route nameAuthRate limit
api.v1.authors.showNonethrottle:api (120/min)

Path parameters

NameTypeDescription
userintegerThe user id of the author. Resolved by primary key (id), not by slug or Discord id.

Query / body parameters

None.

Responses

200 OK: the author exists.

{
  "id": 42,
  "discord": "987654321098765432",
  "name": "Bobby"
}
KeyTypeDescription
idintegerThe user id (same value as the path parameter).
discordstring | nullThe Discord user id (snowflake) of the linked Discord account, as a string. null when the author never linked Discord. The key is always present.
namestringThe author's display name.

An author without a linked Discord account:

{
  "id": 42,
  "discord": null,
  "name": "Bobby"
}

404 Not Found: no user has this id (or the account was deleted).

{
  "message": "Not found."
}

429 Too Many Requests: the api limiter tripped. The Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers are forwarded when present.

{
  "message": "Too many requests."
}

The endpoint has no validation and no authorization, so it never answers 401, 403 or 422.

Example

curl -s https://groupez.dev/api/v1/author/42 \
  -H "Accept: application/json"

Notes

  • Where discord comes from. The legacy platform stored the Discord identifier on the user row. The current platform stores every linked identity (Discord, Google, etc.) in a separate social accounts table. The endpoint reads the account whose provider is discord and returns its provider id. A linked Google account never fills discord.
  • No personal or commercial data. Email address, ban state, slug, avatar, role and payment (Stripe/PayPal) settings are never part of this payload.
  • Suspended sellers are still returned. No account status is filtered: a banned author still answers 200, because they still own the resources a plugin may ask about.
  • Deleted accounts answer 404. User accounts are soft-deleted. The route binding excludes deleted rows, so a deleted author is "not found".
  • Neutral 404. The 404 body is always {"message": "Not found."}. It never names the internal model, so existence is the only thing a caller learns.
  • Non-numeric ids. {user} has no pattern constraint, so any single segment reaches the lookup. A value that matches no id answers 404. Mixed values such as 42abc are compared by the database (MySQL in production), which may coerce them to a number. This case is not covered by tests, so always send a plain integer.

Differences from the legacy platform

  • Legacy discord was not this string in practice: once the Discord column was moved to its own table on the legacy platform, the endpoint returned a whole Discord account object (or null). See v1 Authors.
  • Legacy responses were sent with a text/html content type. The current platform answers application/json.
  • Legacy 404s exposed the internal model name. The current platform answers {"message": "Not found."}.
  • The rate limit went from 60 to 120 requests per minute.
  • The route name changed from api.v1.authorshow to api.v1.authors.show. The URI did not change.

On this page

GroupeZ MCP

Documentation in your AI

MCP lets your AI search GroupeZ documentation and read current examples to help you configure your plugins.

Read-only · No documentation API key needed

1. Copy the server URL

Transport: HTTP (Streamable HTTP). Authentication: none. Your tool uses its own model and subscription limits.

  1. Open Plugins in ChatGPT on the web, then + → Add custom MCP server.
  2. Name it ‘GroupeZ Documentation’, paste the URL above and choose ‘No authentication’. Create and install the plugin.
  3. In a conversation, type @ and select the plugin before asking. If needed, enable search, get_page and list_pages in its settings.
Official setup guide

3. Ask a question

Use GroupeZ MCP to help me create a zMenu inventory. Search relevant pages, read the examples and cite your sources.
Other clients and troubleshooting

For clients using mcpServers, adapt this example to their format:

{
  "mcpServers": {
    "groupez-docs": {
      "url": ""
    }
  }
}

Available tools are search, get_page and list_pages. Refresh the connector’s tools after updates. If your AI cannot access them, check that the connector is enabled in the conversation and your account allows custom MCP servers. Opening the URL in a browser is not an MCP test.