Rumora

First agent request

Mint a token, read usage, post a comment, poll until identity is present, then like.

When you finish this page, an agent or a terminal has posted one comment on YouTube or TikTok and started liking that comment, using the same credits as the web app. MCP tools send the same JSON as the curl bodies below.

If you would rather click than use a terminal, paste the token into the playground and run each command there in the same order.

Before you start

You need a team workspace with credits, and a video URL. Home paste in the web app accepts YouTube Shorts and TikTok only. This HTTP command also accepts a regular YouTube watch URL.

Set these once. HOST is https://rumora.ai in production. TOKEN is filled in after you create the key.

export HOST=https://rumora.ai
export TOKEN='rmr_YOUR_TOKEN'

1. Create a key

  1. Sign in and open the team workspace.
  2. Click API keys in the sidebar.
  3. Click Create key.
  4. Copy the full secret. It starts with rmr_. Reload hides it.

Put it in the shell:

export TOKEN='rmr_PASTE_THE_SECRET_HERE'

Only members who can manage settings can create a key. Personal accounts have no API keys page. More client snippets are in Sideload the MCP server.

2. Read remaining credits and live limits

This call spends nothing. Always do it before a write, because max comment length and minimum likes can change.

curl -sS "$HOST/api/v1/usage" \
  -H "Authorization: Bearer $TOKEN"

You should see credits_left, comment_credits, like_credits, find_credits, and limits for youtube and tiktok.

Copy two numbers for the platform of your video:

  • commentMaxLength is the longest text you may send in the next step.
  • likeMin is the smallest like quantity you may send in the last step.

If you see "code": "UNAUTHORIZED", the token is wrong. Create the key again and export TOKEN with the full secret, not the prefix.

3. Post one comment

Replace VIDEO_URL with the real URL. Replace text with your comment, at or under commentMaxLength. Keep idempotency_key at least 8 characters. If curl times out, send the same key again.

Do not add likes. The comment is not live yet, so there is nothing to like.

curl -sS -X POST "$HOST/api/v1/comments" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "VIDEO_URL",
    "text": "Useful breakdown of this.",
    "idempotency_key": "comment-1"
  }'

You should see "type": "thread" and "status": "queued". Copy id. That is the thread id.

If you see "code": "PAYMENT_REQUIRED", open checkout_url from the error, buy credits, then retry with comment-1. If you see "code": "PLATFORM", the URL is not YouTube or TikTok.

4. Poll until identity is present

Replace THREAD_ID with the id from step 3. Run this, wait a few seconds, run it again. Stop when identity is an object, not null.

curl -sS "$HOST/api/v1/status/THREAD_ID" \
  -H "Authorization: Bearer $TOKEN"

What you copy from identity depends on the platform:

  • YouTube likes need youtube_like_url, or the watch URL plus lc= and comment_id.
  • TikTok likes need video_url and username.
  • Replies on both platforms use the video URL plus the posted username. Do not send an lc URL on a reply.

If identity stays null, keep polling. The comment is not live yet. This is explained in Comment identity.

5. Like the live comment

Set quantity to likeMin from step 2, or higher. Use a new idempotency key (like-1, not comment-1). Replace the identity values with what you copied.

YouTube

curl -sS -X POST "$HOST/api/v1/comments/like" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.youtube.com/watch?v=VIDEO&lc=COMMENT_ID",
    "quantity": 25,
    "idempotency_key": "like-1"
  }'

TikTok

curl -sS -X POST "$HOST/api/v1/comments/like" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://www.tiktok.com/@user/video/VIDEO",
    "username": "posted_name",
    "quantity": 25,
    "idempotency_key": "like-1"
  }'

You should see "type": "like" and "status": "queued".

If you see "code": "QUANTITY", send at least min from the error body.

If a call fails

Match error.code in Errors. The same sequence without curl is in Comment then like.

Last updated on