Discourse Invites API

The Invites API from Discourse — 4 operation(s) for invites.

Operations 4

POST /invites.json Create an invite #
POST /invites/create-multiple.json Create multiple invites #
POST /t/{id}/invite.json Invite to topic #
POST /t/{id}/invite-group.json Invite group to topic #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/discourse-invites-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

discourse-invites-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Discourse API Documentation Invites API
  x-logo:
    url: https://docs.discourse.org/logo.svg
  version: latest
  description: This page contains the documentation on how to use Discourse through API calls.
  license:
    name: MIT
    url: https://docs.discourse.org/LICENSE.txt
servers:
- url: https://{defaultHost}
  variables:
    defaultHost:
      default: discourse.example.com
tags:
- name: Invites
paths:
  /invites.json:
    post:
      summary: Create an invite
      tags:
      - Invites
      operationId: createInvite
      parameters:
      - name: Api-Key
        in: header
        required: true
        schema:
          type: string
      - name: Api-Username
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: success response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  id:
                    type: integer
                    example: 42
                  invite_key:
                    type: string
                  link:
                    type: string
                    example: http://example.com/invites/9045fd767efe201ca60c6658bcf14158
                  description:
                    type:
                    - string
                    - 'null'
                  email:
                    type: string
                    example: not-a-user-yet@example.com
                  domain:
                    type:
                    - string
                    - 'null'
                  emailed:
                    type: boolean
                    example: false
                  can_delete_invite:
                    type: boolean
                  custom_message:
                    type:
                    - string
                    - 'null'
                    example: Hello world!
                  created_at:
                    type: string
                    example: '2021-01-01T12:00:00.000Z'
                  updated_at:
                    type: string
                    example: '2021-01-01T12:00:00.000Z'
                  expires_at:
                    type: string
                    example: '2021-02-01T12:00:00.000Z'
                  expired:
                    type: boolean
                    example: false
                  topics:
                    type: array
                    items:
                      type: object
                    example: []
                  groups:
                    type: array
                    items:
                      type: object
                    example: []
                required:
                - id
                - invite_key
                - link
                - description
                - email
                - domain
                - emailed
                - can_delete_invite
                - custom_message
                - created_at
                - updated_at
                - expires_at
                - expired
                - topics
                - groups
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                email:
                  type: string
                  example: not-a-user-yet@example.com
                  description: required for email invites only
                skip_email:
                  type: boolean
                  default: false
                custom_message:
                  type: string
                  description: optional, for email invites
                max_redemptions_allowed:
                  type: integer
                  example: 5
                  default: 1
                  description: optional, for link invites
                topic_id:
                  type: integer
                group_ids:
                  type: string
                  description: 'Optional, either this or `group_names`. Comma separated

                    list for multiple ids.'
                  example: 42,43
                group_names:
                  type: string
                  description: 'Optional, either this or `group_ids`. Comma separated

                    list for multiple names.'
                  example: foo,bar
                expires_at:
                  type: string
                  description: 'optional, if not supplied, the invite_expiry_days site

                    setting is used'
  /invites/create-multiple.json:
    post:
      summary: Create multiple invites
      tags:
      - Invites
      operationId: createMultipleInvites
      parameters:
      - name: Api-Key
        in: header
        required: true
        schema:
          type: string
      - name: Api-Username
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: success response
          content:
            application/json:
              schema:
                type: object
                properties:
                  num_successfully_created_invitations:
                    type: integer
                    example: 42
                  num_failed_invitations:
                    type: integer
                    example: 42
                  failed_invitations:
                    type: array
                    items: {}
                    example: []
                  successful_invitations:
                    type: array
                    example:
                    - id: 42
                      link: http://example.com/invites/9045fd767efe201ca60c6658bcf14158
                      email: not-a-user-yet-1@example.com
                      emailed: true
                      custom_message: Hello world!
                      topics: []
                      groups: []
                      created_at: '2021-01-01T12:00:00.000Z'
                      updated_at: '2021-01-01T12:00:00.000Z'
                      expires_at: '2021-02-01T12:00:00.000Z'
                      expired: false
                    - id: 42
                      link: http://example.com/invites/c6658bcf141589045fd767efe201ca60
                      email: not-a-user-yet-2@example.com
                      emailed: true
                      custom_message: Hello world!
                      topics: []
                      groups: []
                      created_at: '2021-01-01T12:00:00.000Z'
                      updated_at: '2021-01-01T12:00:00.000Z'
                      expires_at: '2021-02-01T12:00:00.000Z'
                      expired: false
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  example:
                  - not-a-user-yet-1@example.com
                  - not-a-user-yet-2@example.com
                  description: 'pass 1 email per invite to be generated. other properties

                    will be shared by each invite.'
                skip_email:
                  type: boolean
                  default: false
                custom_message:
                  type: string
                  description: optional, for email invites
                max_redemptions_allowed:
                  type: integer
                  example: 5
                  default: 1
                  description: optional, for link invites
                topic_id:
                  type: integer
                group_ids:
                  type: string
                  description: 'Optional, either this or `group_names`. Comma separated

                    list for multiple ids.'
                  example: 42,43
                group_names:
                  type: string
                  description: 'Optional, either this or `group_ids`. Comma separated

                    list for multiple names.'
                  example: foo,bar
                expires_at:
                  type: string
                  description: 'optional, if not supplied, the invite_expiry_days site

                    setting is used'
  /t/{id}/invite.json:
    post:
      summary: Invite to topic
      tags:
      - Invites
      operationId: inviteToTopic
      parameters:
      - name: Api-Key
        in: header
        required: true
        schema:
          type: string
      - name: Api-Username
        in: header
        required: true
        schema:
          type: string
      - name: id
        in: path
        schema:
          type: string
        required: true
      responses:
        '200':
          description: topic updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      id:
                        type: integer
                      username:
                        type: string
                      name:
                        type: string
                      avatar_template:
                        type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                email:
                  type: string
  /t/{id}/invite-group.json:
    post:
      summary: Invite group to topic
      tags:
      - Invites
      operationId: inviteGroupToTopic
      parameters:
      - name: Api-Key
        in: header
        required: true
        schema:
          type: string
      - name: Api-Username
        in: header
        required: true
        schema:
          type: string
      - name: id
        in: path
        schema:
          type: string
        required: true
      responses:
        '200':
          description: invites to a PM
          content:
            application/json:
              schema:
                type: object
                properties:
                  group:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                group:
                  type: string
                  description: The name of the group to invite
                should_notify:
                  type: boolean
                  description: Whether to notify the group, it defaults to true