Public API v1.2 - Roar/Runner

This in the current version of the API
RebelMouse Public API version 1.2 is available as of August 16th, 2016. The older version of the API (Public API version 1.1) will be deprecated on December 1st, 2016. Please make sure to switch over any and all calls to the new API by that time.

READ REQUESTS :

FRONTPAGE POSTS

Returns frontpage posts.

https://{roar_domain}/api/1.2/posts/frontpage?limit={limit}&offset={offset}

<strong>Argument    Required    Default    Description                  Example</strong>limit       no          10         number of posts to return    1offset      no          0          number of posts to skip      10

POSTS BY SECTION

Returns section's posts.

https://{roar_domain}/api/1.2/posts/section?section_name={section}&limit={limit}&offset={offset}

<strong>Argument        Required    Default    Description                  Example</strong>limit           no          10         number of posts to return    1offset          no          0          number of posts to skip      10section_name    yes         -          section's url                apps

POSTS BY AUTHOR

Returns author's posts.

https://{roar_domain}/api/1.2/posts/author?author_name={author_name}&limit={limit}&offset={offset}

<strong>Argument       Required    Default    Description                  Example</strong>limit          no          10         number of posts to return    1offset         no          0          number of posts to skip      10author_name    yes         -          author's name                luladog

POSTS BY TAG

Returns posts by tag.

https://{roar_domain}/api/1.2/posts/tag?tag={tag}&exclude_tags={exclude_tags}&limit={limit}&offset={offset}

<strong>Argument        Required    Default    Description                               Example</strong>limit           no          10         number of posts to return                 1offset          no          0          number of posts to skip                   10roar_domain     yes         -          roar domain                               positivemousetag             yes         -          tag                                       pythonexclude_tags    no          -          tags to exclude (comma separated list)    mouse

POSTS' DETAILS

Returns posts' details.

https://{roar_domain}/api/1.2/posts?ids={ids}

<strong>Argument    Required    Default    Description     Example</strong>ids         yes         -          ids of posts    1,2,3

SITES' DETAILS

Return sites' details.

https://{roar_domain}/api/1.2/site/details?site_id={site_id}

<strong>Argument    Required    Default    Description    Example</strong>site_id     yes         -          site's id      1

AUTHORS' DETAILS

Return authors' details.

https://{roar_domain}/api/1.2/authors?ids={ids}&access_token={access_token}

<strong>Argument        Required    Default    Description     Example</strong>ids             yes         -          authors' ids    19access_token    yes         -          access token    bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

AUTHORS' DETAILS BY NAME

Return authors' details by name.

https://{roar_domain}/api/1.2/authors/name?author_names={author_names}&access_token={access_token}

<strong>Argument        Required    Default    Description       Example</strong>author_names    yes         -          authors' names    positivemouseaccess_token    yes         -          access token      bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

AUTHORS' DETAILS BY FACEBOOK ID

Return authors' details by facebook ids.

https://{roar_domain}/api/1.2/authors/facebook?fb_ids={fb_ids}&access_token={access_token}

<strong>Argument        Required    Default    Description     Example</strong>fb_ids          yes         -          facebook ids    19323283access_token    yes         -          access token    bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

OVERALL POSTS STATS

GET https://{roar_domain}/api/1.2/insights/posts/ordered?order={order}&period={period}&limit={limit}&offset={offset}&access_token={access_token}

<strong>Argument        Required    Description                               Restrictions                                                                       Example</strong>order           yes         The field for results to be ordered by    Only "total_views" value is valid for now                                          total_viewsperiod          yes         Period which ends now                     Only "1h", "6h", "12h", "24h", "7d", "30d", "lifetime" values are valid for now    7dlimit           yes         Number of records to return               Positive integer, Max value = 30                                                   10offset          yes         Number of records to skip                 Non-negative integer                                                               5access_token    yes         Access token for the roar                 String                                                                             bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

Respons:

{    "status": {        "code": 0,        "messages": []    },    "data": {        "report": {            "records": [{                "post_id": 12312321,                "total_views": 1234            }, {                "post_id": 4859674589,                "total_views": 4321            },            ...            ]        }    }}

INDIVIDUAL POSTS STATS

GET https://{roar_domain}/api/1.2/insights/posts/details?period={period}&ids={ids}&access_token={access_token}

<strong>Argument        Required    Description                  Restrictions                                                                       Example</strong>period          yes         Period which ends now        Only "1h", "6h", "12h", "24h", "7d", "30d", "lifetime" values are valid for now    7dids             yes         List of post IDs             Positive long numbers separated by comma, Max number = 30                          12312321,4859674589access_token    yes         Access token for the roar    String                                                                             bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

Respons:

{    "status": {        "code": 0,        "messages": []    },    "data": {        "report": {            "records": [{                "post_id": 12312321,                "total_views": 1234            }, {                "post_id": 4859674589,                "total_views": 4321            },            ...            ]        }    }}

FACEBOOK WINS

GET https://{roar_domain}/api/1.2/insights/posts/wins/facebook?period={period}&ids={ids}&access_token={access_token}

<strong>Argument        Required    Description                  Restrictions                                                               Example</strong>period          yes         Period which ends now        Only "1h", "6h", "12h", "24h", "7d", "30d", "lifetime" values are valid    7dids             yes         List of post IDs             Positive long numbers separated by comma, Max number = 30                  12312321,4859674589access_token    yes         Access token for the roar    String                                                                     bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

Response:

{    "status": {        "code": 0,        "messages": []    },    "data": {        "report": {            "records": [{                "post_id": 567,                "page_fans": 84872,                "page_name": "HOT 107.9",                "page_logo": "https://scontent.xx.fbcdn.net/hprofile-xpt1/v/t1.0-1/p50x50/1509847_10152819708755859_1441502743297395555_n.png?oh=909b90499656ccd816f5d9202526d5ff&oe=57549D5A",                "page_url": "https://www.facebook.com/56194705858",                "post_created_at": 1456822800,                "post_likes": 5,                "post_shares": 0,                "post_comments": 0,                "post_url": "https://www.facebook.com/Hot107.9/posts/10153962058115859"            },            ...            ]        }    }}

TWITTER WINS

GET https://{roar_domain}/api/1.2/insights/posts/wins/twitter?period={period}&ids={ids}&access_token={access_token}

<strong>Argument        Required    Description                  Restrictions                                                               Example</strong>period          yes         Period which ends now        Only "1h", "6h", "12h", "24h", "7d", "30d", "lifetime" values are valid    7dids             yes         List of post IDs             Positive long numbers separated by comma, Max number = 30                  12312321,4859674589access_token    yes         Access token for the roar    String                                                                     bdQ0XiTDyR2eOsQHkCooS6CeBwgD4vAd81ux4UmTFx2qXfzeEphrCFGZuK8S5Fk6

Response:

{    "status": {        "code": 0,        "messages": []    },    "data": {        "report": {            "records": [{                "post_id": 234,                "account_fans": 63500,                "account_logo": "https://pbs.twimg.com/profile_images/706968590717681664/MfcERn0d_normal.jpg",                "account_name": "The Dodo",                "account_url: "https://www.twitter.com/statuses/708080524666007552",                "tweet_created_at" :1457654527,                "tweet_likes": 328,                "tweet_retweets": 328,                "tweet_url": "https://twitter.com/dodo/status/708080524666007552"            },            ...            ]        }    }}

Authorization

Our REST API service uses a key based authorization that could be managed in your Account page. You can find your own API key in form of a 64 character string, and note that we will be able to identifies you with it, so please do not share it.

All client requests are authorized using valid API keys via an specific HTTP header or query string. Query string takes priority over HTTP header, so query string will be considered if you send both at the same time.

Sending API key via query string

In order to authorize requests using "api_key" query string, you need to send it as follows:

<HTTP-METHOD> <domain>/api/<version>/<path>?api_key=<api_key> 

Sending API key via HTTP header

In order to authorize requests using HTTP header named "X-RMAuth", you need to perform as follows:

<HTTP-METHOD> <domain>/api/<version>/<path> X-RMAuth: <api_key> 

Unauthorized requests

If you send invalid API keys, you are going to get a response with HTTP 403 Forbidden status and the following payload:

{ "status": { "code": null, "messages": ["API key is not valid"] }, "data": null }
Rawauthors.rst

Author API

The author API supports creating users that could be used to create drafts.

Creating authors

Creates an author and sets its role as guest editor.

POST /api/1.1/authors 

Parameters

NameTypeDescription
first_nameStringFirst name - Required
last_nameStringLast name - Required
emailStringUser email - Required
passwordStringUser password - Required
about_htmlStringUser biography - Optional
image_idIntegerID of the uploaded image - Optional

Note

  • image_id can be found as id in Image API response when uploading or editing images.

Response

{ "id": <id>, "name": "paulberry", "displayname": "Paul Berry", "about_html": "This is me", "bio": "", "photo": "https://<domain>/res/avatars/default", "fb_id": null, "profile_url": "https://<domain>/community/paulberry/" }
Rawdrafts.rst

Drafts API

The draft API supports creating drafts that could be used to publish content on site.

Creating drafts

Creates a draft and sets current user as author by default.

POST /api/1.1/posts 

Parameters

NameTypeDescription
headlineStringHeadline - Required
bodyStringBody - Optional
subheadlineStringSubheadline - Optional
tagsArray of stringsTags - Optional
primary_tagStringPrimary tag - Optional
sectionsArray of stringsSections - Optional
primary_sectionStringPrimary section - Optional
og_titleStringSocial headline - Optional
og_descriptionStringSocial description - Optional
image_idIntegerID of the uploaded image - Optional
manual_image_cropsObjectCrops calculated when uploading image - Optional

Note

  • primary_section and sections fields are eligible by title using insensitive case mode. "Home" can be passed if you want to set draft in homepage.
  • image_id can be found as id in Image API response when uploading or editing images.
  • manual_image_crops can be also found as manual_image_crops in Image API response when editing images.

Response

The response can contain several fields, but would like to highlight some of them that were specially requested:

NameTypeDescription
post_urlStringURL for the draft when is published.
draft_urlStringComposited by post_url + "?draft=1", which enables users to see draft page.
slugStringURL path from post_url.
Rawimages.rst

Image API

The Image API supports uploading and editing images that could be used as splash post image, teaser, social teaser and even other features than posts such as authors creation.

Ratios

Every site in RebelMouse platform has its own image crops configured, these settings are useful when a image is going to be rezised or cropped. So they are considered in every process related to images, and each resized or cropped image has usually a different purpose depending on page type.

For Axios, we have the following ratios configured:

TitleCodeSizes
FHD16x9
  • 960x540
  • 480x270
Wide2x1
  • 1200x600
  • 600x300
Medium2x1
  • 1200x600
  • 600x300
Tall1x1
  • 600x600
Instant9x16
  • 700x1245

Uploading images

Upload a image sending its content as a part of HTTP request body or sending a URL as part of a JSON document.

POST /api/1.3/images

Parameters

NameTypeDescription
image_urlStringA image URL location - Optional

Note

Multiple files can be also sent as part of HTTP request. They are used only if image_url is not used in HTTP request.

Response

For a single image uploaded:

{ "is_animated_gif": false, "task_id": "c3e2a367-24cb-426f-9179-457a0e0ea9ec", "height": 511, "shortcode_id": "7229TA1498262817", "iptc": { "by-line": "", "caption/abstract": "" }, "id": <id>, "shortcode_params": { "is_animated_gif": false, "crop_info": "%22%7B%22image%22%3A%20%22https%3A%2F%2Fs3.amazonaws.com%2Fdev-assets.rbl.ms%2F

For multiple images uploaded:

It takes the same schema for each image uploaded but in form of an array.

Editing images

Editing an image for creating some others with certain dimensions.

PUT /api/1.3/images/<id>

Parameters

NameTypeDescription
image_urlStringA image URL location - Required
manual_image_cropsObjectCrop setting for resizing image - Optional

Manual Image Crops

It depends on ratios configured per site. It must be a objects, whose keys must be the ratio codes and the values should contain the following information:

NameTypeDescription
topIntegerAbsolute top coordinate
leftIntegerAbsolute left coordinate
heightIntegerAbsolute height coordinate
widthIntegerAbsolute width coordinate
imgHeightIntegerWidth of the original image
imgWidthIntegerHeight of the original image

Example

{ "16x9": { "top": 222, "left": 0, "height": 289, "width": 512, "imgWidth": 512, "imgHeight": 511 }, "2x1": { "top": 255, "left": 0, "height": 256, "width": 512, "imgWidth": 512, "imgHeight": 511 }, "3x2": { "top": 169, "left": 0, "height": 342, "width": 512, "imgWidth": 512, "imgHeight": 511 }, "1x1": { "top": 402, "left": 0, "height": 109, "width": 109, "imgWidth": 512, "imgHeight": 511 }, "9x16": { "top": 303, "left": 0, "height": 208, "width": 117, "imgWidth": 512, "imgHeight": 511 } } 

Response

It takes the same schema than uploading images. Only one image is permitted to edit per request.

Rawwebhooks.rst

Webhooks

Webhooks allows you to receive a notification to certain events from RebelMouse platform. HTTP POST requests are performed for the configured URL you provide us, these requests are formed with the following headers:

NameValue
User-AgentRebelMouse/0.1 Mozilla/5.0 (compatible; http://rebelmouse.com) Gecko/20100101 Firefox/7.0.1
Content-Typeapplication/json

Published post

You can receive a notification when a post is published, you are going to receive the following information:

NameTypeDescription
post_idIntegerID of the post
post_urlStringURL for the published post

Why RebelMouse Is the Best Content Marketing Platform

RebelMouse is a unique platform and company. The company was founded on the vision that media companies would need an always-modern solution to thrive in the new connected internet, and that brands would have to behave like new media companies and use the same platforms.

Keep reading... Show less

Why Premium Creative Agencies and CTOs Choose to Develop on RebelMouse vs. WordPress and Drupal

The Intersection of Design and Development: Where Your Clients Thrive

We started RebelMouse seven years ago knowing that there was a fundamental design flaw in the world of traditional CMSs: Every instance, on every platform, had to be updated independently. It's similar to an era when users had to manage their own Microsoft Exchange Server for email. The costs of managing, maintaining, and iterating on a CMS to keep it awesome and world class is typically a $10 million-a-year endeavor. But even then, these cost-prohibitive CMSs are still behind the times.

Keep reading... Show less

Native Multivariate Testing at Scale With RebelMouse

What Differentiates Our Approach

There are many popular tools that allow you to perform experiments and A/B tests on your users — primarily Google Chrome Experiments and Optimizely. But all of these solutions are JavaScript additions to your web page that sidestep the problem of old, outdated, and clumsy CMSs. These solutions work by calling on a third-party JavaScript library that rewrites a page after it's rendered. This approach adds extra page weight and creates strange user experiences due to having to wait for everything to load and be rewritten on the fly.

At RebelMouse, we've solved this in a very elegant way. At the core level of our platform, we can natively render different layouts and track the exact differences in performance when comparing a test to your other layouts.

Keep reading... Show less

Modern E-Commerce: Blur the Line Between Content and Design

Create Modular + Reusable Design Patterns on RebelMouse

Content saturation is an industry-wide problem, and the e-commerce space is no exception given that it's filled with big brands, small Etsy stores, and everyone in between all fighting for similar audiences. The best way to fight this symptom is to understand your audience and provide them with what they want.

Keep reading... Show less

Instagram-style E-commerce Features on RebelMouse

Revolutionizing E-commerce on RebelMouse

Whether you're a brand with a blog or a media company with a site, driving purchasing behavior and building an audience that uses your content to find things they love to buy is vital. We're very proud to have built out the same functionality that everyone is now used to on Instagram, with layovers on images that lead to products with attribution.

Keep reading... Show less

Building Premium Communities and User Journeys on RebelMouse

RebelMouse is much more than just a replacement for a traditional CMS. Our platform is a tremendous community-building experience. Today's social ecosystem has given us a seemingly limitless number of premium creators who understand how to create gorgeous and relevant content that drives the growth of their own audiences. These creators and influencers are either experts in certain topics, or heavily engaged in targeted content that drives their interests. They're not only consuming the content they're passionate about, but they're contributing to the conversation, too. The new role of the editor is not just to cover the most important topics and people around their expertise, but also to invite those preferred influencers into their community and get them to participate in creating premium content.

Read our deck here...

Keep reading... Show less

Dynamic Voting: Grow Traffic and Engagement Organically

Help your audience find its voice.

Creating quality content is no longer on marketers alone. We live in a universe of creators who are willing to not only consume content that resonates, but play a role in the creation, promotion, and conversations surrounding it.

Since the start of RebelMouse, we've been on a journey to create dynamic media that is easier for content creators to curate and amplify on social. It's why we've built an online engagement platform centered around the power of communities that thrive naturally in the digital ecosystem.

Keep reading... Show less

How to Monetize Your Website in Today’s Publishing Environment

In order to define distributive publishing, we have to ask the following question: If you have quality content, but nobody sees it, does it even exist? The answer is no, because your content needs to be supported in a way that lets it move seamlessly across all channels, especially site, search, and social. But let's take this question a step further: If you can't monetize your content to generate the support it needs, how do you create quality content in the first place?

Keep reading... Show less

Trigger New Pageviews With “Keep Reading” Feature

RebelMouse supports an infinite scroll feed of content that is mobile-friendly by using expandable posts. Your users can read the beginning of your article that is "before the jump," but instead of jumping to a new page, the story expands upon click to show the rest of the post. We do this with our "Keep Reading" functionality:

Keep reading... Show less

RebelMouse Outperforms Every Other CMS. Here’s the Data to Prove It.

Our Core Web Vitals drastically outpace every competitor, and we have the receipts

In an effort to build user retention and increase conversions, publishers are making a common mistake. They're adding more features to their websites, including ad placements, but losing sight of the main revenue driver: user experience.

The key to unlocking user retention lies completely in site performance. Currently, publishers are trying to build optimized websites that translate easily across devices and platforms, but fail to deliver an experience that checks all their boxes and prioritizes their readers. It takes less than a second of delayed load time to turn away a user. This is why Google has made page speed a top ranking factor on search, and shepherded the entire open web's newfound prioritization on site performance.

Game Changer: Google's Core Web Vitals Announcement

Google cemented its seriousness about page experience with the announcement of its Core Web Vitals measurements in Google Search Console. Core Web Vitals are three specific metrics that Google uses to determine a site's overall usability. While these data points will evolve over time, the 2020 version of vitals consists of three specific metrics:

Largest Contentful Paint (LCP): A website's LCP is the time it takes to load the main content on a page. Google wants LCP to happen within 2.5 seconds of when a page first starts loading.

First Input Delay (FID): This metric quantifies a user's experience when trying to interact with unresponsive pages. This usually occurs between First Meaningful Paint (FMP) and Time to Interactive (TTI) (more on what these two mean below). You want your FID score to be low to prove the usability of your site. According to Google, pages should haven an FID of less than 100 milliseconds.

Cumulative Layout Shift Score (CLS): CLS determines how often your users experience unexpected layout shifts or changes on a page. To ensure visual stability, you want your CLS score to be low. Google wants pages to maintain a CLS score of less than 0.1.

From Google.

Google says Core Web Vitals scores will be considered across every page, and will be a ranking factor in its Top Stories feature. While relevant quality content will always be the most important, the page experience ranking is now a make-or-break metric for your site's survival.

"A good page experience doesn't override having great, relevant content. However, in cases where there are multiple pages that have similar content, page experience becomes much more important for visibility in Search." —From Google's page experience announcement, May 2020

Core Web Vitals will determine every site's performance score. You can see your site's Core Web Vitals specifically via Google Search Console, but your website's overall page performance is measured using Google's PageSpeed Insights and Lighthouse tools.

At RebelMouse, we guarantee a performance score of 90 or higher via PageSpeed Insights. To do this, we've built out a platform infrastructure that exceeds industry standards on Google's key metrics, particularly its Core Web Vitals, outperforming most industry leaders.

You can read more about how we've mastered Google's KPIs here. But the truth is in the data. Below is table that provides a snapshot into how RebelMouse-powered sites score:

And here's what the scores look like for some of the biggest sites on the open web:

As you can see, there's a lot of data Google takes into account even outside of Core Web Vitals. Here's a quick summary of the other important metrics that Google trusts to measure page performance:

First Contentful Paint (FCP): This metric measures the time from click to the time when a user's browser renders the first bit of content from the Document Object Model (DOM), which is your site's HTML structure. According to Google, this is an important milestone for your readers because it provides signals that your page is loading.

First Meaningful Paint (FMP): This is the amount of time it takes the most important content, what Google calls "hero elements," to load on site. Hero elements are different for every site, but should be intuitive based on your content. This metric helps determine your site's usability.

Time to Interactive (TTI): This is the most important metric to keep an eye on. This is when the site is fully rendered and ready for user action. This is a critical point when slow load time can occur, usually because JavaScript or other complex content hasn't fully rendered. So, in short, think of TTI as how long it takes for your site to load in its entirety.

Total Blocking Time (TBT): TBT measures a page's load responsiveness to quantify how long a page is non-interactive prior to becoming interactive. You want your site to have a low TBT to maintain its usability.

Speed Index (SI): SI is the measurement of how quickly the contents of a page are populated. You want your speed index score to be as low as possible.

Creating quality content is only half the battle in 2020, and publishers are already burdened with the around-the-clock task of creating content that resonates. This is why quality content must be supported by modern technology that can keep up with the speed of the web. RebelMouse provides publishers with a CMS that supports the new content lifecycle with an editorial suite designed for reach on site, search, and social.

Click here to read more about our modern approach to web performance. If you want to make performance a priority, request a proposal today. We can easily transform your site into one of the fastest on the web, giving you increased user retention and better conversion rates than ever before.

A Modern Story of Web Performance From RebelMouse Founder + CEO Andrea Breanna

If I had more time, this website would have loaded faster

In the first months of 2020, we've focused at RebelMouse on page speed and performance. We worked very hard and found ways to take 90% of the sites we power to 90+ performance scores via Google's PageSpeed Insights tool — even with sites that are loaded with ads, embeds, third-party analytics, and other typical slow-loading elements. You can read more about our victories here.

A few months after we started this process, COVID-19 hit the world very hard. Suddenly, every media company was faced with a huge problem: Advertising fell off a cliff in what seemed like seconds. The only way to survive this unprecedented downturn is to grow traffic and control costs at the same time. So we started to shave our code and made our websites faster. We dropped costs just as dramatically as we were increasing scores.

Here are some surprises we found when doing this: If you want truly exceptional performance, none of the JavaScript and CSS frameworks that developers love so much make the cut. We thought the React version of RebelMouse was going to be the huge page speed breakthrough, until we realized the only way to achieve this goal was to write the code carefully and refactor it endlessly until it was as short as possible. As any author will tell you, like editing a book or a blog post, the revision process is never really done. By stepping away from frameworks, and methodically shaving vanilla code, our customers continue to see major improvements in performance.

As we announced this to our site network and rolled it out publicly, many of our clients asked me personally, "How did you do it?" The answer is easy to understand regardless of how technical you may be. It's perfectly summarized in this wonderful quote attributed to Mark Twain:

"If I had more time, I would have written a shorter letter."
—Blaise Pascal, 1657 (and later, more famously Mark Twain)

The universe is sometimes very beautiful, and especially when you keep it simple. If you would like to start publishing on a site optimized for both speed and sustainability, request a proposal and let's start working together.

Subscribe to Our Newsletter