Developer Documentation

RCP REST API

Authenticated, subscription-aware access to the exact content your membership level unlocks.

All routes operate under /wp-json/rcp/v1/ and automatically exclude posts older than 7 days.

Authentication

The RCP API uses HTTP Basic Authentication. You'll need two things:

1. Your Email

The email address associated with your Radio Content Pro account.

2. Application Password

Generate one from your Account Settings under "Application Passwords".

terminal
curl -u [email protected]:xxxx-xxxx-xxxx-xxxx \
  'https://app.radiocontentpro.com/wp-json/rcp/v1/feed?per_page=5'

Security Note: Application passwords are separate from your login password. You can revoke them anytime without affecting your main account access.

API Endpoints

Base URL: https://app.radiocontentpro.com/wp-json/rcp/v1

GET/feed

Retrieve a paginated list of posts you have access to.

Parameters

NameTypeDefaultDescription
per_pageinteger10Posts per request (max 50)
pageinteger1Page number for pagination
afterISO 8601Return only posts published after this date/time
fieldsstringdefault setComma-separated field names or "all"
GET/posts/{id}

Fetch a single post by ID. Returns 403 if post is outside your subscription level.

Parameters

NameTypeDefaultDescription
fieldsstringdefault setComma-separated field names or "all"
GET/media/{id}

Download a protected media file. Binary response streamed directly.

Response Fields

Each post in the API response includes these fields. Use the fields parameter to request only what you need.

Basic

idUnique post identifier
slugURL-friendly post slug
titlePost title
publishedISO 8601 publish date/time
modifiedISO 8601 last modified date/time
linkPermalink to the post

Content

content_htmlFull HTML content
content_textPlain text content
excerptShort excerpt/summary
blog_post_titleBlog-formatted title
blog_post_htmlBlog-formatted HTML
blog_post_textBlog-formatted plain text

Media

featured_imageObject with url, width, height, alt
featured_image_htmlReady-to-use <img> tag

On-Air Scripts

tease_1, tease_2, tease_3On-air tease variations (HTML)
tease_1_text, tease_2_text, tease_3_textTease variations (plain text)
10_second_script10-second read script (HTML)
10_second_script_text10-second read script (plain text)
20_second_script20-second read script (HTML)
20_second_script_text20-second read script (plain text)
commentary_video_scriptVideo commentary script (HTML)
commentary_video_script_textVideo commentary script (plain text)

Response Variations

edgy_responseEdgier tone response (HTML)
mainstream_responseMainstream tone response (HTML)
family_friendly_responseFamily-friendly response (HTML)
*_text variantsPlain text versions of each response

Phone Topics

phone_topic_1 through phone_topic_4Caller discussion topics (HTML)
phone_topic_*_textPlain text versions

Social Media

facebook_postFacebook-ready post (HTML)
facebook_post_textFacebook post (plain text)
x_post_edgyX/Twitter post - edgy tone
x_post_mainstreamX/Twitter post - mainstream tone
x_post_family_friendlyX/Twitter post - family-friendly
instagram_postInstagram caption (HTML)
instagram_post_textInstagram caption (plain text)

Social Thought Starters

other_social_thought_starter_edgy_1, _2Additional edgy social prompts
other_social_thought_starter_mainstream_1, _2Additional mainstream prompts
other_social_thought_starter_family_friendly_1, _2Additional family-friendly prompts

AI & Metadata

ai_image_generation_promptPrompt for AI image generation
categoriesArray of category objects

Field Filtering

Optimize your API responses by requesting only the fields you need. This reduces payload size and improves performance.

Get all available fields:

?fields=all

Get specific fields:

?fields=title,blog_post_html,featured_image

Get social content only:

?fields=title,facebook_post,x_post_mainstream,instagram_post

Tip: If you don't specify fields, you'll receive a default set of commonly-used fields.

Code Examples

JSJavaScript / Node.js

// Fetch latest content from RCP API
const credentials = btoa(`${email}:${appPassword}`);

const response = await fetch(
  'https://app.radiocontentpro.com/wp-json/rcp/v1/feed?per_page=10&fields=title,blog_post_html,featured_image',
  {
    headers: {
      'Authorization': `Basic ${credentials}`,
    },
  }
);

const posts = await response.json();

posts.forEach(post => {
  console.log(post.title);
  console.log(post.blog_post_html);
});

PHPPHP

<?php
$email = '[email protected]';
$appPassword = 'xxxx-xxxx-xxxx-xxxx';

$ch = curl_init();
curl_setopt_array($ch, [
  CURLOPT_URL => 'https://app.radiocontentpro.com/wp-json/rcp/v1/feed?per_page=10',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_USERPWD => "$email:$appPassword",
]);

$response = curl_exec($ch);
$posts = json_decode($response, true);

foreach ($posts as $post) {
  echo $post['title'] . "\n";
}
?>

cURLCommand Line

curl -u [email protected]:xxxx-xxxx-xxxx-xxxx \
  'https://app.radiocontentpro.com/wp-json/rcp/v1/feed?per_page=5'

API Principles

Versioned & Stable

The current v1 API is locked. Future updates won't break your existing integration.

Subscription-Aware

The API automatically filters content based on your membership level. No extra logic needed.

Fresh Content

New stories arrive every 5 minutes. Posts older than 7 days are automatically excluded.

Ready to Build?

API access is included with every RCP subscription. Start your free trial to get your credentials.

Need help? Contact our team