Services and methods
This page lists every service and method of the Python SDK, with the REST API each method maps to. For what parameters and return values mean, follow the REST docs linked in the "Docs" column; SDK parameters have the same names as the REST fields, and the mapping rules are in Naming rules.
DRClient and AsyncDRClient have exactly the same services and methods; the async client's methods are coroutines, and iterator methods return async iterators.
What the columns mean:
- REST API: paths omit the
/{org_name}/{app_name}prefix. - API name: the name used in errors'
op, as keys ofclient.stats(), in theRequestInfo.ophooks receive, and in the testing helperFakeOpenAPI. It isn't always the method name (for example, the API name ofusers.list_mutesisusers.mutes). - Auto retry: whether the SDK retries automatically on network errors, timeouts and
5xx; for what the categories mean, see Retries and idempotency. Waiting and resending after rate limits applies to every method; see Rate limits. - Iterator methods (
iter,iter_xxx) call the matching list API page by page; see Automatic paging. Methods ending in_allsplit into batches by the limit and call the batch API batch by batch; see Batches over the limit.
Users client.users
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
list_muted | GET /mutes | users.list_muted | Query | List muted users |
iter_muted | Calls GET /mutes page by page | users.list_muted | Query | List muted users |
create | POST /users | users.create | Unique create | Create a user |
list | GET /users | users.list | Query | List users |
iter | Calls GET /users page by page | users.list | Query | List users |
batch_create | POST /users/batch | users.batch_create | Unique create | Create users in batches |
batch_create_all | Calls POST /users/batch in batches | users.batch_create | Unique create | Create users in batches |
lookup | POST /users/lookup | users.lookup | Query | Look up users by username |
get | GET /users/{username} | users.get | Query | Get a user |
update | PATCH /users/{username} | users.update | Idempotent | Update a user's profile |
delete | DELETE /users/{username} | users.delete | Idempotent | Delete a user |
disable | POST /users/{username}/disable | users.disable | Idempotent | Ban a user |
enable | POST /users/{username}/enable | users.enable | Idempotent | Unban a user |
issue_login_ticket | POST /users/{username}/login-tickets | users.issue_login_ticket | Idempotent | Issue a sign-in ticket |
list_mutes | GET /users/{username}/mutes | users.mutes | Query | Get a user's mutes |
mute | PUT /users/{username}/mutes/{scope} | users.mute | Idempotent | Mute a user |
unmute | DELETE /users/{username}/mutes/{scope} | users.unmute | Idempotent | Unmute a user |
set_password | PUT /users/{username}/password | users.set_password | No retry | Set a password |
list_sessions | GET /users/{username}/sessions | users.sessions | Query | List devices |
kick_all | DELETE /users/{username}/sessions | users.kick_all | No retry | Sign out all devices |
kick | DELETE /users/{username}/sessions/{session_id} | users.kick | Idempotent | Sign out one device |
Friends client.friends
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
list_requests | GET /users/{username}/friend-requests | friends.requests | Query | Query friend requests |
iter_requests | Calls GET /users/{username}/friend-requests page by page | friends.requests | Query | Query friend requests |
get_settings | GET /users/{username}/friend-settings | friends.settings | Query | Get the friend add mode |
set_settings | PUT /users/{username}/friend-settings | friends.set_settings | Idempotent | Set the friend add mode |
list | GET /users/{username}/friends | friends.list | Query | List friends |
iter | Calls GET /users/{username}/friends page by page | friends.list | Query | List friends |
delete_all | DELETE /users/{username}/friends | friends.delete_all | Idempotent | Remove all friends |
batch_add | POST /users/{username}/friends/batch | friends.batch_add | Idempotent | Add friends in batches |
batch_add_all | Calls POST /users/{username}/friends/batch in batches | friends.batch_add | Idempotent | Add friends in batches |
batch_delete | POST /users/{username}/friends/batch-delete | friends.batch_delete | Idempotent | Remove friends in batches |
check | POST /users/{username}/friends/check | friends.check | Query | Check relationships |
get | GET /users/{username}/friends/{friend} | friends.get | Query | Get a friend |
add | PUT /users/{username}/friends/{friend} | friends.add | Idempotent | Add a friend |
update | PATCH /users/{username}/friends/{friend} | friends.update | Idempotent | Update a friend's remark and custom attributes |
delete | DELETE /users/{username}/friends/{friend} | friends.delete | Idempotent | Remove a friend |
Blocklist client.blacklist
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
list | GET /users/{username}/blacklist | blacklist.list | Query | Get the block list |
iter | Calls GET /users/{username}/blacklist page by page | blacklist.list | Query | Get the block list |
batch_add | POST /users/{username}/blacklist/batch | blacklist.batch_add | Idempotent | Block in batches |
batch_remove | POST /users/{username}/blacklist/batch-delete | blacklist.batch_remove | Idempotent | Unblock in batches |
add | PUT /users/{username}/blacklist/{target} | blacklist.add | Idempotent | Block a user |
remove | DELETE /users/{username}/blacklist/{target} | blacklist.remove | Idempotent | Unblock a user |
Groups client.groups
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
create | POST /groups | groups.create | No retry | Create a group |
list | GET /groups | groups.list | Query | List groups |
iter | Calls GET /groups page by page | groups.list | Query | List groups |
get | GET /groups/{group_id} | groups.get | Query | Get a group |
update | PATCH /groups/{group_id} | groups.update | Idempotent | Update a group's profile and settings |
delete | DELETE /groups/{group_id} | groups.delete | Idempotent | Dissolve a group |
list_blacklist | GET /groups/{group_id}/blacklist | groups.blacklist | Query | List the group block list |
iter_blacklist | Calls GET /groups/{group_id}/blacklist page by page | groups.blacklist | Query | List the group block list |
add_to_blacklist | PUT /groups/{group_id}/blacklist/{username} | groups.add_to_blacklist | Idempotent | Add a user to the group block list |
remove_from_blacklist | DELETE /groups/{group_id}/blacklist/{username} | groups.remove_from_blacklist | Idempotent | Remove a user from the group block list |
disable | POST /groups/{group_id}/disable | groups.disable | Idempotent | Ban a group |
enable | POST /groups/{group_id}/enable | groups.enable | Idempotent | Unban a group |
list_members | GET /groups/{group_id}/members | groups.members | Query | List group members |
iter_members | Calls GET /groups/{group_id}/members page by page | groups.members | Query | List group members |
add_members | POST /groups/{group_id}/members/batch | groups.add_members | Idempotent | Add group members |
remove_members | POST /groups/{group_id}/members/batch-delete | groups.remove_members | Idempotent | Remove group members |
get_member | GET /groups/{group_id}/members/{username} | groups.member | Query | Get a member |
update_member | PATCH /groups/{group_id}/members/{username} | groups.update_member | Idempotent | Update a member |
mute_member | PUT /groups/{group_id}/members/{username}/mute | groups.mute_member | Idempotent | Mute a member |
unmute_member | DELETE /groups/{group_id}/members/{username}/mute | groups.unmute_member | Idempotent | Unmute a member |
set_role | PUT /groups/{group_id}/members/{username}/role | groups.set_role | Idempotent | Set a member's role |
set_mute_all | PUT /groups/{group_id}/mute-all(on=True)DELETE /groups/{group_id}/mute-all(on=False) | groups.mute_allgroups.unmute_all | Idempotent | Turn on mute-all Turn off mute-all |
transfer_owner | PUT /groups/{group_id}/owner | groups.transfer_owner | Idempotent | Transfer ownership |
list_requests | GET /groups/{group_id}/requests | groups.requests | Query | Query join requests and invitations |
iter_requests | Calls GET /groups/{group_id}/requests page by page | groups.requests | Query | Query join requests and invitations |
get_invite_settings | GET /users/{username}/group-settings | groups.invite_settings | Query | Get a user's group settings |
set_invite_settings | PUT /users/{username}/group-settings | groups.set_invite_settings | Idempotent | Change a user's group settings |
list_of_user | GET /users/{username}/groups | groups.of_user | Query | List a user's groups |
iter_of_user | Calls GET /users/{username}/groups page by page | groups.of_user | Query | List a user's groups |
Messages client.messages
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
send | POST /messages | messages.send | Idempotency key; no retry when online_only=True | Send a message |
export | GET /messages | messages.export | Query | Export the app's messages |
iter_export | Calls GET /messages page by page | messages.export | Query | Export the app's messages |
batch_send | POST /messages/batch | messages.batch_send | Idempotency key | Send in batches |
batch_send_all | Calls POST /messages/batch in batches | messages.batch_send | Idempotency key | Send in batches |
batch_recall | POST /messages/batch-recall | messages.batch_recall | Idempotent | Recall in batches |
get | GET /messages/{message_id} | messages.get | Query | Query a single message |
edit | PATCH /messages/{message_id} | messages.edit | Idempotent | Edit a message |
pin | PUT /messages/{message_id}/pin | messages.pin | Idempotent | Pin a message |
unpin | DELETE /messages/{message_id}/pin | messages.unpin | Idempotent | Unpin a message |
recall | POST /messages/{message_id}/recall | messages.recall | Idempotent | Recall a message |
list_sent_by | GET /users/{username}/sent-messages | messages.sent_by | Query | Query a user's sent messages |
iter_sent_by | Calls GET /users/{username}/sent-messages page by page | messages.sent_by | Query | Query a user's sent messages |
Conversations client.conversations
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
get | GET /conversations/{conversation_id} | conversations.get | Query | Get conversation info |
list_messages | GET /conversations/{conversation_id}/messages | conversations.messages | Query | Fetch a conversation's history |
iter_messages | Calls GET /conversations/{conversation_id}/messages page by page | conversations.messages | Query | Fetch a conversation's history |
list_pins | GET /conversations/{conversation_id}/pins | conversations.pins | Query | List pinned messages in a conversation |
iter_pins | Calls GET /conversations/{conversation_id}/pins page by page | conversations.pins | Query | List pinned messages in a conversation |
get_single | GET /single-conversations/{username}/{peer} | conversations.single | Query | Get the one-to-one conversation between two users |
list_of_user | GET /users/{username}/conversations | conversations.of_user | Query | List a user's conversations |
iter_of_user | Calls GET /users/{username}/conversations page by page | conversations.of_user | Query | List a user's conversations |
mark_all_read | POST /users/{username}/conversations/read-all | conversations.mark_all_read | Idempotent | Mark everything as read |
get_state_of_user | GET /users/{username}/conversations/{conversation_id} | conversations.state_of_user | Query | Get one of a user's conversations |
delete | DELETE /users/{username}/conversations/{conversation_id} | conversations.delete | Idempotent | Delete a conversation |
clear | POST /users/{username}/conversations/{conversation_id}/clear | conversations.clear | Idempotent | Clear chat history |
delete_messages | POST /users/{username}/conversations/{conversation_id}/messages/delete | conversations.delete_messages | Idempotent | Delete messages |
mark_read | POST /users/{username}/conversations/{conversation_id}/read | conversations.mark_read | Idempotent | Mark a conversation as read |
unread_count | GET /users/{username}/unread-count | conversations.unread_count | Query | Get a user's total unread count |
Files client.media
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
upload | POST /media/uploads, uploading the content, POST /media/uploads/{file_id}/complete | media.create_upload and others | See Uploading files | Upload files |
resume_upload | GET /media/uploads/{file_id}/parts, uploading missing parts, POST /media/uploads/{file_id}/complete | media.uploaded_parts and others | Idempotent | Upload files |
download | POST /media/download-urls, then reading from the download address | media.download_urls | Query | Get download addresses |
get_download_urls | POST /media/download-urls | media.download_urls | Query | Get download addresses |
get_file | GET /media/files/{file_id} | media.file | Query | Get a file |
delete_file | DELETE /media/files/{file_id} | media.delete_file | Idempotent | Delete a file |
list_group_files | GET /media/groups/{group_id}/files | media.group_files | Query | List group files |
iter_group_files | Calls GET /media/groups/{group_id}/files page by page | media.group_files | Query | List group files |
create_upload | POST /media/uploads | media.create_upload | No retry | Create an upload |
cancel_upload | DELETE /media/uploads/{file_id} | media.cancel_upload | Idempotent | Cancel an upload |
complete_upload | POST /media/uploads/{file_id}/complete | media.complete_upload | Idempotent | Complete the upload |
get_part_urls | POST /media/uploads/{file_id}/parts | media.part_urls | Query | Get part upload addresses |
list_uploaded_parts | GET /media/uploads/{file_id}/parts | media.uploaded_parts | Query | List uploaded parts |
usage | GET /media/usage | media.usage | Query | Get storage usage |
Push settings client.push
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
list_devices | GET /users/{username}/push-devices | push.devices | Query | List push devices |
unbind_device | DELETE /users/{username}/push-devices/{session_id} | push.unbind_device | Idempotent | Unbind a push device |
get_settings | GET /users/{username}/push-settings | push.settings | Query | Get push settings |
update_settings | PATCH /users/{username}/push-settings | push.update_settings | Idempotent | Update push settings |
list_mutes | GET /users/{username}/push-settings/conversations | push.mutes | Query | List conversation Do Not Disturb |
iter_mutes | Calls GET /users/{username}/push-settings/conversations page by page | push.mutes | Query | List conversation Do Not Disturb |
mute_group | PUT /users/{username}/push-settings/conversations/group/{group_id} | push.mute_group | Idempotent | Set conversation Do Not Disturb |
unmute_group | DELETE /users/{username}/push-settings/conversations/group/{group_id} | push.unmute_group | Idempotent | Remove conversation Do Not Disturb |
mute_single | PUT /users/{username}/push-settings/conversations/single/{peer} | push.mute_single | Idempotent | Set conversation Do Not Disturb |
unmute_single | DELETE /users/{username}/push-settings/conversations/single/{peer} | push.unmute_single | Idempotent | Remove conversation Do Not Disturb |
Chat rooms client.chatrooms
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
create | POST /chatrooms | chatrooms.create | No retry | Create a chat room |
list | GET /chatrooms | chatrooms.list | Query | List chat rooms |
iter | Calls GET /chatrooms page by page | chatrooms.list | Query | List chat rooms |
online_counts | POST /chatrooms/online-counts | chatrooms.online_counts | Query | Get online counts in batches |
get | GET /chatrooms/{room_id} | chatrooms.get | Query | Get a chat room |
update | PATCH /chatrooms/{room_id} | chatrooms.update | Idempotent | Update a chat room's profile |
delete | DELETE /chatrooms/{room_id} | chatrooms.delete | Idempotent | Dissolve a chat room |
set_admin | PUT /chatrooms/{room_id}/admins/{username} | chatrooms.set_admin | Idempotent | Set an admin |
remove_admin | DELETE /chatrooms/{room_id}/admins/{username} | chatrooms.remove_admin | Idempotent | Remove an admin |
list_allowlist | GET /chatrooms/{room_id}/allowlist | chatrooms.allowlist | Query | List the allowlist |
iter_allowlist | Calls GET /chatrooms/{room_id}/allowlist page by page | chatrooms.allowlist | Query | List the allowlist |
add_to_allowlist | POST /chatrooms/{room_id}/allowlist | chatrooms.add_to_allowlist | Idempotent | Add to the allowlist |
remove_from_allowlist | POST /chatrooms/{room_id}/allowlist/batch-delete | chatrooms.remove_from_allowlist | Idempotent | Remove from the allowlist |
get_attributes | GET /chatrooms/{room_id}/attributes | chatrooms.attributes | Query | Get chat room attributes |
set_attributes | PUT /chatrooms/{room_id}/attributes | chatrooms.set_attributes | Idempotent | Set chat room attributes |
remove_attributes | POST /chatrooms/{room_id}/attributes/batch-delete | chatrooms.remove_attributes | Idempotent | Delete chat room attributes |
list_bans | GET /chatrooms/{room_id}/bans | chatrooms.bans | Query | List bans |
iter_bans | Calls GET /chatrooms/{room_id}/bans page by page | chatrooms.bans | Query | List bans |
ban | POST /chatrooms/{room_id}/bans | chatrooms.ban | Idempotent | Ban users |
unban | POST /chatrooms/{room_id}/bans/batch-delete | chatrooms.unban | Idempotent | Unban users |
disable | POST /chatrooms/{room_id}/disable | chatrooms.disable | Idempotent | Ban a chat room |
enable | POST /chatrooms/{room_id}/enable | chatrooms.enable | Idempotent | Unban a chat room |
list_members | GET /chatrooms/{room_id}/members | chatrooms.members | Query | List chat room members |
iter_members | Calls GET /chatrooms/{room_id}/members page by page | chatrooms.members | Query | List chat room members |
kick | POST /chatrooms/{room_id}/members/batch-delete | chatrooms.kick | Idempotent | Remove chat room members |
get_member | GET /chatrooms/{room_id}/members/{username} | chatrooms.member | Query | Check whether a user is in the room |
send | POST /chatrooms/{room_id}/messages | chatrooms.send | Idempotency key; no retry when priority="low" | Send a chat room message |
list_recent_messages | GET /chatrooms/{room_id}/messages | chatrooms.recent_messages | Query | Query recent messages |
recall | POST /chatrooms/{room_id}/messages/{message_id}/recall | chatrooms.recall | Idempotent | Recall a chat room message |
set_mute_all | PUT /chatrooms/{room_id}/mute-all(on=True)DELETE /chatrooms/{room_id}/mute-all(on=False) | chatrooms.mute_allchatrooms.unmute_all | Idempotent | Turn on mute-all Turn off mute-all |
list_mutes | GET /chatrooms/{room_id}/mutes | chatrooms.mutes | Query | List mutes |
iter_mutes | Calls GET /chatrooms/{room_id}/mutes page by page | chatrooms.mutes | Query | List mutes |
mute | POST /chatrooms/{room_id}/mutes | chatrooms.mute | Idempotent | Mute users |
unmute | POST /chatrooms/{room_id}/mutes/batch-delete | chatrooms.unmute | Idempotent | Unmute users |
transfer_owner | PUT /chatrooms/{room_id}/owner | chatrooms.transfer_owner | Idempotent | Transfer ownership |
Content moderation client.moderation
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
process_pending | GET /moderation/items, GET /moderation/items/{item_id}/content, POST /moderation/items/{item_id}/decide | moderation.items and others | Decisions carry version, so retrying is safe | Review items and violations |
get_config | GET /moderation/config | moderation.config | Query | Get moderation config |
update_config | PATCH /moderation/config | moderation.update_config | Idempotent | Update moderation config |
list_items | GET /moderation/items | moderation.items | Query | List review items |
iter_items | Calls GET /moderation/items page by page | moderation.items | Query | List review items |
batch_decide | POST /moderation/items/batch-decide | moderation.batch_decide | Idempotent | Batch decide |
get_item | GET /moderation/items/{item_id} | moderation.item | Query | Get a review item |
get_item_content | GET /moderation/items/{item_id}/content | moderation.item_content | Query | Read an item's content |
decide | POST /moderation/items/{item_id}/decide | moderation.decide | Idempotent; no retry with actions but no version | Decide |
escalate | POST /moderation/items/{item_id}/escalate | moderation.escalate | No retry | Escalate to the platform |
list_platform_actions | GET /moderation/platform-actions | moderation.platform_actions | Query | List platform actions |
iter_platform_actions | Calls GET /moderation/platform-actions page by page | moderation.platform_actions | Query | List platform actions |
report | POST /moderation/reports | moderation.report | Idempotent | Report on a user's behalf |
stats | GET /moderation/stats | moderation.stats | Query | Get statistics |
check_text | POST /moderation/text-check | moderation.check_text | Query | Check text |
list_violations | GET /moderation/users/{username}/violations | moderation.violations | Query | Get a user's violations |
iter_violations | Calls GET /moderation/users/{username}/violations page by page | moderation.violations | Query | Get a user's violations |
clear_violations | DELETE /moderation/users/{username}/violations | moderation.clear_violations | Idempotent | Clear a user's violations |
list_word_lists | GET /moderation/word-lists | moderation.word_lists | Query | List word lists |
create_word_list | POST /moderation/word-lists | moderation.create_word_list | No retry | Create a word list |
get_word_list | GET /moderation/word-lists/{list_id} | moderation.word_list | Query | Get a word list |
update_word_list | PATCH /moderation/word-lists/{list_id} | moderation.update_word_list | Idempotent | Update a word list |
delete_word_list | DELETE /moderation/word-lists/{list_id} | moderation.delete_word_list | Idempotent | Delete a word list |
list_words | GET /moderation/word-lists/{list_id}/words | moderation.words | Query | List words |
iter_words | Calls GET /moderation/word-lists/{list_id}/words page by page | moderation.words | Query | List words |
add_words | POST /moderation/word-lists/{list_id}/words/batch | moderation.add_words | Idempotent | Add words |
remove_words | POST /moderation/word-lists/{list_id}/words/batch-delete | moderation.remove_words | Idempotent | Delete words |
process_pending(handle, *, scene=UNSET, limit=20, stop_on_error=False) goes through pending moderation items one by one (status pending or auto_violation): it reads each item's content, calls handle(item, content), and makes the decision in the Decision it returns, skipping the item when it returns None; it returns the number of decisions made. Decisions carry the version that was read, so retrying is safe, and items already handled by someone else (version_conflict) are skipped. When handle raises, it logs and continues; with stop_on_error=True it raises. In the async client, handle can be a coroutine function.
from deeprespond_im import Decision, DRClient
from deeprespond_im.types import ItemContent, ModerationItem
def review(item: ModerationItem, content: ItemContent) -> Decision | None:
if item.scene != "message":
return None # 跳过,留给人工
return Decision("no_violation", note="自动复审:无违规")
def run_review(client: DRClient) -> None:
decided = client.moderation.process_pending(review, scene="message")
print("处理了", decided, "条")Calls client.calls
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
list | GET /calls | calls.list | Query | List calls |
iter | Calls GET /calls page by page | calls.list | Query | List calls |
get | GET /calls/{call_id} | calls.get | Query | Get call details |
end | POST /calls/{call_id}/end | calls.end | Idempotent | End a call |
remove_member | POST /calls/{call_id}/members/{username}/remove | calls.remove_member | Idempotent | Remove a member from a call |
stats | GET /rtc/stats | calls.stats | Query | Get call statistics |
get_active_call | GET /users/{username}/calls/active | calls.active_of | Query | Get a user's ongoing calls |
Presence client.presence
| Method | REST API | API name | Auto retry | Docs |
|---|---|---|---|---|
query | POST /presence/query | presence.query | Query | Query presence in batches |
get | GET /users/{username}/presence | presence.get | Query | Get a user's presence |
Standalone RTC channels: client.channels
This service only manages channels; it doesn't join audio and video for users. For parameters and responses, see the channel REST API. APIs in the table omit the app prefix.
| Method | REST API | Parameters |
|---|---|---|
create | PUT /rtc/channels/{channel_id} | Path parameters first; query and body fields as keyword arguments |
list | GET /rtc/channels | Path parameters first; query and body fields as keyword arguments |
get | GET /rtc/channels/{channel_id} | Path parameters first; query and body fields as keyword arguments |
update | PATCH /rtc/channels/{channel_id} | Path parameters first; query and body fields as keyword arguments |
close | POST /rtc/channels/{channel_id}/close | Path parameters first; query and body fields as keyword arguments |
issue_tickets | POST /rtc/channels/{channel_id}/tickets | Path parameters first; query and body fields as keyword arguments |
revoke_tickets | POST /rtc/channels/{channel_id}/tickets/revoke | Path parameters first; query and body fields as keyword arguments |
sessions | GET /rtc/channels/{channel_id}/sessions | Path parameters first; query and body fields as keyword arguments |
remove_member | POST /rtc/channels/{channel_id}/members/{username}/remove | Path parameters first; query and body fields as keyword arguments |
bans | GET /rtc/channels/{channel_id}/bans | Path parameters first; query and body fields as keyword arguments |
get_ban | GET /rtc/channels/{channel_id}/bans/{username} | Path parameters first; query and body fields as keyword arguments |
ban | PUT /rtc/channels/{channel_id}/bans/{username} | Path parameters first; query and body fields as keyword arguments |
unban | DELETE /rtc/channels/{channel_id}/bans/{username} | Path parameters first; query and body fields as keyword arguments |
stats | GET /rtc/channel-stats | Path parameters first; query and body fields as keyword arguments |
usage_adjustments | GET /rtc/channel-usage-adjustments | Path parameters first; query and body fields as keyword arguments |
Results are dedicated types for channels, sessions, tickets, bans, stats and usage adjustments, keeping the raw data. In the create result, created means the server returned 201 (created); in close and remove results, pending means it returned 202 (in progress). These aren't fields in the response body. next_cursor on the last page, ban when there's no ban, and expiry times that can be cleared all keep null.
Channel list methods return one page; page through with next_cursor yourself. There's no iter method like the one for calls (calls). expires_at distinguishes three states: not sent, null (clear) and a value. Issuing tickets isn't retried automatically; removing members and revoking tickets use a fixed operation_id.
Game rooms client.game
Create rooms, issue join tickets, start, close, remove players and query. For usage see Calling the API.
| Method | REST API | Operation | Retried | Docs |
|---|---|---|---|---|
list_regions | GET /game/regions | game.list_regions | Query | List regions |
create_room | PUT /game/rooms/{room_id} | game.create_room | Idempotent | Create a room |
issue_tickets | POST /game/rooms/{room_id}/tickets | game.issue_tickets | No retry | Issue join tickets |
start_room | POST /game/rooms/{room_id}/start | game.start_room | Idempotent | Start |
close_room | POST /game/rooms/{room_id}/close | game.close_room | Idempotent | Close a room |
remove_member | POST /game/rooms/{room_id}/members/{username}/remove | game.remove_member | Idempotency key | Remove a player |
get_room | GET /game/rooms/{room_id} | game.get_room | Query | Get a room |
list_rooms | GET /game/rooms | game.list_rooms | Query | List rooms |
iter_rooms | Pages through GET /game/rooms | game.list_rooms | Query | List rooms |
list_members | GET /game/rooms/{room_id}/members | game.list_members | Query | List members |
created, accepted and removed in the results come from the status code (True for 201 and 202); they are not fields of the response body. When operation_id is omitted, remove_member generates one and keeps it across retries.
AI conversations: client.ai
Low-level APIs for bot management and streaming replies. Replies usually start with start_stream, whose stream object handles batching, continuous writes and retries; see Calling the API. stream_stopped stops the stream in this process when ai.stream_stopped arrives (the callback handler calls it for you).
| Method | REST API | API name | Docs |
|---|---|---|---|
create_bot | POST /ai/bots | ai.create_bot | Create a bot |
list_bots / iter_bots | GET /ai/bots | ai.list_bots | List bots |
get_bot | GET /ai/bots/{username} | ai.get_bot | Get a bot |
update_bot | PATCH /ai/bots/{username} | ai.update_bot | Update a bot |
disable_bot | POST /ai/bots/{username}/disable | ai.disable_bot | Disable and enable |
enable_bot | POST /ai/bots/{username}/enable | ai.enable_bot | Disable and enable |
delete_bot | DELETE /ai/bots/{username} | ai.delete_bot | Delete a bot |
create_stream | POST /ai/streams | ai.create_stream | Start a reply |
get_stream | GET /ai/streams/{stream_id} | ai.get_stream | Get a stream |
write_deltas | POST /ai/streams/{stream_id}/deltas:batch | ai.write_deltas | Batch write |
finish_stream | POST /ai/streams/{stream_id}/finish | ai.finish_stream | Finish a reply |
fail_stream | POST /ai/streams/{stream_id}/fail | ai.fail_stream | Report a failure |
