{"id":9010,"date":"2026-09-13T05:05:55","date_gmt":"2026-09-13T05:05:55","guid":{"rendered":"https:\/\/www.coffee.ai\/articles\/hubspot-data-warehouse-custom-objects"},"modified":"2026-09-13T05:05:55","modified_gmt":"2026-09-13T05:05:55","slug":"hubspot-data-warehouse-custom-objects","status":"publish","type":"post","link":"https:\/\/www.coffee.ai\/articles\/hubspot-data-warehouse-custom-objects","title":{"rendered":"HubSpot Custom Objects: The Definitive Sync Playbook"},"content":{"rendered":"<p><em>Written by: Doug Camplejohn, CEO &amp; Co-Founder, Coffee<\/em><\/p>\n<h2 id=\"key-takeaways\">Key Takeaways<\/h2>\n<ul>\n<li>HubSpot custom objects require deliberate schema design because internal property names and types are immutable after creation, so early decisions become technical debt.<\/li>\n<li>Associations between custom objects and standard objects are structurally many-to-many, so warehouse models must use bridge tables to represent these relationships accurately.<\/li>\n<li>Native connectors have limited custom object support, so most teams rely on third-party ETL tools or custom API scripts for complete warehouse coverage.<\/li>\n<li>Reverse ETL pipelines need clear field ownership rules to prevent data loops where HubSpot and the warehouse overwrite each other on every sync cycle.<\/li>\n<\/ul>\n<h2>What Are HubSpot Custom Objects?<\/h2>\n<p>Custom objects in HubSpot are user-defined records that store data unique to your business, such as subscriptions or vehicles. They extend the standard objects (contacts, companies, deals) and can be associated with them. This structure lets you model complex relationships and sync that data to your warehouse for deeper analysis.<\/p>\n<p>Custom objects are available exclusively on Enterprise-tier subscriptions of Marketing Hub, Sales Hub, Service Hub, Data Hub, Content Hub, Smart CRM, and Revenue Hub. You can create them through HubSpot\u2019s data model interface or programmatically via the Custom Objects API.<\/p>\n<p>For warehouse sync, custom objects matter because they hold critical business data such as subscriptions, assets, projects, and vehicles that standard objects cannot model. When those records stay out of your warehouse, analytics miss key context and reverse ETL pipelines work from an incomplete view of the business.<\/p>\n<h2>Designing Custom Objects for Warehouse Sync<\/h2>\n<h3>The Schema Design Checklist<\/h3>\n<p>Internal API property names cannot be edited after creation. That constraint makes schema design the most consequential decision in the sync lifecycle. A bad internal name becomes permanent technical debt that propagates into every warehouse column, every dbt model, and every downstream report.<\/p>\n<p>Lock in these decisions before creating any object:<\/p>\n<ul>\n<li><strong>Naming conventions:<\/strong> <a href=\"https:\/\/yourhubspotexpert.com\/blogs\/hubspot-custom-properties-guide\" target=\"_blank\" rel=\"noindex nofollow\">Use lowercase snake_case for internal names<\/a> (for example, <code>subscription_id<\/code>). Avoid spaces, hyphens, and special characters. The internal property name must start with a lowercase letter and be unique within the portal. Add source prefixes to clarify lineage, such as <code>zi_<\/code> for ZoomInfo fields or <code>prod_<\/code> for product fields.<\/li>\n<li><strong>Property types:<\/strong> Choose types deliberately, such as string, number, date, or enumeration, because they map directly to warehouse column types. <a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">Property types are immutable once created; changing a type requires creating a new property, migrating data, and updating every workflow and report that referenced the old one<\/a>. A property created as free text produces messy warehouse columns.<\/li>\n<li><strong>Association planning:<\/strong> Decide which standard objects need associations (contact, company, deal) before you have records. <a href=\"https:\/\/insidea.com\/hubspot\/custom-objects\" target=\"_blank\" rel=\"noindex nofollow\">Enabling associations upfront is cheaper than adding them later when you have 100K records<\/a>. All HubSpot associations are structurally many-to-many in the warehouse and appear as bridge tables.<\/li>\n<li><strong>Required fields:<\/strong> <a href=\"https:\/\/insidea.com\/hubspot\/custom-objects\" target=\"_blank\" rel=\"noindex nofollow\">Keep required-on-creation fields to 3\u20135 maximum<\/a>. Over-requiring fields that are not yet known causes import failures and integration issues.<\/li>\n<li><strong>Data dictionary:<\/strong> <a href=\"https:\/\/yourhubspotexpert.com\/blogs\/hubspot-custom-properties-guide\" target=\"_blank\" rel=\"noindex nofollow\">Document each property with its internal name, object, type, options, owner, and source<\/a> before the object reaches production.<\/li>\n<\/ul>\n<h3>Real-World Example: Modeling Subscriptions<\/h3>\n<p>A <code>subscriptions<\/code> custom object with the following schema illustrates these principles:<\/p>\n<ul>\n<li><code>subscription_id<\/code> \u2014 string, set as primary display property with unique values required<\/li>\n<li><code>plan_name<\/code> \u2014 enumeration that keeps plan values standardized<\/li>\n<li><code>start_date<\/code> \u2014 date<\/li>\n<li><code>status<\/code> \u2014 enumeration (active, paused, cancelled)<\/li>\n<\/ul>\n<p>Associations to contacts and deals are defined at creation. In the warehouse, this produces a <code>subscriptions<\/code> table with columns matching those properties. It also produces a <code>contact_subscriptions<\/code> bridge table keyed by <code>contact_id<\/code>, <code>subscription_id<\/code>, <code>association_type_id<\/code>, and <code>label<\/code>, which follows the standard star-schema junction table pattern.<\/p>\n<h2>Syncing Custom Objects to a Data Warehouse<\/h2>\n<h3>Three Sync Approaches Compared<\/h3>\n<p><strong>Native HubSpot connectors<\/strong> such as Snowflake Data Share and the BigQuery connector offer the simplest setup, but each has significant gaps. <a href=\"https:\/\/pipeline.zoominfo.com\/sales\/hubspot-snowflake-integration\" target=\"_blank\" rel=\"noindex nofollow\">The native Snowflake Data Share requires Data Hub Enterprise at $2,000\/month<\/a> and uses Snowflake\u2019s Secure Data Sharing infrastructure, which bypasses API rate limits entirely. <a href=\"https:\/\/pipeline.zoominfo.com\/sales\/hubspot-snowflake-integration\" target=\"_blank\" rel=\"noindex nofollow\">The native Data Share is limited to core CRM objects and does not cover custom objects<\/a>, so it rarely meets full RevOps requirements.<\/p>\n<p>The BigQuery connector is in beta and does not support all object types, including <code>object_x_views<\/code>. For Data Hub Enterprise customers, the BigQuery connector does support custom objects, events, and associations. Early reviews rate it 3 out of 5, and users note that each CRM sync action costs 25 credits even when no new data is synced.<\/p>\n<p><strong>Third-party ETL tools<\/strong> such as Fivetran, Airbyte, and Stitch handle full historical backfill and incremental syncs. <a href=\"https:\/\/pipeline.zoominfo.com\/sales\/hubspot-snowflake-integration\" target=\"_blank\" rel=\"noindex nofollow\">These tools support custom objects and associations and add cost and pipeline complexity<\/a>. They remain the most reliable path for teams that need complete custom object coverage without building and maintaining custom API scripts.<\/p>\n<p><strong>Custom API scripts<\/strong> provide maximum flexibility through the <code>\/crm\/v3\/objects\/{objectType}<\/code> endpoint. They require ongoing maintenance and careful rate-limit handling. This approach fits teams with dedicated data engineering capacity and unusual sync requirements.<\/p>\n<h3>Step-By-Step: Native BigQuery Connector<\/h3>\n<p>Teams on Data Hub Enterprise that target BigQuery can follow this setup:<\/p>\n<ol>\n<li>Create a Google service account with BigQuery Data Viewer, BigQuery Job User, and Storage Object Owner roles.<\/li>\n<li>Provide a GCS bucket URI where HubSpot stages Parquet files.<\/li>\n<li>In HubSpot, navigate to Data Hub and configure the BigQuery connector, selecting custom objects alongside standard objects.<\/li>\n<li>Set sync frequency. Options include every 6 hours, 12 hours, daily, weekly, or monthly for HubSpot-to-BigQuery direction.<\/li>\n<li>Confirm that each custom object type appears in the destination dataset before enabling production pipelines.<\/li>\n<\/ol>\n<h3>Step-By-Step: API Pagination Example<\/h3>\n<p>This example shows how to fetch custom objects via the HubSpot API with basic pagination and rate-limit handling:<\/p>\n<pre><code>import requests import time ACCESS_TOKEN = \"your_access_token\" OBJECT_TYPE = \"your_custom_object_type_id\" BASE_URL = f\"https:\/\/api.hubapi.com\/crm\/v3\/objects\/{OBJECT_TYPE}\" headers = {\"Authorization\": f\"Bearer {ACCESS_TOKEN}\"} params = { \"limit\": 100, \"properties\": \"subscription_id,plan_name,start_date,status\", } all_records = [] after = None while True: if after: params[\"after\"] = after response = requests.get(BASE_URL, headers=headers, params=params) if response.status_code == 429: time.sleep(10) continue data = response.json() all_records.extend(data.get(\"results\", [])) paging = data.get(\"paging\", {}) after = paging.get(\"next\", {}).get(\"after\") if not after: break print(f\"Total records fetched: {len(all_records)}\") <\/code><\/pre>\n<p><a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">The List endpoint supports cursor-based pagination with up to 100 records per page and no upper bound on total results<\/a>, so it works better than the Search API for full extractions. Use batch endpoints wherever possible and implement exponential backoff on 429 responses.<\/p>\n<h2>Reverse ETL: Syncing Warehouse Data Back to HubSpot<\/h2>\n<p>Reverse ETL sends warehouse-computed scores, segments, and enriched attributes back into HubSpot custom object properties. Those values can trigger workflows, update lifecycle stages, and guide rep activity. Hightouch and Census are the leading tools for this pattern. The general setup is straightforward: connect the warehouse, define a SQL model, map columns to custom object properties, then configure sync schedule and conflict resolution.<\/p>\n<p>The main failure mode in reverse ETL is the data loop. <a href=\"https:\/\/fubyte.com\/blog\/hubspot-reporting-data-warehouse-sync-b2b-2026\" target=\"_blank\" rel=\"noindex nofollow\">Without documented field ownership and conflict resolution rules, both systems overwrite each other<\/a>, and values oscillate between states on every sync cycle. Before enabling any reverse ETL pipeline, document which system owns each field. Fields owned by the warehouse should be read-only in HubSpot, and fields owned by HubSpot should remain untouched by the warehouse model.<\/p>\n<p><a href=\"https:\/\/zoody.io\/resources\/hubspot-custom-properties-not-updating-from-product\" target=\"_blank\" rel=\"noindex nofollow\">Schema drift is another major failure point in reverse ETL<\/a>. When a new property is added in the product but the warehouse schema is not updated, reverse ETL tools like Census skip the new field silently until the dbt model is updated.<\/p>\n<p>Before you scale your custom object usage, understand the platform\u2019s limits and the practices that keep your model healthy.<\/p>\n<h2>HubSpot Custom Objects Limits and Best Practices<\/h2>\n<h3>Know Your Limits<\/h3>\n<p>HubSpot provides a REST API endpoint (<code>GET https:\/\/api.hubapi.com\/crm\/limits\/2026-03\/custom-object-types<\/code>) that returns the portal\u2019s current custom object limit, usage, and percentage used dynamically. The limit is not published as a fixed number and varies by portal. <a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">Published limits range from 10 custom objects per portal up to 100 objects at full Enterprise depth<\/a>, and these numbers shift between releases, so check your portal dynamically.<\/p>\n<p>Record limits for custom objects are tracked via the <code>GET \/crm\/limits\/2026-03\/records<\/code> endpoint, which returns <code>overallLimit<\/code>, <code>overallPercentage<\/code>, and <code>overallUsage<\/code> fields per object type. Exact maximum record counts are not published as fixed numbers.<\/p>\n<p><a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">Enterprise accounts with privately distributed apps are subject to 190 requests per 10 seconds and 1,000,000 requests per day<\/a>. Free and Starter accounts are capped at 100 per 10 seconds and 250,000 per day. The daily cap is shared across every app on the account.<\/p>\n<h3>Best Practices<\/h3>\n<ul>\n<li><strong>Audit quarterly:<\/strong> <a href=\"https:\/\/yourhubspotexpert.com\/blogs\/hubspot-custom-properties-guide\" target=\"_blank\" rel=\"noindex nofollow\">Pull the full property list every 90 days and check for usage, accuracy, duplication, and whether data belongs on a different object<\/a>.<\/li>\n<li><strong>Aim for a focused model:<\/strong> <a href=\"https:\/\/insidea.com\/hubspot\/custom-objects\" target=\"_blank\" rel=\"noindex nofollow\">Most portals need 2\u20135 custom objects. Going past 7 usually means the model is over-decomposed and should be revisited<\/a>.<\/li>\n<li><strong>Use custom objects for the right entities:<\/strong> Reserve them for entities that need independent tracking and association with standard objects, such as subscriptions, vehicles, projects, or assets. Avoid replicating standard objects or replacing activities.<\/li>\n<li><strong>Govern property creation:<\/strong> <a href=\"https:\/\/yourhubspotexpert.com\/blogs\/hubspot-custom-properties-guide\" target=\"_blank\" rel=\"noindex nofollow\">Designate exactly one person with the authority to create custom properties, and have everyone else submit a request<\/a>. This simple rule prevents most long-term data-quality problems.<\/li>\n<\/ul>\n<h2>Choosing Between HubSpot Custom Objects and HubDB<\/h2>\n<p><strong>Custom objects<\/strong> are CRM records with associations, workflows, permissions, and reporting. They participate in deal pipelines, trigger automations, and sync to your data warehouse as transactional records. Use them for business entities that need lifecycle tracking, such as subscriptions, vehicles, projects, or assets.<\/p>\n<p><strong>HubDB<\/strong> is a website content table system used for lists, directories, pricing tables, and location finders. It is designed for public-facing content displayed on HubSpot CMS pages. HubDB records do not have CRM associations, do not appear in deal workflows, and do not sync to a warehouse as relational records.<\/p>\n<p>The decision rule stays simple. When an entity needs to appear in a deal workflow, trigger an automation, or sync to your warehouse as a transactional record with foreign keys, treat it as a custom object. When it is content displayed on your website, treat it as HubDB. The most common integration mistake is forcing external system data into standard objects or content tools when it belongs in a custom object with proper associations.<\/p>\n<h2>Troubleshooting Common Sync Issues<\/h2>\n<p>Even with a solid schema and the right sync approach, custom object pipelines tend to fail in predictable ways. Use these patterns to diagnose issues quickly.<\/p>\n<h3>Association Sync Failures<\/h3>\n<p><a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">The associations parameter on object GET calls is not supported on batch reads and is intended only for small, targeted lookups on individual records<\/a>. Warehouse syncs need a separate associations pull. Use the Associations API V4 batch read endpoint, <code>POST \/crm\/v4\/associations\/{fromObjectType}\/{toObjectType}\/batch\/read<\/code>, which accepts up to 1,000 IDs per call, to reconstruct bridge tables.<\/p>\n<p><a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">HubSpot\u2019s Associations API V3 is documented as legacy and lacks the label and category schema introduced in V4<\/a>. New integrations should target V4 directly. Model associations in the warehouse as bridge tables keyed by <code>from_id<\/code>, <code>to_id<\/code>, <code>association_type_id<\/code>, <code>category<\/code>, and <code>label<\/code>.<\/p>\n<p><a href=\"https:\/\/iv-lead.com\/blog\/sync-custom-objects-from-salesforce-to-hubspot\" target=\"_blank\" rel=\"noindex nofollow\">Parent records must be synced and matched on a unique key before syncing the custom object that attaches to them<\/a>. When child records sync before their parents, the association fails and the child record lands as an orphan.<\/p>\n<h3>Rate Limits<\/h3>\n<p>Enterprise accounts face strict rate caps, and the Search API has its own throttle behavior. <a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">The Search API is throttled separately at 5 requests per second per account and its responses skip standard rate-limit headers<\/a>, which makes it a poor fit for full-table extraction of large objects. Use batch endpoints for bulk reads and implement exponential backoff on 429 responses.<\/p>\n<h3>Internal Name Immutability<\/h3>\n<p>Plan internal names before creation. You cannot edit internal names, only labels. A bad internal name propagates permanently into warehouse column names, dbt models, and API payloads. Treat the naming convention as a schema contract that governs every downstream column.<\/p>\n<h3>Data Type Mismatches<\/h3>\n<p><a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">HubSpot stores numeric properties as floating point, so currency values held directly rather than as integer cents are exposed to rounding errors during aggregation<\/a>. <a href=\"https:\/\/metricasoftware.com\/hubspot-data-model-explained-objects-associations-and-extracting-data-at-scale\" target=\"_blank\" rel=\"noindex nofollow\">Rollup properties may declare <code>type: number<\/code> in their schema but return a semicolon-delimited string at runtime when multiple values roll up together<\/a>. Pipelines that assume strict type consistency break on these edge cases, so validate property types before syncing and handle exceptions in your transformation layer.<\/p>\n<h2>Conclusion<\/h2>\n<p>Schema design forms the irreversible foundation of every HubSpot data warehouse custom objects implementation. Get internal names and property types right on day one, because any fix later requires new properties, data migration, and updates to every downstream reference. Choose your sync method based on volume, budget, and custom object coverage: native connectors for simplicity at Enterprise tier, third-party ETL for complete coverage, and custom API scripts for maximum control. Plan for reverse ETL with documented field ownership per property to prevent data loops from the start.<\/p>\n<p>As AI-driven analytics and forecasting become standard for RevOps teams, data quality becomes the prerequisite. <a href=\"https:\/\/fubyte.com\/blog\/hubspot-reporting-data-warehouse-sync-b2b-2026\" target=\"_blank\" rel=\"noindex nofollow\">Warehouse sync succeeds when RevOps owns definitions and reconciliation<\/a>. Clean custom object data in your warehouse makes accurate AI possible.<\/p>\n<h2>Frequently Asked Questions<\/h2>\n<h3>What Is the Difference Between HubSpot Custom Objects and Standard Objects for Warehouse Sync?<\/h3>\n<p>Standard objects such as contacts, companies, deals, and tickets are predefined by HubSpot and covered by most native connectors and ETL tools out of the box. Custom objects are user-defined and require explicit configuration in your sync pipeline. They use the same API endpoint structure as standard objects but are identified by a dynamic <code>objectTypeId<\/code> rather than a fixed name. In the warehouse, they produce their own tables and require separate bridge tables for associations. Most native connectors have historically provided incomplete or no coverage for custom objects, so third-party ETL tools or custom API scripts are usually the reliable path for teams that need custom object data in Snowflake or BigQuery.<\/p>\n<h3>How Do I Handle HubSpot Custom Object Associations in a Data Warehouse?<\/h3>\n<p>All HubSpot associations are structurally many-to-many, even when practical behavior looks many-to-one. In the warehouse, model each association pair as its own bridge table keyed by <code>from_id<\/code>, <code>to_id<\/code>, <code>association_type_id<\/code>, <code>category<\/code>, and <code>label<\/code>. Use the Associations API V4 batch read endpoint to pull associations separately from object records, because the associations parameter on standard object GET calls is not supported on batch reads. Retrieve association labels dynamically at pipeline startup rather than hardcoding type IDs, which can change between portal configurations. Always sync parent records before child records to avoid orphaned associations in the warehouse.<\/p>\n<h3>What Are the Most Common Causes of HubSpot Custom Object Sync Failures?<\/h3>\n<p>The most common failure modes include field mapping mismatches, data type inconsistencies, rate limit exhaustion, association sync gaps, and internal name errors. Field mapping issues often appear when enumeration properties map to free-text columns. Data type inconsistencies arise because HubSpot stores numbers as floating point and rollup properties can return semicolon-delimited strings despite declaring a number type. Rate limits constrain high-volume syncs, and associations require separate pulls through the V4 batch endpoint. Internal names remain immutable, so a misconfigured name at creation becomes permanent technical debt in every downstream system.<\/p>\n<h3>When Should I Use Reverse ETL for HubSpot Custom Objects?<\/h3>\n<p>Reverse ETL fits when warehouse-computed attributes such as propensity scores, health scores, or usage-based segments need to flow back into HubSpot custom object properties to trigger workflows or inform rep activity. Tools like Hightouch and Census are the standard choices. Before enabling reverse ETL, document which system owns each field. Fields owned by the warehouse should be read-only in HubSpot to prevent data loops where both systems overwrite each other on every sync cycle. Schema drift remains a persistent risk, because new properties added in the source system do not sync until the warehouse model and dbt layer include them.<\/p>\n<h3>How Does Coffee Help With HubSpot Data Quality for Warehouse Syncs?<\/h3>\n<p>Coffee\u2019s Companion App deploys an AI agent on top of existing HubSpot instances to automate the data capture that humans consistently skip. The agent automatically creates and enriches contacts, companies, and activities from emails, calendars, and call transcripts. This process ensures that custom object records associate with accurate, complete parent records before they reach the warehouse. Coffee operates as an active agent that captures and enriches data automatically, which addresses the root cause of warehouse sync failures: bad data entering HubSpot at the start. Clean input produces clean output, and clean output makes analytics, forecasting, and reverse ETL pipelines reliable.<\/p>\n<section data-read-next=\"true\">\n<h2>Read Next<\/h2>\n<ul>\n<li><a href=\"https:\/\/coffee.ai\/articles\/salesforce-hubspot-integration\" target=\"_blank\">Salesforce HubSpot Integration: Setup, Limits, and Fixes<\/a><\/li>\n<li><a href=\"https:\/\/coffee.ai\/articles\/hubspot-crm-data-quality-2026\" target=\"_blank\">Improve HubSpot CRM Data Quality: A Prevention-First Guide<\/a><\/li>\n<li><a href=\"https:\/\/coffee.ai\/articles\/customizable-workflows-ai-crm-for-sales\" target=\"_blank\">HubSpot Customizable Workflows: Native vs AI Agent-Driven<\/a><\/li>\n<li><a href=\"https:\/\/coffee.ai\/articles\/crm-migration-from-hubspot\" target=\"_blank\">How to Migrate from HubSpot CRM: An 8-Step Playbook<\/a><\/li>\n<li><a href=\"https:\/\/coffee.ai\/articles\/fathom-hubspot-sync-problems-2026\" target=\"_blank\">Fathom HubSpot Sync Problems: 5-Step Troubleshooting Guide<\/a><\/li>\n<\/ul>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Sync HubSpot custom objects to your data warehouse with confidence. Explore schema design and ETL strategies. Get started with Coffee today.<\/p>\n","protected":false},"author":11,"featured_media":9009,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-9010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/posts\/9010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/comments?post=9010"}],"version-history":[{"count":0,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/posts\/9010\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/media\/9009"}],"wp:attachment":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/media?parent=9010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/categories?post=9010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/tags?post=9010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}