Start free. Scale as your blog grows.Get started

Get started

Quickstart

Start a new blog with one command, or add ContioReach to an app you already have in three steps.

Fastest way: one command

Starting a new blog? One command creates a complete project for Next.js, Nuxt, Astro, SvelteKit, Remix or React, with listing pages, article routes, caching and the publish webhook already wired:

Terminal
npx create-contioreach-blog my-blog
cd my-blog
npm run dev

It runs on demo content straight away, with no account needed. When you are ready, paste your own API key into .env.local (.env for every framework except Next.js) and restart. The demo banner disappears and your own posts show up.

Adding ContioReach to an application you already have? Follow the three steps below.

1. Get your API key

Open your ContioReach workspace and navigate to:

Workspace
Developer Settings → API Keys

Copy your blog API key.

Treat this value as a secret. Your API key should remain in server side code or a secure server environment.

2. Add your environment variables

Create a .env.local file:

.env.local
CMS_API_KEY=your_api_key_here
CMS_API_URL=https://cms-api.contioreach.com

Do not commit your real API key to source control.

3. Fetch your posts

Create a helper function:

lib/posts.js
export async function getPosts() {
  const response = await fetch(
    `${process.env.CMS_API_URL}/v1/blogs?limit=10&minimal=true`,
    {
      headers: {
        "X-API-Key": process.env.CMS_API_KEY
      }
    }
  );

  if (!response.ok) {
    throw new Error(
      `Failed to fetch posts: ${response.status}`
    );
  }

  const result = await response.json();

  return result.data;
}

The data property contains the posts returned by ContioReach.

That is the basic integration

  • Your application requests the content.
  • ContioReach returns structured JSON.
  • Your frontend decides how to present it.

For a complete blog — listing pages, article routes, caching, and instant publishing — follow the guide for your framework:

Was this page helpful?