# Public app: 403 MISSING\_SCOPES when creating Custom Object schema — need solution/next steps

**URL:** <https://community.hubspot.com/t/public-app-403-missing-scopes-when-creating-custom-object-schema-need-solution-next-steps/138985>\
**Category:** APIs & Integrations\
**Tags:** oauth\
**Created:** [September 4, 2025, 11:32am UTC](https://community.hubspot.com/t/public-app-403-missing-scopes-when-creating-custom-object-schema-need-solution-next-steps/138985 "2025-09-04T11:32:57Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sherjeelfpl](https://avatars.discourse-cdn.com/v4/letter/s/e47c2d/32.png) [@sherjeelfpl](https://community.hubspot.com/u/sherjeelfpl)\
**Post date:** [September 4, 2025, 11:32am UTC](https://community.hubspot.com/t/public-app-403-missing-scopes-when-creating-custom-object-schema-need-solution-next-steps/138985/1 "2025-09-04T11:32:57Z")

</div>

Hi all,

We’re building a **public app** (HeyRuby.ai) that lets customers connect their HubSpot CRM and import structured data. We want to model that data as a **Custom Object** and associate it to **Deals** and **Companies**.

**Problem**  
When we try to create the **custom object schema** from our **public app** , the API returns **403 MISSING\_SCOPES**.

**Endpoints tried**

- POST /crm-object-schemas/v3/schemas
- POST /crm/v3/schemas

**Error (example)**

```auto
Status: 403
{
 "status": "error",
 "message": "The scope needed for this API call isn't available for public use.",
 "category": "MISSING_SCOPES",
 "correlationId": "81c4fd00-c610-49ab-b4b6-6c9491ed0be3"
}

```

**Notes**

- It fails with an **OAuth token** from the **public app** installed on a customer portal.
- We can create **records** of existing custom objects and use **Associations v4** fine—the blocker is **creating the schema** itself from a public app.

**What we need**

1. Is there a way for a **public app** to get **Custom Objects OAuth access** so we can request schema write scopes and create the schema programmatically?
2. If yes, what’s the **process** to enable it (and any eligibility requirements)?
3. If not, what’s the **official workaround** HubSpot recommends for public apps (beyond asking admins to create the schema manually or via a private app)?

**Repro (minimal)**

```auto
curl -i https://api.hubapi.com/crm-object-schemas/v3/schemas \
 -H "Authorization: Bearer <OAUTH_ACCESS_TOKEN_FROM_PUBLIC_APP>" \
 -H "Content-Type: application/json" \
 -d '{
 "name":"ruby_plan",
 "labels":{"singular":"Ruby Plan","plural":"Ruby Plans"},
 "primaryDisplayProperty":"name",
 "requiredProperties":["name"],
 "properties":[
 {"name":"name","label":"Name","type":"string","fieldType":"text","isPrimaryDisplayLabel":true},
 {"name":"status","label":"Status","type":"enumeration","fieldType":"select",
 "options":[{"label":"Draft","value":"draft"},{"label":"Live","value":"live"}]},
 {"name":"start_date","label":"Start Date","type":"date","fieldType":"date"}
 ],
 "associatedObjects":["DEAL","COMPANY"],
 "metaType":"PORTAL_SPECIFIC"
 }'

```

**Goal behavior (once allowed)**

- Idempotent: read schema first; create only if missing.
- Namespaced: vendor-prefixed names (e.g., ruby\_\*).
- Non-destructive: no deletes/renames on customer data.
- Only attempt on eligible (Enterprise) portals; otherwise fall back.

App details available on request (App ID, volumes, etc.).  
Would appreciate guidance on enabling this or the recommended path forward. Thanks!

---

<div class="post-metadata">

**Author:** ![Victor\_Becerra](https://avatars.discourse-cdn.com/v4/letter/v/87869e/32.png) [@Victor\_Becerra](https://community.hubspot.com/u/Victor_Becerra)\
**Post date:** [September 4, 2025, 5:45pm UTC](https://community.hubspot.com/t/public-app-403-missing-scopes-when-creating-custom-object-schema-need-solution-next-steps/138985/2 "2025-09-04T17:45:31Z")

</div>

Hi @sherjeelfpl  
Thank you for reaching out to the Community!  
I’d like to invite some community members who are subject matter experts to join this conversation.  
[@zach\_threadint](https://community.hubspot.com/t5/user/viewprofilepage/user-id/324811) @TomM2 @GiantFocal - Would you be able to share any insights on this? Your expertise would be greatly appreciated.  
Best,  
Victor

---

<div class="post-metadata">

**Author:** ![zach\_threadint](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/zach_threadint/32/46318_2.png) [@zach\_threadint](https://community.hubspot.com/u/zach_threadint)\
**Post date:** [September 4, 2025, 9:18pm UTC](https://community.hubspot.com/t/public-app-403-missing-scopes-when-creating-custom-object-schema-need-solution-next-steps/138985/3 "2025-09-04T21:18:19Z")

</div>

Hi @sherjeelfpl 👋

In order for a public app to gain access to HubSpot’s custom object API scopes, you need to go through an approval process. More info can be found here: [Custom Objects OAuth Access](https://developers.hubspot.com/custom-objects-schema-pilot)

I hope this proves helpful. Please let me know if you have any follow-up questions.
