# Credits Source: https://www.anything.com/docs/account/credits How credits work and how to manage them Credits power AI generations and integrations in Anything. They're used when you send messages to build your app and when your published app runs AI integrations. **Free plan:** 3k credits as a one-time allotment to explore Anything. Free credits do not renew daily or monthly — they're yours to use once. Upgrade to a [paid plan](/docs/account/subscriptions) for monthly credits that refill on your billing date. ## Plans Choose your credits per month. Higher tiers come with a 10% volume discount in credits. Annual billing comes with 2 months free. * **Pro 20k** - \$19/mo (annual); \$24/mo (monthly) - 20k credits * **Max 200k** - \$199/mo (annual); \$239/mo (monthly) - ~~200k~~ 220k credits * **Max 300k** - \$299/mo (annual); \$359/mo (monthly) - ~~300k~~ 330k credits * **Max 400k** - \$399/mo (annual); \$479/mo (monthly) - ~~400k~~ 440k credits * **Max 500k** - \$499/mo (annual); \$599/mo (monthly) - ~~500k~~ 550k credits * **Max 600k** - \$599/mo (annual); \$719/mo (monthly) - ~~600k~~ 660k credits * **Max 750k** - \$749/mo (annual); \$899/mo (monthly) - ~~750k~~ 825k credits * **Max 900k** - \$899/mo (annual); \$1,079/mo (monthly) - ~~900k~~ 990k credits For the latest pricing, see [anything.com/pricing](https://anything.com/pricing). Need a custom credit limit or teams plan? [Contact us](https://n95j344rku9.typeform.com/to/KXvf3tZG). ## How credits work Credits are used in three ways: 1. **Building your app** - every message you send uses credits. Anything uses AI models to generate code, images, and more. 2. **AI integrations** - when your published app runs an AI integration, it uses credits per run. Many integrations are free. You can also add [Functions](/docs/apps/backend) with your own API keys to avoid credit usage. 3. **Templates** - purchasing paid [templates](/docs/apps/templates) from the marketplace costs credits. Free templates are available too. ### Modes Different [modes](/docs/builder/agent#modes) use different amounts of credits. | Mode | Credits | Best for | | ------------------- | ------- | ----------------------------------------------------------------------- | | Auto | Varies | Picks the right approach for you | | Discussion | Low | Asking questions, brainstorming, getting feedback without changing code | | Plan | Low | Getting a step-by-step plan before the agent makes any changes | | Thinking | Medium | Most requests, more accurate | | Fast | Low | Quick edits, less accurate | | [Max](/docs/builder/max) | High | Uses the most intelligent models, builds and tests and fixes on its own | ### Models Anything uses a mix of models from Anthropic (Claude), OpenAI (GPT), Google (Gemini), Moonshot (Kimi), and open source. The agent picks the right model for each step to balance cost, speed, and accuracy depending on the task and project complexity. You can override the default with the [model switcher](/docs/builder/agent#model-switcher). Some models are more capable but cost more credits. Others are faster and cheaper. ## Managing credits All plans come with a set number of credits per month. * Credits refill on your billing date * Unused monthly credits expire at the end of your billing cycle * [Top-off credits](#top-off-credits) don't expire * Upgrade your plan for higher monthly limits View your usage and manage your plan from **Subscription & Credits** in the [dashboard](https://anything.com/dashboard). ## Top-off credits * \$12 for 10k credits * \$60 for 50k credits * \$120 for 100k credits * \$240 for 200k credits Top-off credits do not expire. Subscriptions come with a 10%+ discount. It's often cheaper to upgrade your subscription if you're purchasing top-off credits often. ## Optimizing usage The agent uses a variable number of credits per prompt based on task complexity. You send a prompt, the agent thinks, plans, explores the codebase, and generates code. It might only need to change 1 file, or it might need to change 10. Fewer steps means fewer credits. ### Plan, then build The biggest credit saver is splitting one big prompt into two smaller ones. Switch to **Plan mode** and ask the agent what it would do. It explores your project and writes out a step-by-step plan, without changing any code. Plan mode is low cost because nothing is generated yet. Review the plan. If it looks right, switch to **Thinking mode** and tell the agent to go ahead. You'll get fewer surprises, fewer rebuilds, and far fewer follow-up messages. ``` First in Plan: "I want to add a way for users to invite friends by email." Then in Thinking: "Looks good, build it." ``` ### Other ways to save * **Build bottoms up** - get each part working from frontend to backend. Start with the UI, then add data, users, payments. Building bottoms up means fewer large turns. * **Thinking vs. Fast** - Thinking gives better results and we recommend it as your default. Better results means fewer follow-up messages, which saves credits overall. Use Fast for minor tweaks like changing a color. * **Be specific** - clear prompts reduce back-and-forth. See the [prompting guide](/docs/prompting). * **Try GPT or Gemini models** - use the [model switcher](/docs/builder/agent#model-switcher) to try different models. They can give comparable results at a lower credit cost for some tasks. * **Subscribe** - [plans](/docs/account/subscriptions) come with volume discounts vs. buying top-off credits one-off. ## Hitting your limit When you run out, upgrade your plan or buy top-off credits to keep building. * **In the builder**, a banner appears above chat when your credits are running low. Click **Add credits** to upgrade your plan or buy top-off credits before you hit the limit. * **At the limit**, Anything prompts you to upgrade when you send your next message. * **For published apps** with AI integrations, you'll get an email alert from `hello@anything.com` as you approach your limit. Need a custom credit limit or team plan? [Contact us](https://n95j344rku9.typeform.com/to/KXvf3tZG). ## Earn free credits There are two ways to earn credits without paying: post about your app on X, or refer a friend. You can start either one from the gift icon in the builder, or from the dashboard. ### From the builder Click the gift icon in the top right of the builder to open **Earn free credits**. It's the fastest path because it builds your post for you. 1. The modal drafts a post about your app. Edit it, or hit refresh to regenerate. The back and forward arrows step through earlier drafts. 2. Pick a screenshot of your app to attach. Web apps attach one page; mobile apps let you pick up to three. 3. Click **Post on X**. The X composer opens with your text and screenshot already filled in. Publish it there. 4. Come back and click **submit a link to your post** to claim your credits. The same modal has an **Invite friends** section with your referral link. See [Refer a friend](#refer-a-friend) for how those rewards work. ### Share on X Post about what you're building and earn credits. You can also start this from your [dashboard](https://anything.com/dashboard) under **Get Free Credits**. 1. Connect your X account (\$5 in credits just for connecting). 2. Post about your project on X. 3. Submit a link to your post to claim. You can earn up to \$10 in credits per day, and better posts earn more. Earning free credits by posting on X Include screenshots, mention @anything, and describe your experience building with Anything to earn more. [Posting guide](https://cuboid-libra-f9d.notion.site/Anything-Post-Guide-for-Users-2bdd13187a36802493a4ef40db35ec8e). ### Refer a friend Share your referral link and earn credits when friends sign up. Find your link in the gift icon menu in the builder, or in the [dashboard](https://anything.com/dashboard) under **Get Free Credits**. * You and your friend each get \$0.50 in credits when they sign up. * You get another \$2 in credits once they upgrade to Pro. Referral program in the dashboard ## Troubleshooting Max mode and Thinking mode use more credits than Fast, Discussion, or Plan. Complex prompts that touch many files also cost more. Try using [Plan mode](/docs/builder/agent#modes) to get a step-by-step plan first, then switch to Thinking to execute. You'll use fewer credits overall because you'll need fewer follow-up messages. Refresh your [dashboard](https://anything.com/dashboard) first. Make sure you're logged into the same account you purchased with. If the purchase button wasn't responding, try an incognito window or clear your browser cache. If credits still don't show after that, email [hello@anything.com](mailto:hello@anything.com). Monthly credits refill on your billing date. Unused monthly credits expire at the end of each cycle. [Top-off credits](#top-off-credits) never expire. ## Request a credit refund If a generation didn't work as expected, you can get an instant credit refund — no need to contact support. Scroll through your chat history and find the message that didn't work. Each generation shows the mode used, timestamp, and credit cost. Click **Request Refund** on that generation. Credits are returned to your account instantly. Request a credit refund This is available to all paid subscribers. You don't need to email support — the refund is processed immediately. If a refund can't be processed, you'll see one of these messages: * **Already refunded** — that generation was already reimbursed. * **Monthly limit reached** — you've hit the refund cap for this billing cycle. * **Not eligible** — that generation doesn't qualify for a refund. For other credit issues, email [hello@anything.com](mailto:hello@anything.com). Anything does not offer subscription refunds since AI costs us to run. If you think your case qualifies for an exception, email [hello@anything.com](mailto:hello@anything.com). To cancel or change your plan, see [Subscriptions](/docs/account/subscriptions#cancel-or-downgrade). # Profile Source: https://www.anything.com/docs/account/profile Your Anything handle Set your username and profile photo from **Edit Profile** in your dashboard. Your profile shows up on the [Anything Community](/docs/share/community) page and next to your published projects. ## Public profile Your public profile lives at `anything.com/by-username/your-username`. Published projects with preview images automatically appear here. Paid plans can manage which projects show on their profile: 1. Go to your public profile page 2. Click **Manage** 3. Toggle projects on or off Each project links to its live published app, so visitors can try what you've built. ## Delete your account To delete your account, email [hello@anything.com](mailto:hello@anything.com). We'll process your request and remove your data. # Subscriptions Source: https://www.anything.com/docs/account/subscriptions Plans, pricing, and billing for Anything Anything offers Free, Pro, and Max plans. ## Plans * **Free** - Try it out. 3k credits with daily message limits. * **Pro** - Start building for real. Private projects, publish to the App Store, custom domains, and accept payments with Stripe and RevenueCat. * **Max** - For people who launch. Our smartest AI models, plus a browser agent that opens your app, tries it out, and fixes issues for you automatically. ### Pricing * **Pro 20k** - \$19/mo (annual); \$24/mo (monthly) - 20k credits * **Max 200k** - \$199/mo (annual); \$239/mo (monthly) - ~~200k~~ 220k credits * **Max 300k** - \$299/mo (annual); \$359/mo (monthly) - ~~300k~~ 330k credits * **Max 400k** - \$399/mo (annual); \$479/mo (monthly) - ~~400k~~ 440k credits * **Max 500k** - \$499/mo (annual); \$599/mo (monthly) - ~~500k~~ 550k credits * **Max 600k** - \$599/mo (annual); \$719/mo (monthly) - ~~600k~~ 660k credits * **Max 750k** - \$749/mo (annual); \$899/mo (monthly) - ~~750k~~ 825k credits * **Max 900k** - \$899/mo (annual); \$1,079/mo (monthly) - ~~900k~~ 990k credits Higher tiers come with a 10% volume discount in credits — the credit count shown on each plan already includes the bonus. Annual billing comes with 2 months free and is charged as a single payment upfront (e.g., Pro Annual = \$228 charged once, equivalent to \$19/mo). For the latest pricing, see [anything.com/pricing](https://anything.com/pricing). ## Top-Off Credits Need extra credits before your next billing cycle? You can purchase top-off credits anytime. Top-off credits do not expire. * \$12 for 10k credits * \$60 for 50k credits * \$120 for 100k credits * \$240 for 200k credits Subscriptions come with a 10%+ discount. It's often cheaper to upgrade your subscription if you're purchasing top-off credits often. ## Support Get help from our community of creators and the Anything team Premium email support for paid members ## Cancel or downgrade 1. Go to your [dashboard](https://anything.com/dashboard) 2. Click **Subscription & Credits** 3. Click **Update Plan** 4. Click **Manage Subscription** in the upper right 5. Select **Cancel** or choose a different plan Your current plan stays active until the end of your billing cycle. You won't be charged again after cancellation. Update Plan screen in the dashboard ## Upgrade 1. Go to your [dashboard](https://anything.com/dashboard) 2. Click **Subscription & Credits** → **Update Plan** 3. Pick your new plan The upgrade takes effect immediately. You'll be charged the prorated difference. ## Billing history View invoices, receipts, and past charges from **Subscription & Credits** in your [dashboard](https://anything.com/dashboard). ## FAQ The most common reason is a retry on a failed charge from a prior bill — not a charge for a future month. For example, if your March payment failed and you canceled in April, you may still see a charge as that March invoice retries. Cancellation also takes effect at the end of your current billing cycle, so you may see one more charge. Check **Subscription & Credits** in your [dashboard](https://anything.com/dashboard) to confirm your plan shows as canceled. If charges continue after your cycle ends, email [hello@anything.com](mailto:hello@anything.com). Credits refill on your billing date each month. Check your billing date in **Subscription & Credits** on your [dashboard](https://anything.com/dashboard). See [Credits](/docs/account/credits) for more. Anything doesn't offer subscription refunds, but paid subscribers can get instant credit refunds for generations that didn't work. Click **Request Refund** on any generation in your chat history — no need to email support. See [Request a credit refund](/docs/account/credits#request-a-credit-refund) for a walkthrough. Your data and published work stay intact. Here's what changes: * All data retained * Published apps and projects remain published * Anything.com branding appears on published web apps and websites * Mobile apps in TestFlight or the iOS App Store are untouched * Max Mode is removed if applicable * Publishing to custom domains and mobile app stores is disabled * Credits are retained, but daily limits on generations are now enforced Annual billing is charged as a single payment upfront — for example, Pro Annual is \$228 charged once per year, not \$19 per month. The monthly rate shown (\$19/mo) is the per-month equivalent. You can cancel anytime but annual payments are non-refundable. Check the monthly/yearly toggle on the [pricing page](https://anything.com/pricing) before subscribing. Each plan shows the savings for annual billing so you know which option you're picking. If you need to switch, email [hello@anything.com](mailto:hello@anything.com) and we'll help. # Ads Source: https://www.anything.com/docs/ads Monetize your apps with Google AdMob (mobile) and AdSense (web) Ads in Anything AdMob is for mobile apps. AdSense is for web apps. You connect both with the same Google account but they are tracked as separate connections. ## Overview Ads are the simplest way to make money from a free app. You don't charge users, you don't manage subscriptions. Google places ads, users see them, you get paid. Anything supports two Google ad products in one place: * **AdMob** for mobile apps. Banner, interstitial, rewarded, rewarded interstitial, app open, and native ads inside your iOS or Android app. AdMob apps are platform-specific, so iOS and Android each get their own AdMob app and their own ad units. * **AdSense** for web apps. Display, in-article, in-feed, matched content, and link ads on your published web app, plus Auto Ads if you want Google to place them for you. AdSense ad units are global to your account, not scoped to a specific site. Connect your Google account once in your project settings, pick the ad units you want, and ask the agent to drop them into your app. The agent reads your ad unit IDs from a project secret, so the IDs never get hardcoded into your source. ## Prerequisites Before you begin, make sure you have: * A [Google account](https://accounts.google.com) * A signed-up [AdMob](https://admob.google.com) account if you're monetizing a mobile app * A signed-up [AdSense](https://adsense.google.com) account if you're monetizing a web app * A project in Anything: [mobile](/docs/apps/mobile) for AdMob, [web](/docs/apps/web) for AdSense * A published app on a domain or in the App Store. Google needs to crawl a real, live property before it serves real ads. AdMob and AdSense are separate products with separate approval flows. Signing up for one does not sign you up for the other. Sign up for whichever matches the platform you're monetizing. ## Setup ### Connect your Google account Open your project, click the settings icon, and go to the **Monetization** tab. The Monetization tab has two sections: **Mobile Payments** for in-app purchases and **Ads** for ad networks. Scroll to the **Ads** section. You'll see two connect buttons, one for AdMob and one for AdSense. Click **Connect AdMob**. A Google sign-in popup opens. Pick the Google account that owns your AdMob publisher account and approve the read-only access. Click **Connect AdSense**. Same flow with a different Google scope. Pick the Google account that owns your AdSense publisher account. The Ads section may not appear in every workspace yet. It's behind a feature flag during rollout. If you don't see it, ping support and we'll enable it for your account. The OAuth permissions are read-only. Anything fetches your apps and ad units to show them in the picker. It does not create ad units, change settings, or move money. You always create and manage ad units in the AdMob or AdSense console. ### AdMob: pick an app and create ad units After you connect AdMob, the panel switches to a picker. AdMob apps are **platform-specific**, so an iOS app and an Android app are two separate AdMob apps even when they're the same product. If you ship to both stores, create one of each. If you have multiple AdMob accounts, pick the one for this project. Pick the AdMob app this project should publish under. If you haven't created an app in AdMob yet, click **Create AdMob app** to open the AdMob console in a popup, create the app for the right platform (iOS or Android), and come back. The list refreshes when you return. Inside the AdMob console, create ad units **under that app**. AdMob ad units are scoped to a specific app. Give each one a descriptive name like `home_banner`, `level_complete_interstitial`, or `extra_lives_rewarded`. The agent picks units by name when it places them in your app. Switch back to the Anything tab. The ad units list refreshes automatically when you focus the tab. ### AdSense: register your site and create ad units AdSense works differently from AdMob. **Sites and ad units are separate.** You register your site once, and you create ad units that work across any approved site under your account. There is no "pick the site for these ad units" step. In the AdSense console, add your published web app's domain as a site. AdSense needs a real, reachable URL it can crawl. Still in the AdSense console, create the ad units you want. Pick the type (display, in-article, in-feed, matched content, or link) and give each one a name. These ad units live at the account level and are not tied to the site you just added. If you don't want to manage individual ad units, enable **Auto Ads** for your site. Google decides where ads go. Switch back to the Anything tab. The ad units list refreshes automatically when you focus the tab. ## Adding ads to your app ### Mobile (AdMob) In your project settings, find the ad unit you want to use and click **Add to App**. A small placement modal opens. For banner and native ad units, the modal asks which page to put the ad on. Pick from your project's existing pages. For full-screen formats (interstitial, rewarded, rewarded interstitial, app open) this step is skipped, since they aren't tied to a single page. Add a short note about where on the page the ad should sit. For example, "show a banner at the bottom of the screen, just above the tab bar." Skip this for full-screen formats. Click **Add to App**. Anything creates a project secret called `EXPO_PUBLIC_ADMOB__AD_UNIT_ID` with the live ad unit ID, opens a new chat thread, and pre-fills a prompt that tells the agent which page, which format, and where to put it. Re-clicking **Add to App** on the same ad unit reuses the existing secret rather than creating a duplicate. You can place the same unit on multiple pages without polluting your env. ### Web (AdSense) In your project settings, click **Add to App** on a configured ad slot. AdSense supports five ad slot types, all of which work the same way once added: * **Display:** the most flexible. Banner-style ads that fit anywhere. * **In-article:** ads designed to sit between paragraphs of long-form content. * **In-feed:** ads styled to match cards in a feed or list view. * **Matched content:** related-article recommendations with optional ads mixed in. * **Link:** small text-link ads. The agent does three things: 1. Adds the AdSense loader script to `` of your root layout. 2. Creates an `` component that wraps Google's `` tag with the right `data-ad-client` and `data-ad-slot` attributes. 3. Places the ad where you asked. If you turned on **Auto Ads**, the agent only adds the loader script. Google places ads itself. The agent uses your real publisher ID and ad slot IDs, never test or placeholder IDs. Make sure your AdSense site is approved before testing, otherwise Google will return blank ad spaces. ## How it works Anything plugs into Google's ad SDKs without any configuration on your side. **Mobile:** 1. The agent imports `react-native-google-mobile-ads` directly in your component files. 2. The Expo plugin and your AdMob app IDs are injected at build time. You don't edit `app.json`. 3. On a real device or development build, the SDK loads ads from Google. 4. In Expo Go and the web preview, the ad components render as size-accurate placeholders so your layout still looks right. **Web:** 1. The AdSense loader script is added to the `` of your root layout. 2. Each ad unit is rendered as an `` element with your publisher and slot IDs. 3. The component pushes one entry to `window.adsbygoogle` per ad on mount, so the ad fills. 4. AdSense's crawler verifies your site, and ads start serving once it's approved. ## Going live Both AdMob and AdSense need to verify that you actually own the website or app before they pay out. This is the IAB authorized-sellers protocol, the same `ads.txt` standard you may have heard about. ### AdMob: app-ads.txt The first time you add an AdMob ad unit, the agent writes an `app-ads.txt` file to the `public/` folder of your **web app** in the same project. This is intentional. AdMob crawls the developer website you list in the App Store or Play Store, not the app itself. The file contains a single IAB authorized-sellers line: ``` google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0 ``` `pub-XXXXXXXXXXXXXXXX` is your AdMob publisher ID, filled in automatically. The file is written once. Adding more ad units later doesn't rewrite it. To finish setup: [Publish](/docs/launch/publish) the web app in the same project so `app-ads.txt` is reachable at `https://yourdomain.com/app-ads.txt`. In App Store Connect (iOS) or Play Console (Android), set your **developer website** field to the published web app URL. AdMob's crawler picks up the file within a day or two. Once it verifies, your app-ads.txt status flips to **Authorized** in the AdMob console. ### AdSense: ads.txt and site approval For web, the agent writes `ads.txt` to the `public/` folder so it's served at `https://yourdomain.com/ads.txt`. The site approval step is **manual**. AdSense doesn't auto-review new sites, you have to ask: [Publish](/docs/launch/publish) the web app so `ads.txt` is reachable at `https://yourdomain.com/ads.txt`. From the AdSense settings panel in Anything, click **Request a review** to deep-link to the AdSense site detail page for your domain. In the AdSense console, request the site review for that domain. AdSense reviews your site for content and policy compliance. New sites with thin content or no traffic can take days to weeks. Established sites are faster. The AdSense console shows the ads.txt status next to your site. It should flip to **Authorized** within a day of publishing. AdSense will not serve ads on a site until you manually request a review and it gets approved. If your ad placements look blank after going live, check the site approval status before assuming something is broken. ## Testing ### Mobile You cannot test real ads in the web preview or Expo Go. You need a real device or a development build. * **In the web preview:** banner ads render as a small gray placeholder. Interstitial and rewarded `load()` and `show()` calls are no-ops. * **In Expo Go:** the package is polyfilled with size-accurate placeholders so the layout doesn't break, but no real ads load. * **On a real device:** real ads load through the Google Mobile Ads SDK once the app is built natively. While you're developing, you can also ask the agent to use AdMob's test ad unit IDs so you see real ad behavior without risking your account: ``` "Use the AdMob test interstitial ID for now, I'll switch to my real one before launch" ``` ### Web AdSense ads only serve on approved domains. They will look blank in the preview and on any unapproved domain. To verify your integration works: 1. Publish the app to a real domain. 2. Open the site, view source, and confirm the AdSense loader script is in ``. 3. Confirm `https://yourdomain.com/ads.txt` returns the IAB authorized-sellers line. 4. Wait for AdSense to approve the site, then check that ads start filling. ## Policy notes A few rules from Google that are easy to break by accident: * **Don't click your own ads.** Even once. AdMob and AdSense detect this and ban accounts. If you need to test the click flow, use Google's test ad unit IDs. * **Don't ask anyone else to click your ads.** Same rule. * **Don't put more than one ad per page** until you understand AdSense's placement rules. Auto Ads handles this for you. * **Real-world goods and services on iOS** can use AdMob alongside Stripe Connect for marketplace payouts. Apple's IAP rules don't apply to physical goods or real-world services. See Apple's [Guideline 3.1.5](https://developer.apple.com/app-store/review/guidelines/#3.1.5). ## Troubleshooting ### "No apps found" in AdMob You connected AdMob but the app dropdown is empty. **Fix:** Click **Create AdMob app** to open the AdMob console in a popup, create your app there, then return to the tab. The app list refreshes automatically when you focus the tab. ### Ad units list is empty after creating units You created ad units in AdMob but they don't show up in the picker. **Fix:** Switch back to the Anything tab — the ad units list refreshes automatically when you focus the tab. New units can take a few seconds to propagate from AdMob. ### Ads show as blank or "ad failed to load" Ads don't render even on a published site or real device. **Fix:** Check these in order: 1. **Site or app approved?** AdSense and AdMob both gate real ad serving on account approval. Look at your account status in the Google console. 2. **`ads.txt` or `app-ads.txt` verified?** Anything writes the file. You still need to publish the web app and wait a day or two for Google's crawler. 3. **Developer website set?** For AdMob, the URL in your App Store or Play Store listing must match where `app-ads.txt` lives. 4. **Test ad unit IDs left in code?** Real ads do not serve from test IDs. Have the agent swap them for your live IDs. ### Banner ad component throws "module can't be resolved" You see a bundler error about `react-native-google-mobile-ads`. **Fix:** Don't try to fix it. The error is from the web bundler, not from a real broken import. The package is polyfilled for the web preview and Expo Go, and resolves to the native module on real device builds. Tell the agent to ignore the error and re-run. ### AdSense script appears outside `` Ads load late, the layout shifts, or some pages don't get ads. **Fix:** Ask the agent to move the AdSense loader script into the root layout's ``. Tell it the script must sit there, not inside a page component. ``` "Move the AdSense loader script into the of the root layout" ``` ### Ads worked, then stopped after I updated my app A working integration suddenly serves blank ads. **Fix:** Check your AdSense or AdMob console for policy notices. Common causes: a new page violates a policy, or a new domain hasn't been added to your authorized list. Resolve the notice and ads usually return within hours. ## FAQ No. The Expo plugin and your AdMob app IDs are injected at build time. Don't manually edit `app.json` to add `react-native-google-mobile-ads` to plugins. If you do, EAS builds may fail or duplicate config. AdMob serves ads inside native iOS and Android apps. AdSense serves ads on websites. Same Google account can own both, but they are separate products with separate sign-ups, separate dashboards, and separate approval flows. They also organize ad units differently: AdMob ad units are scoped to a specific app (and a specific platform), AdSense ad units live at the account level and aren't tied to any one site. That's how AdSense works. Sites and ad units are completely separate inside AdSense. You register sites for approval, and you create ad units that can be placed on any approved site under your account. There's no per-site ad unit list. Yes. AdMob apps are platform-specific. If you ship to both stores, create one AdMob app for iOS and one for Android, and create ad units under each. The agent picks the right ad units when integrating. Yes. Ads and subscriptions are not mutually exclusive. Free users see ads, paid users get an ad-free experience. The agent can wire that logic in if you ask. Just be aware Apple's IAP rules still apply to digital subscriptions on iOS, so RevenueCat is the right call for mobile. On purpose. Real Google ads can't load in the web preview or Expo Go because the SDK isn't bundled, your domain isn't approved, and Google's policy blocks unverified surfaces. The placeholders keep your layout intact while you build. Real ads load on a real device build (mobile) or an approved live domain (web). Go back to the **Monetization** tab and click **Disconnect** in either the AdMob or AdSense section. Connections are tracked separately, so disconnecting one leaves the other in place. Yes. Each connection is independent. Some publishers run AdMob under one Google account and AdSense under another. Pick whichever account is signed up for the product you're connecting. ## Connections You can connect AdMob and AdSense to the same Google account or to different ones. They are tracked as separate OAuth connections, so disconnecting AdMob doesn't disconnect AdSense and vice versa. To swap accounts, click **Disconnect** in the relevant section and reconnect with a different Google account. *** ## Related Articles * [Mobile Apps](/docs/apps/mobile): build a native iOS or Android app * [Web Apps](/docs/apps/web): build and publish a web app * [Publish your site](/docs/launch/publish): get your web app on a real domain so AdSense can verify * [Publish to the App Store](/docs/launch/app-store): get your iOS app live so AdMob can verify * [RevenueCat](/docs/payments/revenuecat): subscriptions and in-app purchases for mobile, an alternative to ads * [Stripe](/docs/payments/stripe): subscriptions and one-off payments for web, an alternative to ads # Delete an asset Source: https://www.anything.com/docs/api-reference/assets/delete-an-asset https://api.anything.com/v0/api/openapi.json delete /v0/api/projects/{projectGroupId}/assets/{assetId} Removes an asset from a project group. # List assets Source: https://www.anything.com/docs/api-reference/assets/list-assets https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/assets Returns the image assets uploaded to a project group, optionally filtered by a search query and paginated. # Upload an asset Source: https://www.anything.com/docs/api-reference/assets/upload-an-asset https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/assets Uploads an image asset to a project group. Send the file as multipart/form-data under the `file` field, with an optional display `name`. # Create a database Source: https://www.anything.com/docs/api-reference/databases/create-a-database https://api.anything.com/v0/api/openapi.json post /v0/api/databases Creates a new user database. The database is provisioned asynchronously — poll GET /databases/{databaseId} until the status leaves CREATING. # Delete a database Source: https://www.anything.com/docs/api-reference/databases/delete-a-database https://api.anything.com/v0/api/openapi.json delete /v0/api/databases/{databaseId} Soft-deletes a user database and schedules permanent removal of the underlying infrastructure after a 30-day grace period. # Get a single database Source: https://www.anything.com/docs/api-reference/databases/get-a-single-database https://api.anything.com/v0/api/openapi.json get /v0/api/databases/{databaseId} Returns details for a specific user database. # Get database connection string Source: https://www.anything.com/docs/api-reference/databases/get-database-connection-string https://api.anything.com/v0/api/openapi.json get /v0/api/databases/{databaseId}/connection Returns the connection string for a user database. # List accessible databases Source: https://www.anything.com/docs/api-reference/databases/list-accessible-databases https://api.anything.com/v0/api/openapi.json get /v0/api/databases Returns databases in an organization that the authenticated user can access. # Query a database Source: https://www.anything.com/docs/api-reference/databases/query-a-database https://api.anything.com/v0/api/openapi.json post /v0/api/databases/{databaseId}/query Executes a read-only SQL query against the database. Only SELECT, WITH, EXPLAIN, and SHOW statements are allowed. # Reset development database Source: https://www.anything.com/docs/api-reference/databases/reset-development-database https://api.anything.com/v0/api/openapi.json post /v0/api/databases/{databaseId}/reset Resets the development branch of a user database. # Get deployment logs Source: https://www.anything.com/docs/api-reference/deployments/get-deployment-logs https://api.anything.com/v0/api/openapi.json get /v0/api/deployments/{deploymentId}/logs Returns the build logs for a specific deployment. # Get deployment status Source: https://www.anything.com/docs/api-reference/deployments/get-deployment-status https://api.anything.com/v0/api/openapi.json get /v0/api/deployments/{deploymentId} Returns the current state of a deployment, including build logs if available. # List project deployments Source: https://www.anything.com/docs/api-reference/deployments/list-project-deployments https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/deployments Returns recent deployments for a project group, ordered by creation time descending. # Rollback a deployment Source: https://www.anything.com/docs/api-reference/deployments/rollback-a-deployment https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/deployments/rollback Deployment rollback is not yet implemented. # Add a domain Source: https://www.anything.com/docs/api-reference/domains/add-a-domain https://api.anything.com/v0/api/openapi.json post /v0/api/domains Adds a custom domain to an organization, optionally linked to a project group. # List organization domains Source: https://www.anything.com/docs/api-reference/domains/list-organization-domains https://api.anything.com/v0/api/openapi.json get /v0/api/domains Returns the apex domains for an organization, including verification status and linked project information. # Remove a domain Source: https://www.anything.com/docs/api-reference/domains/remove-a-domain https://api.anything.com/v0/api/openapi.json delete /v0/api/domains/{domainId} Removes a custom domain. # Verify a domain Source: https://www.anything.com/docs/api-reference/domains/verify-a-domain https://api.anything.com/v0/api/openapi.json post /v0/api/domains/{domainId}/verify Triggers verification for a custom domain. # Read project files Source: https://www.anything.com/docs/api-reference/files/read-project-files https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/files Lists project files, or returns one file with content when `path` is provided. # Request a change Source: https://www.anything.com/docs/api-reference/generation/request-a-change https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/generate Sends a prompt to generate changes in an existing project. Optionally creates or continues a conversation thread. # Read recent development logs Source: https://www.anything.com/docs/api-reference/logs/read-recent-development-logs https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/logs Returns recent development logs for a project, optionally filtered by level or message text. # Read messages Source: https://www.anything.com/docs/api-reference/messages/read-messages https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/messages Returns chat messages for a project, optionally filtered by thread. # Get Play Store setup details Source: https://www.anything.com/docs/api-reference/mobile/get-play-store-setup-details https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/play-store-setup Returns the package name to register and the service account email to invite in Google Play Console before starting a Play Store submission. # Read submission status Source: https://www.anything.com/docs/api-reference/mobile/read-submission-status https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/submit/{submissionId} Returns the current state of an Expo launch session for a project. # Start an App Store submission Source: https://www.anything.com/docs/api-reference/mobile/start-an-app-store-submission https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/submit Starts the Expo launch flow for an app store submission. Returns the session so clients can poll for launch URL readiness. # Invite a member Source: https://www.anything.com/docs/api-reference/organizations/invite-a-member https://api.anything.com/v0/api/openapi.json post /v0/api/organizations/{organizationId}/invites Sends an invitation to join the organization. Requires OWNER or ADMIN role. # List organization members Source: https://www.anything.com/docs/api-reference/organizations/list-organization-members https://api.anything.com/v0/api/openapi.json get /v0/api/organizations/{organizationId}/members Returns collaborators and pending invites for an organization the authenticated user can access. # Remove a member Source: https://www.anything.com/docs/api-reference/organizations/remove-a-member https://api.anything.com/v0/api/openapi.json post /v0/api/organizations/{organizationId}/members/remove Removes a member from the organization. Requires OWNER or ADMIN role. # Update member role Source: https://www.anything.com/docs/api-reference/organizations/update-member-role https://api.anything.com/v0/api/openapi.json post /v0/api/organizations/{organizationId}/members/role Changes the role of an organization member. Requires OWNER or ADMIN role. # Create a new project Source: https://www.anything.com/docs/api-reference/projects/create-a-new-project https://api.anything.com/v0/api/openapi.json post /v0/api/projects Creates a new project and starts initial generation from a prompt. # Delete a project Source: https://www.anything.com/docs/api-reference/projects/delete-a-project https://api.anything.com/v0/api/openapi.json delete /v0/api/projects/{projectGroupId} Marks a project group for deletion and schedules permanent cleanup. # Duplicate a project Source: https://www.anything.com/docs/api-reference/projects/duplicate-a-project https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/duplicate Duplicates an existing project group into the same organization and returns the new project group ID. # Get project info Source: https://www.anything.com/docs/api-reference/projects/get-project-info https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId} Returns project group details including modules and dev server status. # Inspect auth provider configuration Source: https://www.anything.com/docs/api-reference/projects/inspect-auth-provider-configuration https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/auth/providers Returns the auth providers configured for a project group, including the secret metadata used by the Authentication settings UI. # List accessible projects Source: https://www.anything.com/docs/api-reference/projects/list-accessible-projects https://api.anything.com/v0/api/openapi.json get /v0/api/projects Returns project groups the authenticated user can access, optionally filtered by organization or search query. # Publish project Source: https://www.anything.com/docs/api-reference/projects/publish-project https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/publish Publishes the project, making it publicly accessible. Optionally claims a custom slug. # Read project status Source: https://www.anything.com/docs/api-reference/projects/read-project-status https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/status Returns a small status document (latest revision status + deployment summary) for cheap polling. Avoids the message body payload. # Rename a project group Source: https://www.anything.com/docs/api-reference/projects/rename-a-project-group https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/rename Renames a project group the authenticated user can access and returns the updated metadata. # Restore a deleted project Source: https://www.anything.com/docs/api-reference/projects/restore-a-deleted-project https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/restore Restores a project group that has been marked for deletion and cancels its pending cleanup job. # Unpublish project Source: https://www.anything.com/docs/api-reference/projects/unpublish-project https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/unpublish Removes the published app for a project group without deleting the project group itself. # Add secrets Source: https://www.anything.com/docs/api-reference/secrets/add-secrets https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/secrets Adds one or more secrets to a project. Send a single secret object or a bulk array. # Delete a secret Source: https://www.anything.com/docs/api-reference/secrets/delete-a-secret https://api.anything.com/v0/api/openapi.json delete /v0/api/projects/{projectGroupId}/secrets/{secretId} Removes a secret from the project. # List secrets Source: https://www.anything.com/docs/api-reference/secrets/list-secrets https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/secrets Returns the configured secrets for a project without exposing plaintext values. # Read project auth settings Source: https://www.anything.com/docs/api-reference/settings/read-project-auth-settings https://api.anything.com/v0/api/openapi.json get /v0/api/projects/{projectGroupId}/settings/auth Returns the current project auth provider state and whether each provider appears configured. # Update project auth settings Source: https://www.anything.com/docs/api-reference/settings/update-project-auth-settings https://api.anything.com/v0/api/openapi.json post /v0/api/projects/{projectGroupId}/settings/auth Updates the enabled state for a project auth provider and optionally stores provider secrets. # Get current user info Source: https://www.anything.com/docs/api-reference/user/get-current-user-info https://api.anything.com/v0/api/openapi.json get /v0/api/me Returns the authenticated user and their organizations, including plan and credit context. # Auth Source: https://www.anything.com/docs/apps/auth Add sign up, login, and user accounts to your app
``` If you are working with a wordpress.com site, you may need to use a [plugin](https://wordpress.com/plugins/iframe) to get the iframe to display. # Export Source: https://www.anything.com/docs/share/export Download your code and take it anywhere Download your project's source code anytime. Go to the **Code** tab and click **Download Project** to get a zip file. Code Download ## GitHub GitHub sync is coming soon. For now, download your code and push it to a GitHub repo yourself. You can use the exported code in our [App Compliance Check](/docs/apps/mobile/testing#apple-app-compliance-check) to check your app meets Apple's guidelines before App Store submission. # Invite your team Source: https://www.anything.com/docs/share/teams Work with others on your app in real time Anything lets you collaborate with teammates in real time as you build your app together. Invite your designer, developer, agency, or anyone else to join your workspace. Invite Pn ## Getting started Invite teammates in two steps: * Click the **'Invite'** button in a project or from the dashboard * Enter their email addresses to send invitations When teammates accept their email invitations, they'll join your workspace and see your projects. ## Real-time collaboration When teammates join your project: * See their cursor and changes in real time * Their icon appears in the top right corner * Work together simultaneously on any element The /build URL from the builder stays private by default. After inviting teammates, you can share this link for direct access. ## Managing access * Teammates can access all projects in the workspace * Switch between different teams from the dashboard side panel * Teammates need to accept their email invitation to join Team member removal isn't supported in the UI yet. Email [hello@anything.com](mailto:hello@anything.com) if you need to remove someone from your workspace. Team Account Toggle ## How to toggle into a shared account To switch between different team accounts or shared workspaces: 1. **Navigate to the dashboard** - Go to your main Anything dashboard 2. **Find the "My Team" dropdown** - Look for the "My Team" section in the left sidebar 3. **Click the dropdown arrow** - Click the chevron (▼) next to "My Team" to open the menu 4. **Select your desired team** - Choose from the available team options in the dropdown The dropdown will show all teams you have access to, including any shared accounts or workspaces. Simply click on the team you want to switch to, and you'll be taken to that team's dashboard and projects. # Get help Source: https://www.anything.com/docs/support/help Get help from the community and the Anything team Nearly every issue you may encounter with your project is directly fixable with prompting. Please consider reviewing our [prompting guide](/docs/prompting) for best results ## How to triage Most bugs come down to a single, specific error in the logs. The fastest path to a fix is to find that error, understand it, then ask the agent to fix the one thing that's actually broken. Discussion mode is the right tool for the understanding step. You can ask the agent anything without it changing your code, which makes it safe to inspect, ask follow-ups, and narrow things down. ### Fixing issues yourself
Reproduce the issue

Open your app and trigger the broken behavior on purpose. Note exactly what you clicked, what you expected to happen, and what happened instead. For mobile apps, reproduce on your device using Expo Go. One issue at a time.

Pull the logs

Open the Logs panel from the bottom bar of the builder. The most useful entry is usually the first error or warning that appeared right when you triggered the bug. Use the copy button to grab the full message, including the stack trace. If nothing useful is in the logs, take a screenshot of what's broken on screen.

Investigate in Discussion mode

Switch to Discussion mode and paste the error (or the screenshot). Don't ask for a fix yet. Ask the agent what's going on. Discussion mode doesn't change your code, so you can probe freely:

  • "Read the logs and tell me what's failing."
  • "Which file is throwing this error?"
  • "Is this a frontend issue or a backend issue?"
  • "What would you change to fix it, and what would that affect?"

Keep going until you understand the actual cause, not just the symptom. The narrower your understanding, the smaller the fix the agent has to make.

Fix it in Thinking mode

Switch to Thinking mode and ask for the specific change you now know is needed. Keep the ask narrow: name the file, name the behavior, name the expected outcome. A focused prompt produces a focused fix.

Verify

Refresh your preview and reproduce the original steps. Check the logs again to confirm the error is gone. If it isn't, go back to Discussion mode with the new error and narrow further.

If you find yourself asking the agent to "fix everything that's wrong," you've skipped the investigation step. Go back to Discussion mode and figure out what's actually broken before asking for a fix. ### Reproduce in preview first Always try to trigger the bug in your builder [preview](/docs/essentials#preview-vs-production) before asking the agent to fix anything. Preview is your safe-to-break copy of the app. Production is what your real users see. Fix in preview because: * Preview has its own database, so anything you do here doesn't touch real user data. * Live logs and errors stream straight to the builder, where the agent can read them. * The agent's changes land in preview, so you can verify the fix before pushing it live with **Publish**. If the bug only shows up for your users and you can't trigger it in preview, that's normal. Preview and your live app can drift apart in small ways, especially around the data your users have and the settings you've configured for going live. Tell the agent the full story in Discussion mode. A few patterns that work well: **Lead with where it works and where it doesn't.** ``` This works for me in preview but a user told me it isn't working for them on the live app. What could be different? ``` **Paste exactly what your user said or saw.** ``` A user reported this. Here's the message they sent me. What should I check? ``` **Ask the agent to compare, not just fix.** ``` Walk me through what could behave differently between preview and the live app for this feature. ``` The agent will ask follow-up questions, point you at what to check, and write the fix when you're ready. ### If you're using Max [Max](/docs/builder/max) can run the triage loop for you. Instead of pulling logs yourself, give Max the symptom and let it reproduce, investigate, and fix in one shot. Good Max prompts look like: ``` The checkout button does nothing on mobile. Reproduce it, read the logs, and fix it. ``` ``` Users say they get logged out on refresh. Find what's causing it and fix it. ``` Keep the scope tight. "Reproduce and fix the checkout button bug" is a good Max task. "Fix everything that's wrong with my app" is not. Max works best when it knows what success looks like. For pre-launch testing, run Max on each critical flow in parallel ([signup, payments, invites](/docs/builder/max#parallel-agents)). Each instance focuses on one flow and fixes any bugs it finds along the way. ## Reviewing Error Logs How to review error logs and provide context to your AI agent to help fix them.