The painless way to launch a CMS

Content API and editing interface that can power your website in minutes.

Built by developers for developers

Forget the hassle of traditional CMS's: our hosted API, intuitive documentation and admin interface allow you to quickly deploy a content management system loved by your team.

require 'buttercms-ruby'
ButterCMS::api_token = "api_token_BQokikJOvBiI2HlWgH4olfQ2"

# Get homepage content
homepage_content = ButterCMS::Content.fetch([
  :homepage_title,
  :homepage_headline
])

# Get landing pages
landing_pages = ButterCMS::Content.fetch([:landing_pages])
var butter = require('buttercms')('api_token_BQokikJOvBiI2HlWgH4olfQ2');

// Get homepage content
butter.content.retrieve(["homepage_title", "homepage_headline"]).then(function(response) {
  console.log(response)
});

// Get landing pages
butter.content.retrieve(["landing_pages"]).then(function(response) {
  console.log(response)
});
from butter_cms import ButterCMS
client = ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2')

def home(request):
 content = client.content_fields.get([
  'homepage_headline',
  'homepage_title'
 ])

 return render(request, 'home.html', {'content': content})

def landing_page(request, slug):
  key = 'landing_pages[slug=%s]' % slug
  resp = client.content_fields.get([key])
  pages = resp['data']['landing_pages']
    
  # If no page was found, it doesn't exist.
  if len(landing_pages) == 0:
    raise Http404
  else:
    page = pages[0]
  
  return render(request, 'landing_pages/blog.html', {'page': page})
from butter_cms import ButterCMS
client = ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2')

# Get hompage content
client.content_fields.get(['homepage_headline', 'homepage_title'])

# Get landing pages
client.content_fields.get(['landing_pages'])
class PagesController < ApplicationController
  def home
    @homepage_content = ButterCMS::Content.fetch([
      :homepage_title,
      :homepage_headline
    ])
  end

  def landing_page
    landing_pages = ButterCMS::Content.
      fetch(["landing_pages[slug=#{params[:slug]}]"])

    @page = landing_pages.first
  end
end
use ButterCMS\ButterCMS;
$butterCms = new ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2');

# Get hompage content
$butterCms->fetchContentFields(['homepage_title', 'homepage_headline']);

# Get landing pages
$butterCms->fetchContentFields(['landing_pages']);
using ButterCMS;

var client = new ButterCMSClient("api_token_BQokikJOvBiI2HlWgH4olfQ2");

# Get homepage content
var keys = new string[2] { "homepage_title", "homepage_headline" };
var contentFields = await butterClient.RetrieveContentFieldsJSONAsync(keys);

# Get landing pages
var keys = new string[1] { "landing_pages" };
var contentFields = await butterClient.RetrieveContentFieldsJSONAsync(keys);
package main

import (
    "github.com/buttercms/buttercms-go"
)

func main() {
    ButterCMS.SetAuthToken("api_token_BQokikJOvBiI2HlWgH4olfQ2")

    // Get homepage content
    ButterCMS.GetContentFields([]string{"homepage_headline", "homepage_title"})

    // Get landing pages
    ButterCMS.GetContentFields([]string{"landing_pages"})
}

Just wanted to let you know that Butter is awesome. 5 minutes to set it up and write a sample blog post. No messing around with WP templates or PHP. Exactly what I was looking for!

Jeff Judge, Founder of Bright

Beautiful admin interface

Butter comes with a hosted web interface that your content editors will love.

Try Butter free for 30-days

Get started now

The CMS you've always wanted

See how Butter compares to a traditional CMS

Simple REST API

Traditional CMS's are tangled webs of templates and database calls. With Butter your content is accessible via an API so you can bring your content anywhere and display it as you like.

Cleanly decoupled

Traditional CMS's are tightly coupled to your codebase and create unwanted interdependencies. Butter is cleanly separated through its API so you can focus only on content.

Technology agnostic

Traditional CMS's lock you into using a specific technology and are difficult to migrate off of. Butter integrates into any codebase so you are always free to choose your tech stack.

Maintenance-free

Traditional CMS's require you to host and maintain them. With Butter your content is stored on our secure servers and we take care of all the maintenance.

Get started now

Sign up with Google Sign up with Github
or