On mobile?
Email yourself the setup link so you can finish when you're at your computer.
✓ Email sent! Check your inbox.
× Failed to send. Please try again.
⏱ Too many attempts. Please wait a few minutes and try again.
AppAmbit CMS
Define a content type, publish entries, and your app reads them live. Move it all as JSON, or share one set of content across many apps.
Pairs with App Database and Cloud Code, and your AI Agent can run it too.
Autumn sale
Studio Pro$79.99
Studio Pro Amber$79.99Field types, from text to relations
Export and import, whenever you want
One set of content across your apps
SDKs that read it, iOS to .NET
Build a content type from the fields your screen needs. Every entry is checked against it before it saves, and relation fields link one content type to another.
A relation field points at another content type. Keep it single and many entries can share the same one, or allow multiple and one entry holds a list.
productRelation to Products
productsRelation to Products, Allow Multiple
Content types and their entries come out as one JSON file. Edit it in bulk, duplicate it into another app, and bring it back in.
Export
Every content type, a selection, or one type with its entries.
Edit, duplicate or write it
Plain JSON. Change it in bulk, copy it for another app, or have your AI agent write it.
Import
Paste it or drop the .json file. Identical types are reused.
{ "content_types": [{ "display_name": "Home offers", "schema": [ { "key": "title", "label": "Title", "type": "text" }, { "key": "hero", "label": "Hero", "type": "media" } ], "entries": [{ "data": { "title": "Autumn sale" }, "status": "published", "locale": "en" }] }]}
Change the offer once and your iOS, Android and .NET apps all show it. No copy per app, and nothing to keep in step by hand.
home_offers
Autumn sale
Read a content type by name into your own model, filtered and paged.
// a content type you defined, read into// a type you ownCms.content("home_offers", modelType: Offer.self) .equals("locale", "en") .getPerPage(10) .getList { offers in self.offers = offers }
// a content type you defined, read into// a class you ownCms.content("home_offers", Offer::class.java) .equals("locale", "en") .getPerPage(10) .getList() .then { offers -> show(offers) }
// a content type you defined, read into// a class you ownfinal offers = await AppAmbitCms .content<Offer>( "home_offers", fromJson: Offer.fromJson, ) .equals("locale", "en") .getList();
// a content type you defined, read by its nameconst offers = await AppAmbitCms .content("home_offers") .equals("locale", "en") .getList();
// a content type you defined, read into// a class you ownvar offers = await Cms .Content<Offer>("home_offers") .Equals("locale", "en") .GetPerPage(10) .GetListAsync();
// a content type you defined, read into// a class you ownvar offers = await Cms .Content<Offer>("home_offers") .Equals("locale", "en") .GetPerPage(10) .GetListAsync();
// a content type you defined, read into// a class you ownvar offers = await Cms .Content<Offer>("home_offers") .Equals("locale", "en") .GetPerPage(10) .GetListAsync();
home_offers · published · en


Point Claude, Cursor or ChatGPT at AppAmbit over MCP. It defines the content type and creates the entry right in AppAmbit, checked against the schema before anything saves. Or have it write the JSON anywhere else, then import it.
Add an offers type with a title and a hero image, then publish the autumn sale.
I'll create the content type first, then the entry.
Done. Autumn sale is live in Home offers, and your app reads it now.
PublishedNow add the winter drop to the same type and publish it too.
Adding it to Home offers.
Done. Winter drop is live next to Autumn sale.
PublishedAdd a free shipping offer in English and Spanish, live today.
One call, both locales.
Done. Free shipping is live in both languages.
PublishedStart free, define your first content type in minutes, and read it from your app. No credit card required.
Change your app's content, not its build.