{"id":1099,"date":"2026-07-02T06:59:42","date_gmt":"2026-07-01T23:59:42","guid":{"rendered":"https:\/\/sumberlaba.com\/index.php\/2026\/07\/02\/how-to-use-graphcms-as-a-headless-cms-a-comprehensive-step-by-step-guide\/"},"modified":"2026-07-02T06:59:42","modified_gmt":"2026-07-01T23:59:42","slug":"how-to-use-graphcms-as-a-headless-cms-a-comprehensive-step-by-step-guide","status":"publish","type":"post","link":"https:\/\/sumberlaba.com\/index.php\/2026\/07\/02\/how-to-use-graphcms-as-a-headless-cms-a-comprehensive-step-by-step-guide\/","title":{"rendered":"How to Use GraphCMS as a Headless CMS: A Comprehensive Step-by-Step Guide"},"content":{"rendered":"<h1>How to Use GraphCMS as a Headless CMS: A Comprehensive Step-by-Step Guide<\/h1>\n<h2>Introduction<\/h2>\n<p>The world of content management has undergone a radical transformation over the past decade. Traditional monolithic CMS platforms like WordPress or Drupal, while powerful, often tie your content to a specific frontend framework or templating system. This is where the headless CMS architecture steps in, decoupling the content repository from the presentation layer. GraphCMS is one of the most popular headless CMS solutions available today, offering a GraphQL-native API, a sleek content modeling interface, and powerful features for teams of all sizes. Whether you are building a marketing website, a mobile app, a static site, or a complex e-commerce platform, GraphCMS provides the flexibility to manage and deliver structured content exactly the way you need it. In this tutorial, I will walk you through every critical step of using GraphCMS as your headless CMS\u2014from initial project setup to full-frontend integration. By the end, you will have a deep understanding of how to model content, query it via GraphQL, and deploy a live application powered by your own cloud-based content infrastructure.<\/p>\n<p>Before diving into the technical steps, it is important to understand why you would choose GraphCMS over other headless CMS alternatives. GraphCMS is a cloud-first, API-first platform that provides an auto-generated GraphQL API based on your content schema. This means you define your content types and fields visually, and GraphCMS instantly gives you a powerful, flexible API with built-in filtering, pagination, sorting, and even real-time subscriptions. It also includes built-in internationalization, asset management, webhooks, and role-based access control, making it suitable for both small projects and enterprise applications. Additionally, GraphCMS offers a generous free tier that allows you to get started without any upfront cost. In this article, you will learn how to leverage these features to build a scalable, future-proof content backend.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/via.placeholder.com\/800x600\/4a90d9\/ffffff?text=how%20to%20use%20GraphCMS%20for%20headless%20CMS\" alt=\"Article illustration\" style=\"display:block;margin:20px auto;max-width:100%;height:auto;border-radius:8px;\" \/><\/p>\n<p>One of the key strengths of GraphCMS lies in its content modeling capabilities. Unlike some headless CMS tools that force you into a rigid folder structure, GraphCMS lets you create custom content types with various field types \u2014 text, rich text, markdown, JSON, media, references to other models, and more. You can define one-to-one, one-to-many, and many-to-many relationships between your models. For example, you could create an &#8220;Author&#8221; model and a &#8220;Post&#8221; model, then link them so that each post can have multiple authors, or each author can write many posts. This relational approach mirrors how real-world content works and enables you to build complex content structures without redundancy. Additionally, GraphCMS supports unions, interfaces, and enums, giving you even more flexibility in modeling hierarchical or polymorphic content. Throughout this guide, I will show you exactly how to set up such relationships and how they translate into GraphQL queries.<\/p>\n<h2>Step 1: Sign Up and Create a New GraphCMS Project<\/h2>\n<p>The first thing you need to do is create an account on GraphCMS. Navigate to <code>graphcms.com<\/code> and click the &#8220;Get started for free&#8221; button. You can sign up using your email address or authenticate via GitHub, Google, or GitLab. After providing the necessary details, you will be redirected to the GraphCMS Console \u2013 your central dashboard for managing projects, team members, and billing. Once logged in, click on the &#8220;Create Project&#8221; button. You will be asked to choose between a &#8220;Blank&#8221; project (start from scratch) or a &#8220;Starter Kit&#8221; with pre-built content models and sample data. For learning purposes, I recommend selecting a Blank project so you can understand the inner workings of content modeling. Give your project a name \u2014 for instance, &#8220;My Blog&#8221; or &#8220;E-Commerce Store&#8221; \u2014 and select a region closest to your target audience (e.g., US West, Europe West, etc.). GraphCMS will provision your new project within a few seconds, and you will land on the project&#8217;s main interface, which consists of a sidebar with options like Content, Schema, Media, Settings, and API Playground.<\/p>\n<p>Take a moment to familiarize yourself with the interface. The Schema section is where you define your content models. The Content section lets you create and edit actual content entries. The Media section stores your images, videos, and other assets. The Settings area controls localization, webhooks, roles, and API keys. Finally, the API Playground is your testing ground for writing GraphQL queries and mutations against your project&#8217;s API. You will also see that by default, GraphCMS creates a few system models that cannot be deleted, like &#8220;Asset&#8221; (for files) and &#8220;System&#8221; fields for version tracking. These are hidden from your content view but are available via the API. Now that you have a project, you are ready to define your content schema \u2014 the backbone of your headless CMS.<\/p>\n<h2>Step 2: Define Your Content Model (Schema Design)<\/h2>\n<p>Content modeling is arguably the most important phase of working with GraphCMS. A well-designed schema will make your API powerful and your frontend development a breeze. To start, go to the Schema section in the sidebar. Click the &#8220;Add Model&#8221; button. You will need to provide a model ID (usually camelCase, e.g., &#8220;post&#8221; or &#8220;author&#8221;) and a display name (e.g., &#8220;Post&#8221; or &#8220;Author&#8221;). Optionally, you can add a description to document the purpose of this model. Once created, GraphCMS automatically generates an API field like <code>post<\/code> and <code>posts<\/code> for queries. Click on your newly created model to enter its field editor.<\/p>\n<p>Now it is time to add fields. Click &#8220;Add Field&#8221; and you will see a list of available field types. GraphCMS offers a rich set: String, Integer, Float, Boolean, Date\/Time, JSON, Rich Text, Markdown, Color, Location, and more. For a typical blog, you might add fields like &#8220;title&#8221; (String), &#8220;slug&#8221; (String), &#8220;content&#8221; (Rich Text or Markdown), &#8220;excerpt&#8221; (String), &#8220;publishedAt&#8221; (Date\/Time), and &#8220;featuredImage&#8221; (Asset reference). To create a reference field, choose &#8220;Reference&#8221; and then pick the target model (e.g., &#8220;Asset&#8221; for images, or another custom model like &#8220;Author&#8221;). For example, to link a Post to an Author, you would add a reference field called &#8220;author&#8221; and select the Author model. You can also make it a list if you want multiple authors per post. Below is a quick reference table of common field types and their usage:<\/p>\n<table border=\"1\" cellpadding=\"8\" cellspacing=\"0\" style=\"border-collapse: collapse; width: 100%;\">\n<thead>\n<tr>\n<th>Field Type<\/th>\n<th>Description<\/th>\n<th>Use Case Example<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>String<\/td>\n<td>Single-line text (max 256 characters)<\/td>\n<td>Title, slug, short description<\/td>\n<\/tr>\n<tr>\n<td>Text<\/td>\n<td>Multi-line plain text<\/td>\n<td>Longer descriptions, notes<\/td>\n<\/tr>\n<tr>\n<td>Integer<\/td>\n<td>Whole number<\/td>\n<td>Price, view count, rating (1\u20135)<\/td>\n<\/tr>\n<tr>\n<td>Float<\/td>\n<td>Decimal number<\/td>\n<td>Product weight, average rating<\/td>\n<\/tr>\n<tr>\n<td>Boolean<\/td>\n<td>True\/False<\/td>\n<td>Published, featured, in-stock<\/td>\n<\/tr>\n<tr>\n<td>Rich Text<\/td>\n<td>WYSIWYG content with inline formatting<\/td>\n<td>Blog post body, articles<\/td>\n<\/tr>\n<tr>\n<td>Markdown<\/td>\n<td>Markdown-formatted text<\/td>\n<td>Developer-focused content<\/td>\n<\/tr>\n<tr>\n<td>JSON<\/td>\n<td>Flexible JSON object<\/td>\n<td>Custom structured data, metadata<\/td>\n<\/tr>\n<tr>\n<td>Date\/Time<\/td>\n<td>Timestamp with timezone<\/td>\n<td>Publish date, event date<\/td>\n<\/tr>\n<tr>\n<td>Asset<\/td>\n<td>Reference to an uploaded file (image, pdf, etc.)<\/td>\n<td>Featured image, downloadable file<\/td>\n<\/tr>\n<tr>\n<td>Reference<\/td>\n<td>Link to one or more other content models<\/td>\n<td>Author, category, related posts<\/td>\n<\/tr>\n<tr>\n<td>Color<\/td>\n<td>Hex\/RGBA color picker<\/td>\n<td>Theme color, accent color<\/td>\n<\/tr>\n<tr>\n<td>Location<\/td>\n<td>Latitude\/longitude pair<\/td>\n<td>Store location, event venue<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As you build your model, pay attention to field validation options. You can make fields required, set default values, enable unique validation (useful for slugs), and limit allowed values via an enum or regular expression. GraphCMS also allows you to define a &#8220;Localization&#8221; strategy per field \u2014 you can choose to localize only specific fields, such as &#8220;title&#8221; and &#8220;content&#8221;, while keeping other fields like &#8220;slug&#8221; unique across locales. This granularity is extremely valuable for multi-language projects. Once you have added all fields, remember to &#8220;Save&#8221; the model. Then repeat the process for other models like Author, Category, or Product. After creating the models, you can also set up &#8220;Component&#8221; models \u2014 reusable field groups that can be embedded into other models, perfect for common blocks like SEO metadata or call-to-action buttons. Spend time thinking about relationships: if you have a many-to-many relationship between Posts and Categories, use a reference field on both sides, but ensure you define the correct &#8220;cardinality&#8221; (one-to-many or many-to-many) in the reference settings. A well-structured content model is the foundation of a successful headless CMS implementation.<\/p>\n<h2>Step 3: Create and Manage Content in GraphCMS<\/h2>\n<p>With your schema ready, it is time to fill it with actual content. Navigate to the &#8220;Content&#8221; section in the sidebar. You will see a list of your models. Click on a model, say &#8220;Post&#8221;, and then click the &#8220;Add Entry&#8221; button. A form will appear with all the fields you defined earlier. Fill in sample data: a catchy title, a slug (e.g., &#8220;my-first-post&#8221;), select a rich text editor for the content, upload a featured image via the Media library, and assign an author if you have created any. The rich text editor in GraphCMS is quite powerful \u2014 it supports headings, lists, links, tables, images, embeds, and even code blocks. You can also toggle between rich text and Markdown if that is your preferred format. After saving, the entry will appear in the content list. You can publish entries individually or schedule them for later publication using the built-in workflow states: Draft, Published, or Updated. GraphCMS also supports version history, so you can track changes and roll back if necessary.<\/p>\n<p>Managing media assets is straightforward. Go to the Media section, drag and drop images or files, and they will be uploaded to the cloud. Each asset gets a unique URL and can be transformed on the fly using query parameters (e.g., resizing, cropping, format conversion). When linking an asset in a content entry, you can also apply filters directly from the asset picker. GraphCMS supports automatic image optimization with WebP and AVIF formats, which is great for performance. For localization, click the &#8220;Locales&#8221; button in the top bar of the content editor. You can add multiple languages (e.g., English, Spanish, French) and then switch between them to enter translations for localized fields. This is especially handy when your content serves a global audience. Additionally, you can use the &#8220;Publishing&#8221; tab to stage content in different environments (development, staging, production) if you have upgraded to a paid plan. For most workflows, the default &#8220;Published&#8221; and &#8220;Draft&#8221; states are enough. Remember to publish your entries so they are accessible via the API \u2014 otherwise, unpublished content will not appear in API responses unless you pass a specific query argument for drafts.<\/p>\n<h2>Step 4: Accessing Content via the GraphQL API<\/h2>\n<p>Now comes the most exciting part: querying your content using GraphQL. GraphCMS automatically generates a complete GraphQL schema based on your content models. You can explore this schema via the API Playground (located in the sidebar). Navigate to &#8220;API Playground&#8221; and you will see a GraphiQL-like interface on the right side and a Documentation Explorer on the left. The explorer lists all queries, mutations, and types. Try writing a simple query: <code>{ posts { id title slug } }<\/code>. Click the play button and you should see a JSON response with your content. GraphCMS queries support powerful filtering and sorting. For instance, you can fetch only published posts that contain a certain keyword: <code>{ posts(where: { title_contains: \"Graph\" }, stage: PUBLISHED) { id title } }<\/code>. You can also paginate results using <code>first<\/code> and <code>skip<\/code> arguments, and order by any field with <code>orderBy<\/code>.<\/p>\n<p>For relational data, you can dive deeper. If your Post model has a reference to Author, you can nest the query: <code>{ posts { title author { name } } }<\/code>. GraphCMS also supports &#8220;aggregate&#8221; queries to get counts, sums, and averages. For example, <code>{ postsConnection { aggregate { count } } }<\/code> returns the total number of posts. Mutations let you create, update, and delete content programmatically. For example, to create a new post via API, you would use: <code>mutation { createPost(data: { title: \"New Post\", slug: \"new-post\" }) { id title } }<\/code>. This is essential for automating content imports or building custom admin interfaces. In the Settings section under &#8220;API Access&#8221;, you can generate Permanent Auth Tokens for your project or use the Read-Only API key for public queries. For production applications, you should restrict API keys to specific operations (read only, or read\/write) and limit them to certain environments. Always keep your tokens secure, especially if they have write access. GraphCMS also supports real-time subscriptions \u2014 you can subscribe to changes on any content model, which is incredibly useful for live dashboards or collaborative editing apps.<\/p>\n<h2>Step 5: Integrate GraphCMS with a Frontend Application<\/h2>\n<p>GraphCMS is frontend-agnostic, meaning you can use any programming language or framework to fetch and display content. In this step, I will demonstrate how to integrate GraphCMS with a modern React (Next.js) application, but the principles apply to Vue, Angular, Svelte, or even plain JavaScript. Start by creating a new Next.js project: <code>npx create-next-app my-graphcms-blog<\/code>. Navigate into the project and install a GraphQL client \u2014 I recommend <code>graphql-request<\/code> for simplicity, or Apollo Client for more advanced caching. Set up a file, e.g., <code>lib\/graphcms.js<\/code>, and export a client instance pointing to your GraphCMS endpoint: <code>import { GraphQLClient } from 'graphql-request'; const endpoint = process.env.GRAPHCMS_ENDPOINT; export const client = new GraphQLClient(endpoint, { headers: { Authorization: `Bearer ${process.env.GRAPHCMS_TOKEN}` } });<\/code>. Store your endpoint and token in environment variables (<code>.env.local<\/code>) for security.<\/p>\n<p>Now, in your page component, use <code>getStaticProps<\/code> or <code>getServerSideProps<\/code> (depending on your needs) to fetch data. For a blog homepage, you might write: <code>export async function getStaticProps() { const query = `{ posts(orderBy: publishedAt_DESC) { id title slug excerpt featuredImage { url } } }`; const { posts } = await client.request(query); return { props: { posts } }; }<\/code>. Then map over the posts to create links. For individual blog posts, use dynamic routes: create a file <code>pages\/posts\/[slug].js<\/code>. In <code>getStaticPaths<\/code>, fetch all slugs from GraphCMS, then in <code>getStaticProps<\/code>, fetch the full post by slug. GraphCMS supports revalidation via <code>revalidate<\/code> in ISR (Incremental Static Regeneration) to keep your site updated without a full rebuild. For dynamic data (e.g., search results), use client-side fetching with <code>useEffect<\/code> or React Query. GraphCMS also provides a built-in CDN and caching layer via their global edge network, so your API calls are fast. When you deploy your frontend (on Vercel, Netlify, etc.), ensure you set the same environment variables in your hosting dashboard. That is it \u2014 your content from GraphCMS is now live on your custom frontend, fully headless.<\/p>\n<h2>Tips and Best Practices<\/h2>\n<h3>1. Plan Your Schema Thoroughly Before Adding Real Data<\/h3>\n<p>One of the most common mistakes developers make with headless CMS is rushing into content creation without thinking through the schema. GraphCMS allows you to modify models after creation, but changes to field IDs or relationships can break existing queries or require migrations. I strongly recommend sketching out your content architecture on paper or in a diagramming tool first. Identify entities, their attributes, and relationships. Use clear, descriptive field names (e.g., &#8220;publishedAt&#8221; instead of &#8220;date&#8221;). Leverage enums for fields that only have a limited set of values (like status: DRAFT, PUBLISHED, ARCHIVED). Also consider using component models for reusable blocks \u2014 for example, an &#8220;SEO&#8221; component with meta title, description, and OG image can be embedded into multiple models like BlogPost, Product, and Page. This reduces duplication and ensures consistency. If you later decide to add a new field to that component, it automatically appears in all places that use it.<\/p>\n<h3>2. Master Localization and Internationalization from Day One<\/h3>\n<p>If you expect your application to serve users in multiple languages, enable localization in your project settings early. GraphCMS provides a straightforward way to localize specific fields. For example, you might localize &#8220;title&#8221; and &#8220;content&#8221; but keep &#8220;slug&#8221; unique per locale (since slugs usually need to be in the target language). Remember that localizing every field can increase content management overhead, so only localize what truly needs translation. Additionally, use the API&#8217;s <code>locales<\/code> argument to fetch content in a specific language. In your frontend, you can detect the user&#8217;s preferred language and pass that to the query. GraphCMS also supports &#8220;fallback locales&#8221; \u2014 if a translation is missing, it falls back to the default locale. This is a lifesaver for content that hasn&#8217;t been translated yet. Never assume your content will stay English-only; plan for multiple locales even if you are starting with one.<\/p>\n<h3>3. Optimize Your API Calls for Performance and SEO<\/h3>\n<p>When integrating GraphCMS with your frontend, be conscious of the data you fetch. Over-fetching can slow down your page load times. Use GraphQL&#8217;s ability to request only the fields you need. For list pages, avoid fetching full rich text content \u2014 instead, request excerpts or a short summary. For images, use GraphCMS&#8217;s image transformations to request optimized sizes: e.g., append <code>?w=800&h=600&fit=scale<\/code> to the asset URL. You can also specify the format (<code>fm=webp<\/code>) to serve next-gen formats. Enable Incremental Static Regeneration (ISR) in your static site generator to keep content fresh without rebuilding every page. Combine this with webhook triggers: set up a webhook in GraphCMS (under Settings > Webhooks) to notify your frontend&#8217;s build service whenever content changes. This ensures your site updates in near real-time without manual rebuilds. For dynamic pages, consider using GraphCMS&#8217;s real-time subscriptions to update content without polling. Finally, use the <code>cache<\/code> option in GraphQL requests and CDN caching headers to reduce server load and improve response times.<\/p>\n<h2>Frequently Asked Questions<\/h2>\n<h3>Q1: Is GraphCMS completely free to use?<\/h3>\n<p>GraphCMS offers a generous free tier called &#8220;Community&#8221; that allows up to 10 users, 500,000 API calls per month, 100 GB of CDN bandwidth, and basic features like localization and webhooks. This is sufficient for small personal projects or prototypes. However, for professional or enterprise use with higher limits, SLA support, and advanced features like content staging, SSO, and dedicated infrastructure, you will need to upgrade to a paid plan (Starter, Pro, or Enterprise). Check the official pricing page for the latest details.<\/p>\n<h3>Q2: Can I migrate my existing content from WordPress or another CMS to GraphCMS?<\/h3>\n<p>Yes, you can migrate content to GraphCMS using their import API or directly via GraphQL mutations. You would typically write a script to read your existing data (e.g., via REST API or database dump) and then create entries in GraphCMS using the <code>create*<\/code> mutations. For assets, you can upload files programmatically using the file upload endpoint. GraphCMS also provides a built-in CSV and JSON importer in the Console for simple migrations. If you have complex relationships, ensure your migration script resolves them correctly (e.g., mapping old author IDs to new author IDs).<\/p>\n<h3>Q3: How does GraphCMS handle image optimization and transformations?<\/h3>\n<p>GraphCMS is built on top of imgix, a powerful image processing service. When you upload an image, you get a URL that can be modified with query parameters to resize, crop, rotate, adjust quality, convert formats, and apply pixel-level operations. For example, appending <code>?w=800&h=600&fit=crop&auto=format<\/code> will deliver a cropped, responsive image in the best possible format for the user&#8217;s browser (WebP, AVIF). You can also set default transformations at the project level. This eliminates the need for a separate image optimization service and speeds up your frontend.<\/p>\n<h3>Q4: What frontend frameworks work best with GraphCMS?<\/h3>\n<p>GraphCMS is completely framework-agnostic. It works with any frontend that can make HTTP requests. That said, GraphCMS is especially popular among teams using React\/Next.js, Nuxt.js (Vue), Gatsby, SvelteKit, and Astro due to their static site generation capabilities and strong GraphQL support. Jamstack architectures pair perfectly with GraphCMS because you can pre-render pages at build time using the API, then publish to a CDN. For mobile apps, use a GraphQL client like Apollo Client (iOS\/Android) or URQL to fetch content.<\/p>\n<h3>Q5: Can I use GraphCMS for e-commerce product catalogs?<\/h3>\n<p>Absolutely. GraphCMS&#8217;s powerful content modeling allows you to create complex product structures with nested variants, categories, tags, pricing, and inventory. You can also integrate with third-party e-commerce backends like Shopify or commercetools via webhooks and custom resolvers (available on paid plans). Many developers use GraphCMS as a headless CMS for marketing content while keeping product data in a dedicated commerce engine. The flexibility of GraphQL enables you to merge data from multiple sources on the frontend seamlessly.<\/p>\n<h3>Q6: Does GraphCMS support multi-environment workflows (dev\/staging\/prod)?<\/h3>\n<p>Yes, GraphCMS offers Content Staging on the Pro and Enterprise plans. This allows you to create separate environments (e.g., Development, Staging, Production) and promote content between them. Each environment has its own endpoint, API keys, and content database. This is vital for teams that need to preview changes before going live. The Community and Starter plans have a single environment with draft\/published states, which is sufficient for simpler workflows.<\/p>\n<h2>Conclusion<\/h2>\n<p>Using GraphCMS as a headless CMS gives you the freedom to build modern, high-performance digital experiences without being locked into a specific frontend technology. In this tutorial, you learned how to set up a project, model your content with far more sophistication than a traditional CMS, create and manage entries, query everything via a flexible GraphQL API, and finally integrate that API into a Next.js application. We covered best practices around schema design, localization, and API performance that will save you time and headaches as your project grows. Whether you are building a personal blog, a marketing site, a mobile app backend, or a full-blown e-commerce platform, GraphCMS provides the tools to scale your content operations. The combination of GraphQL&#8217;s efficiency, GraphCMS&#8217;s intuitive interface, and a decoupled architecture is a winning formula for modern web development. Now it is your turn: create your first project, experiment with the API playground, and start building something amazing with a truly headless approach. If you have any further questions, the GraphCMS documentation and community forums are excellent resources. Happy building!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to Use GraphCMS as a Headless CMS: A Comprehensive Step-by-Step Guide Introduction The world of content management has undergone a radical transformation over the past decade. Traditional monolithic CMS platforms like WordPress or Drupal, while powerful, often tie your content to a specific frontend framework or templating system. This is where the headless CMS &hellip; <\/p>\n","protected":false},"author":2716,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[],"tags":[],"class_list":["post-1099","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/posts\/1099","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/users\/2716"}],"replies":[{"embeddable":true,"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1099"}],"version-history":[{"count":0,"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/posts\/1099\/revisions"}],"wp:attachment":[{"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/categories?post=1099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sumberlaba.com\/index.php\/wp-json\/wp\/v2\/tags?post=1099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}