Blocking and Reporting
View .md
Endpoints for reporting users, blocking users, and muting users, domains, keywords, and conversations. Every endpoint needs an app token. GET requests need the read scope, POST requests need write, and DELETE requests need delete. Requests without a token return 401 with the text Token required.
https://micro.blog
/users/report
Flags a user for review by the Micro.blog team.
Example Request
curl -X POST "https://micro.blog/users/report?username=spammer" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
username
|
string | Required |
Username to report, without a leading @.
Example:
spammer
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns an empty JSON object. A username that doesn’t match a user fails with 500.
Example Response
{}
/users/block
Blocks a user. Blocking also mutes them, so their posts and replies are hidden from the authenticated user’s timeline. Blocking someone already blocked returns the existing block.
Example Request
curl -X POST "https://micro.blog/users/block?username=spammer" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
username
|
string | Required |
Username to block. A leading @ is removed.
Example:
spammer
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns the block. id is the block ID to pass to DELETE /users/blocking/{id}. When username doesn’t match a user, the status is still 200 and the body is {"error": "Username not found."}.
Example Response
{
"id": 12345,
"username": "spammer"
}
/users/blocking
Returns the users the authenticated user has blocked.
Example Request
curl -X GET "https://micro.blog/users/blocking" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns a JSON array of blocks. id is the block ID, not the user ID.
Example Response
[
{
"id": 12345,
"username": "spammer"
}
]
/users/blocking/{id}
Removes a block. The mute that blocking added stays in place; remove it with DELETE /users/muting/{id} to see the user’s posts again.
Example Request
curl -X DELETE "https://micro.blog/users/blocking/12345" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
Block ID from GET /users/blocking or POST /users/block.
Example:
12345
|
Response
200 OK application/jsonReturns an empty JSON object, also when no block with that ID belongs to the user.
Example Response
{}
/users/mute
Mutes a user, a domain, or a keyword. Muting the same thing twice updates the existing mute.
Example Request
curl -X POST "https://micro.blog/users/mute?username=spammer" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
username
|
string | Optional |
Username to mute. A leading @ is removed. A value with a dot and no @ that isn’t a known user, such as example.com, mutes that domain instead. Send username or keyword.
Example:
spammer
|
keyword
|
string | Optional |
Word or phrase to mute. When both are sent, keyword wins and username is ignored.
Example:
spoiler
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns the mute. Fields that don’t apply are empty strings. When neither parameter matches anything, the status is still 200 and the body is {"error": "Username not found."}.
Example Response
{
"id": 23456,
"username": "spammer",
"domain": "",
"keyword": "",
"is_hiding_other_replies": false
}
/users/muting
Returns everything the authenticated user has muted, including users, domains, keywords, muted conversations, and the mutes added by blocking.
Example Request
curl -X GET "https://micro.blog/users/muting" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns a JSON array of mutes. Only one of username, domain, keyword, or thread_id identifies what each mute covers; a muted conversation has a thread_id and empty strings for the rest.
Example Response
[
{
"id": 23456,
"username": "spammer",
"domain": "",
"keyword": "",
"thread_id": null,
"is_hiding_other_replies": false
},
{
"id": 23457,
"username": "",
"domain": "",
"keyword": "spoiler",
"thread_id": null,
"is_hiding_other_replies": false
},
{
"id": 23458,
"username": "",
"domain": "",
"keyword": "",
"thread_id": 77494371,
"is_hiding_other_replies": false
}
]
/users/muting/{id}
Turns “hide other replies that mention this person” on or off for a user or domain mute. Conversation mutes are left unchanged.
Example Request
curl -X POST "https://micro.blog/users/muting/23456?is_hiding_other_replies=1" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
is_hiding_other_replies
|
integer | Required |
1 also hides other people’s replies that mention the muted user, 0 stops hiding them. Leaving it out turns the setting off.
Example:
1
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
Mute ID from GET /users/muting.
Example:
23456
|
Response
200 OK application/jsonReturns an empty JSON object, also when no mute with that ID belongs to the user.
Example Response
{}
/users/muting/{id}
Removes a mute of any kind.
Example Request
curl -X DELETE "https://micro.blog/users/muting/23456" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
Mute ID from GET /users/muting.
Example:
23456
|
Response
200 OK application/jsonReturns an empty JSON object, also when no mute with that ID belongs to the user.
Example Response
{}
/users/mute/conversation
Checks whether the conversation a post belongs to is muted. Pass any post in the conversation; Micro.blog finds the post that started it.
Example Request
curl -X GET "https://micro.blog/users/mute/conversation?id=77494380" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
ID of a post in the conversation.
Example:
77494380
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns the conversation’s thread_id (as a string) and whether it is muted. Returns 404 with Post not found when the post doesn’t exist or comes from someone the user already mutes, and Conversation not found when no conversation can be found. Sent with Cache-Control: no-store.
Example Response
{
"thread_id": "77494371",
"muted": false
}
/users/mute/conversation
Mutes or unmutes the conversation a post belongs to, so new replies in it stop showing up in the timeline and mentions. Muted conversations appear in GET /users/muting with a thread_id. Requests from a browser on another site are refused.
Example Request
curl -X POST "https://micro.blog/users/mute/conversation" \
--header "Authorization: Bearer ABCDEF1234567890ABCD" \
--data "id=77494380&muted=1"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
ID of a post in the conversation.
Example:
77494380
|
muted
|
integer | Required |
1 to mute the conversation, 0 to unmute it.
Example:
1
|
Response
200 OK application/json
Returns the conversation’s thread_id (as a string) and its new state. Returns 400 with Expected muted=1 or muted=0 when muted is missing or another value, and the same 404 errors as GET /users/mute/conversation.
Example Response
{
"thread_id": "77494371",
"muted": true
}