You can run the async code by importing Client from upstash_qstash.asyncio and awaiting the methods.

Create a topic and add 2 endpoints

from upstash_qstash import Client



client = Client("<QSTASH_TOKEN>")

topics = client.topics()

topics.upsert_or_add_endpoints(

  {

    "name": "topic_name",

    "endpoints": [

      {"url": "https://my-endpoint-1"},

      {"url": "https://my-endpoint-2"}

    ],

  }

)

Get topic by name

from upstash_qstash import Client



client = Client("<QSTASH_TOKEN>")

topics = client.topics()

topic = topics.get("topic_name")

print(topic["name"], topic["endpoints"])

List topics

from upstash_qstash import Client



client = Client("<QSTASH_TOKEN>")

topics = client.topics()

all_topics = topics.list()

for topic in all_topics:

  print(topic["name"], topic["endpoints"])

Remove an endpoint from a topic

from upstash_qstash import Client



client = Client("<QSTASH_TOKEN>")

topics = client.topics()

topics.remove_endpoints(

  {

    "name": "topic_name",

    "endpoints": [

      {"url": "https://my-endpoint-1"},

    ],

  }

)

Delete a topic

from upstash_qstash import Client



client = Client("<QSTASH_TOKEN>")

topics = client.topics()

topics.delete("topic_name")