Discourse Badges API
The Badges API from Discourse — 3 operation(s) for badges.
The Badges API from Discourse — 3 operation(s) for badges.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/discourse-badges-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Discourse API Documentation Badges 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: Badges
paths:
/admin/badges.json:
get:
summary: List badges
tags:
- Badges
operationId: adminListBadges
responses:
'200':
description: success response
content:
application/json:
schema:
additionalProperties: false
properties:
badges:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
description:
type: string
grant_count:
type: integer
allow_title:
type: boolean
multiple_grant:
type: boolean
icon:
type: string
image_url:
type:
- string
- 'null'
listable:
type: boolean
enabled:
type: boolean
badge_grouping_id:
type: integer
system:
type: boolean
long_description:
type: string
slug:
type: string
manually_grantable:
type: boolean
query:
type:
- string
- 'null'
trigger:
type:
- integer
- 'null'
target_posts:
type: boolean
auto_revoke:
type: boolean
show_posts:
type: boolean
i18n_name:
type:
- string
- 'null'
image_upload_id:
type:
- integer
- 'null'
badge_type_id:
type: integer
show_in_post_header:
type: boolean
required:
- id
- name
- description
- grant_count
- allow_title
- multiple_grant
- icon
- image_url
- listable
- enabled
- badge_grouping_id
- system
- long_description
- slug
- manually_grantable
- query
- trigger
- target_posts
- auto_revoke
- show_posts
- badge_type_id
- image_upload_id
- show_in_post_header
badge_types:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
sort_order:
type: integer
required:
- id
- name
- sort_order
badge_groupings:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
description:
type:
- string
- 'null'
position:
type: integer
system:
type: boolean
required:
- id
- name
- description
- position
- system
admin_badges:
type: object
additionalProperties: false
properties:
protected_system_fields:
type: array
items: {}
triggers:
type: object
additionalProperties: false
properties:
user_change:
type: integer
none:
type: integer
post_revision:
type: integer
trust_level_change:
type: integer
post_action:
type: integer
required:
- user_change
- none
- post_revision
- trust_level_change
- post_action
badge_ids:
type: array
items: {}
badge_grouping_ids:
type: array
items: {}
badge_type_ids:
type: array
items: {}
required:
- protected_system_fields
- triggers
- badge_ids
- badge_grouping_ids
- badge_type_ids
required:
- badges
- badge_types
- badge_groupings
- admin_badges
post:
summary: Create badge
tags:
- Badges
operationId: createBadge
parameters: []
responses:
'200':
description: success response
content:
application/json:
schema:
additionalProperties: false
properties:
badge_types:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
sort_order:
type: integer
required:
- id
- name
- sort_order
badge:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
description:
type: string
grant_count:
type: integer
allow_title:
type: boolean
multiple_grant:
type: boolean
icon:
type: string
image_url:
type:
- string
- 'null'
image_upload_id:
type:
- integer
- 'null'
listable:
type: boolean
enabled:
type: boolean
badge_grouping_id:
type: integer
system:
type: boolean
long_description:
type: string
slug:
type: string
manually_grantable:
type: boolean
query:
type:
- string
- 'null'
trigger:
type:
- string
- 'null'
target_posts:
type: boolean
auto_revoke:
type: boolean
show_posts:
type: boolean
badge_type_id:
type: integer
show_in_post_header:
type: boolean
required:
- id
- name
- description
- grant_count
- allow_title
- multiple_grant
- icon
- image_url
- listable
- enabled
- badge_grouping_id
- system
- long_description
- slug
- manually_grantable
- query
- trigger
- target_posts
- auto_revoke
- show_posts
- badge_type_id
- image_upload_id
- show_in_post_header
required:
- badge_types
- badge
requestBody:
content:
application/json:
schema:
additionalProperties: false
properties:
name:
type: string
description: The name for the new badge.
badge_type_id:
type: integer
description: 'The ID for the badge type. 1 for Gold, 2 for Silver,
3 for Bronze.'
required:
- name
- badge_type_id
/admin/badges/{id}.json:
put:
summary: Update badge
tags:
- Badges
operationId: updateBadge
parameters:
- name: id
in: path
schema:
type: integer
required: true
responses:
'200':
description: success response
content:
application/json:
schema:
additionalProperties: false
properties:
badge_types:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
sort_order:
type: integer
required:
- id
- name
- sort_order
badge:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
description:
type: string
grant_count:
type: integer
allow_title:
type: boolean
multiple_grant:
type: boolean
icon:
type: string
image_url:
type:
- string
- 'null'
image_upload_id:
type:
- integer
- 'null'
listable:
type: boolean
enabled:
type: boolean
badge_grouping_id:
type: integer
system:
type: boolean
long_description:
type: string
slug:
type: string
manually_grantable:
type: boolean
query:
type:
- string
- 'null'
trigger:
type:
- string
- 'null'
target_posts:
type: boolean
auto_revoke:
type: boolean
show_posts:
type: boolean
badge_type_id:
type: integer
show_in_post_header:
type: boolean
required:
- id
- name
- description
- grant_count
- allow_title
- multiple_grant
- icon
- image_url
- listable
- enabled
- badge_grouping_id
- system
- long_description
- slug
- manually_grantable
- query
- trigger
- target_posts
- auto_revoke
- show_posts
- badge_type_id
- image_upload_id
- show_in_post_header
required:
- badge_types
- badge
requestBody:
content:
application/json:
schema:
additionalProperties: false
properties:
name:
type: string
description: The name for the new badge.
badge_type_id:
type: integer
description: 'The ID for the badge type. 1 for Gold, 2 for Silver,
3 for Bronze.'
required:
- name
- badge_type_id
delete:
summary: Delete badge
tags:
- Badges
operationId: deleteBadge
parameters:
- name: id
in: path
schema:
type: integer
required: true
responses:
'200':
description: success response
/user-badges/{username}.json:
get:
summary: List badges for a user
tags:
- Badges
operationId: listUserBadges
parameters:
- name: username
in: path
schema:
type: string
required: true
responses:
'200':
description: success response
content:
application/json:
schema:
additionalProperties: false
properties:
badges:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
description:
type: string
grant_count:
type: integer
allow_title:
type: boolean
multiple_grant:
type: boolean
icon:
type: string
image_url:
type:
- string
- 'null'
listable:
type: boolean
enabled:
type: boolean
badge_grouping_id:
type: integer
system:
type: boolean
slug:
type: string
manually_grantable:
type: boolean
badge_type_id:
type: integer
required:
- id
- name
- description
- grant_count
- allow_title
- multiple_grant
- icon
- image_url
- listable
- enabled
- badge_grouping_id
- system
- slug
- manually_grantable
- badge_type_id
badge_types:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
name:
type: string
sort_order:
type: integer
required:
- id
- name
- sort_order
granted_bies:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
username:
type: string
name:
type: string
avatar_template:
type: string
flair_name:
type:
- string
- 'null'
admin:
type: boolean
moderator:
type: boolean
trust_level:
type: integer
required:
- id
- username
- name
- avatar_template
- flair_name
- admin
- moderator
- trust_level
user_badges:
type: array
items:
type: object
additionalProperties: false
properties:
id:
type: integer
granted_at:
type: string
grouping_position:
type: integer
is_favorite:
type:
- string
- 'null'
can_favorite:
type: boolean
badge_id:
type: integer
granted_by_id:
type: integer
required:
- id
- granted_at
- grouping_position
- is_favorite
- can_favorite
- badge_id
- granted_by_id
required:
- user_badges