If you do not have a Kafka cluster and/or topic already, follow these steps to create one.

In the cluster details section of the Upstash Console, scroll down the REST API section and and copy UPSTASH_KAFKA_REST_URL, UPSTASH_KAFKA_REST_USERNAME and UPSTASH_KAFKA_REST_PASSWORD using the copy icons next to them.

We will use a Node.js sample code to show how to produce message(s) using the REST API. Our sample will use a topic named cities and send a few city names to this topic.

Replace following parameters in the code snippets below with your actual values.

const address = "https://tops-stingray-7863-eu1-rest-kafka.upstash.io";
const user = "G9wcy1zdGluZ3JheS03ODYzJMUX";
const pass = "eUmYCkAlxEhihIc7Hooi2IA2pz2fw==";
const auth = Buffer.from(`${user}:${pass}`).toString("base64");
const topic = "cities";

Following code will produce three city names to a topic:

async function produce(topic, msg) {
  const response = await fetch(`${address}/produce/${topic}/${msg}`, {
    headers: { Authorization: `Basic ${auth}` },
  });
  const metadata = await response.json();
  console.log(
    `Topic: ${metadata.topic}, Partition: ${metadata.partition}, Offset: ${metadata.offset}`
  );
}

produce(topic, "Tokyo");
produce(topic, "Istanbul");
produce(topic, "London");

Alternatively we can post all cities using a single request, instead of producing them one-by-one. Note that in this case, URL does not have the message argument but instead all messages are posted in the request body.

async function produceMulti(topic, ...messages) {
  let data = messages.map((msg) => {
    return { value: msg };
  });
  const response = await fetch(`${address}/produce/${topic}`, {
    headers: { Authorization: `Basic ${auth}` },
    method: "POST",
    body: JSON.stringify(data),
  });
  const metadata = await response.json();
  metadata.forEach((m) => {
    console.log(
      `Topic: ${m.topic}, Partition: ${m.partition}, Offset: ${m.offset}`
    );
  });
}

produceMulti(topic, "Tokyo", "Istanbul", "London");

For more info about using the REST API see Kafka REST Produce API section.