Questions and Answers

3 min read • September 2023 (October 17, 2026)

Table of contents

  1. How to avoid Runway account suspension?
  2. Do you validate a user’s text/image prompts to ensure they are passing AI services’ safety requirements?
  3. How POST raw content to runwayml/assets and minimax/files using Make.com and similar nocode tools?

How to avoid Runway account suspension?

Using automation is against Runway’s Terms of Service, so you need to plan accordingly and have backup account(s) ready.

  • The best practice is to create several stand-by Runway accounts. These accounts should be used exclusively for API work and nothing else. We strongly recommend using a VPN to prevent your personal data/IP addresses from being leaked. You can use the Opera browser with a built-in VPN or the Brave browser with Tor support.

  • When creating accounts in bulk, make sure to restart Opera/Brave so that your IP is different every time. When creating new emails and Runway accounts, use names that closely resemble real names—something that does not look suspicious.

  • Once a new Runway account is created, you will have a few free credits with which you can test the API. After testing, log out and leave the account alone until you are ready to activate the Unlimited plan (the only subscription plan that makes sense to pay for).

  • When paying for a Runway subscription, use a virtual credit card number (provided by most major credit card companies) or services like Privacy.com. Make sure to use a credit card name and address that resemble an actual name and address. Use a different name and address for every new Runway subscription. Runway has access to all payment details and can cross-check banned accounts’ payment information to ban newly created accounts if a match is found.

  • If your account gets suspended, file a charge dispute with your credit card company. Since Runway cannot produce any evidence of you violating the ToS, the bank will fully refund your payment. Our customers have reported a 100% success rate of getting their money back, though it may take some time.

  • When using the API, try to simulate real users. Avoid running generations 24/7 by establishing quiet hours (for example, you can use two or three accounts and rotate them every 12 to 8 hours). Avoid calling API endpoints too frequently, and consider using the replyUrl webhook to retrieve results, as this will ensure the least intrusive operation.

  • Finally, monitor your API email—the one you used to subscribe to useapi.net services. The API will proactively warn you if your Runway account has any issues.

Do you validate a user’s text/image prompts to ensure they are passing AI services’ safety requirements?

It is common practice for AI services to ban users for violating prompt guidelines. Our API does not perform any prompt pre-validations — it will return an error status code when the underlying AI service moderates the job.

Generally speaking, if you’re planning to use the API for a public Telegram bot (which is one of the popular use cases) or in similar scenarios where you do not control the quality of the prompt, it might be a good idea to use a combination of a ban/stop word list along with OpenAI ChatGPT or Google Gemini to check if the prompts meet safety requirements. Gemini offers a free tier with some RPM (requests per minute) limitations.

We also offer LLM models, specifically MiniMax-Text-01, a fast instructional multimodal model that is free to use and can validate both text and images for safety. Please see POST minimax/llm.

How POST raw content to runwayml/assets and minimax/files using Make.com and similar nocode tools?

We recommend using module called 0codekit to run JavaScript and return a result.

0codekit JavaScript example
async function fetchFromURLandPOST(imageURL, name) {
  const apiToken = "<Your useapi.net API key>"; // https://useapi.net/docs/start-here/setup-useapi
  // Runway https://useapi.net/docs/api-runwayml-v1/post-runwayml-assets
  const apiUrl = `https://api.useapi.net/v1/runwayml/assets/?name=${name}`;
  // MiniMax https://useapi.net/docs/api-minimax-v1/post-minimax-files
  // const apiUrl = `https://api.useapi.net/v1/minimax/files/`;

  try {
    // Fetch the image from the URL
    const responseImage = await fetch(imageURL);

    if (!responseImage.ok) 
      throw new Error(`Failed to fetch ${imageURL}: ${responseImage.statusText}`);

    // Convert the response to a Blob
    const blob = await responseImage.blob();

    // Prepare headers for the POST request
    const headers = {
      "Authorization": `Bearer ${apiToken}`, 
      "Content-Type": blob.type,
    };

    // Make the POST request with the blob as the body
    const response = await fetch(apiUrl, {
      method: "POST",
      headers: headers,
      body: blob,
    });

    const result = await response.json();
    return { data: result };
  } catch (error) {
    return { error: error.message };
  }
}

// Calling the function
result = await fetchFromURLandPOST("https:\\website.com\image.jpeg", "my_image");