simulate_metadata
Score a draft app listing before publishing, compare its ASO health and gain or loss against the app's live listing, or test metadata without an app.
Instructions
Score a listing that does not exist yet, on the same engine that audits the real ones, and see the gain or loss against the app's current score. WITH app_id: every field you leave out is read from that app's live listing AND its real context (rating, screenshots, age, languages), so { app_id, title } is a complete request and the delta is meaningful. This is the mode to use to answer "is my draft better than my listing". WITHOUT app_id: you must pass store, country and lang, and the context defaults to a listing NOBODY HAS PUBLISHED: no rating, no screenshot, one language. That deliberately floors the appeal axis, so the global score is NOT comparable to a real app's score and you must not present it as one. Compare the coverage axis instead, or pass context yourself to describe the app you have in mind. context works in both modes: any key you send overrides, any key you omit keeps the app's value (or the blank default). Returns app (null without app_id), aso_health with the three axes and the tier, delta against the app's stored score (null for a draft from scratch, and each axis is independently null when it was never computed), flags[], the saved run, and notes[] for anything wrong with the request that did not stop it (a kw_field sent for a Google Play listing, which has none, is ignored and reported there). words_probed is how many words the run weighed; words_fetched is how many of those had to be read from the store for the first time. words_fetched: 0 means everything was already known and the call was fast; a high one is why a call took several seconds, and it warms the cache for everyone afterwards. Expect a few seconds per call. Check the draft with check_metadata first, and change something meaningful between two calls rather than polling it. Re-read a past run in full with get_metadata_simulation, or list them with list_metadata_simulations.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | BCP-47 language code. Required only without app_id. | |
| store | No | App store. Required only without app_id: with one, the market comes from the app. | |
| title | No | App name | |
| app_id | No | The application internal ID (numeric, from list_applications). Its live listing fills every field you omit, and its score is what the delta is measured against. | |
| context | No | What the listing has going for it beyond its text, merged over the app's real values. Send one key alone to ask a what-if, e.g. { days_since_update: 0 } for "what if I shipped today". | |
| country | No | ISO country code. Required only without app_id. | |
| kw_field | No | iOS keywords field, comma separated. Google Play has no such field. | |
| subtitle | No | The subtitle on iOS, the short description on Google Play | |
| description | No | The full/long description |