Agility CMS documentationAgility CMS documentation
OverviewEditorsDevelopersOwners & AdminsTraining GuideApps
Sign inLet's Chat
Training
Introduction to Agility CMS for DevelopersArchitecture Deep DiveProject SetupAPI BasicsComponent DevelopmentContent Fetching PatternsCaching StrategiesPreview ModeInternationalizationBest PracticesDeveloper Training Guide

Developers

API Basics

This guide covers the fundamentals of working with Agility CMS APIs, including authentication, endpoints, and common patterns.

This guide covers the fundamentals of working with Agility CMS APIs, including authentication, endpoints, and common patterns.

API Overview

Agility CMS provides several APIs for different use cases:

  • Content Fetch API: Retrieve published content
  • Content Management API: Create, update, and manage content programmatically
  • Content Sync API: Bulk content synchronization
  • GraphQL API: Query content using GraphQL

Content Fetch API

Base URL

https://api.aglty.io/{instance-guid}/fetch

Authentication

Include your API key in the request header:

APIKey: your-fetch-key

Common Endpoints

Get Page

GET /{instance-guid}/fetch/{locale}/page/{pageID}

Example:

curl -X GET "https://api.aglty.io/13f09fe2-u/fetch/en-us/page/2" \
  -H "accept: application/json" \
  -H "APIKey: your-fetch-key"

Get Content List

GET /{instance-guid}/fetch/{locale}/list/{referenceName}

Example:

curl -X GET "https://api.aglty.io/13f09fe2-u/fetch/en-us/list/posts" \
  -H "accept: application/json" \
  -H "APIKey: your-fetch-key"

Get Content Item

GET /{instance-guid}/fetch/{locale}/item/{contentID}

Example:

curl -X GET "https://api.aglty.io/13f09fe2-u/fetch/en-us/item/204" \
  -H "accept: application/json" \
  -H "APIKey: your-fetch-key"

Query Parameters

Content Link Depth

Control how deeply linked content is populated:

?contentLinkDepth=1  # Populate first level of linked content
?contentLinkDepth=2  # Populate two levels deep

Filtering

Filter content lists:

?filter=fields.categoryID:eq:5

Sorting

Sort content lists:

?sort=fields.postDate:desc

Pagination

Paginate content lists:

?take=10&skip=0

Using the SDK

Get Content Item

import { getContentItem } from "@/lib/cms/getContentItem"

const { fields, contentID } = await getContentItem<IPost>({
  contentID: 204,
  languageCode: "en-us"
})

Get Content List

import { getContentList } from "@/lib/cms/getContentList"

const { items, totalCount } = await getContentList<IPost>({
  referenceName: "posts",
  languageCode: "en-us",
  take: 10,
  skip: 0
})

Get Page

import { getAgilityPage } from "@/lib/cms/getAgilityPage"

const page = await getAgilityPage({
  slug: ["blog", "my-post"],
  languageCode: "en-us",
  channelName: "website",
  isPreview: false
})

Response Structure

Content Item Response

{
  "contentID": 204,
  "properties": {
    "state": 2,
    "modified": "2025-12-08T15:12:10.883",
    "versionID": 1287,
    "referenceName": "posts",
    "definitionName": "Post"
  },
  "fields": {
    "heading": "My Post Title",
    "content": "<p>Post content...</p>",
    "image": {
      "url": "https://cdn.agilitycms.com/...",
      "label": "Image label"
    }
  }
}

Content List Response

{
  "items": [
    {
      "contentID": 204,
      "fields": { ... }
    }
  ],
  "totalCount": 10
}

Page Response

{
  "pageID": 2,
  "name": "home",
  "title": "Home",
  "zones": {
    "main-content-zone": [
      {
        "module": "Hero",
        "item": {
          "contentID": 123,
          "fields": { ... }
        }
      }
    ]
  }
}

Error Handling

Common Errors

401 Unauthorized:

  • Invalid or missing API key
  • Check API key in request header

404 Not Found:

  • Content item doesn't exist
  • Wrong content ID or reference name
  • Content not published

400 Bad Request:

  • Invalid parameters
  • Check query parameters

Error Handling Pattern

try {
  const { fields } = await getContentItem({
    contentID: 123,
    languageCode: "en-us"
  })
} catch (error) {
  if (error.status === 404) {
    // Handle not found
  } else if (error.status === 401) {
    // Handle unauthorized
  } else {
    // Handle other errors
  }
}

Best Practices

  1. Use SDKs: Prefer SDKs over direct API calls
  2. Type Safety: Use TypeScript for type-safe responses
  3. Error Handling: Always handle errors gracefully
  4. Caching: Leverage built-in caching strategies
  5. Rate Limiting: Be mindful of API rate limits

Next: Component Development - Building components

← Previous
Project Setup
Next →
Component Development
On this page
API OverviewContent Fetch APIUsing the SDKResponse StructureError HandlingBest Practices
Agility CMS documentationAgility CMS documentation

Documentation for the CMS built for editors, developers, and AI agents.

Docs
  • Overview
  • Editors
  • Developers
  • Owners & Admins
  • Training Guide
  • Changelog
Resources
  • Get Support
  • MCP Server
  • System Status
  • llms.txt
Agility
  • agilitycms.com
  • Start Free Trial
  • Sign in
  • Blog
© 2026 Agility Inc. All rights reserved.
Privacy PolicyTerms of Service