POST /v1/aso/metadata/validate
Validate your app store metadata against Apple App Store or Google Play Store character limits before submitting. Checks each field for length compliance, detects keyword stuffing, and identifies duplicate keywords.
Request Body
| Field | Type | Required | Description |
|---|
| platform | string | Yes | "apple" or "google" |
| title | string | No | App title to validate |
| subtitle | string | No | Apple subtitle (Apple only) |
| keywords | string | No | Apple keyword field, comma-separated (Apple only) |
| shortDescription | string | No | Google short description (Google only) |
| fullDescription | string | No | Google full description (Google only) |
Include only the fields relevant to your platform. For Apple, send title, subtitle, and/or keywords. For Google, send title, shortDescription, and/or fullDescription.
Character Limits
| Platform | Field | Max Characters |
|---|
| Apple | title | 30 |
| Apple | subtitle | 30 |
| Apple | keywords | 100 |
| Google | title | 50 |
| Google | shortDescription | 80 |
| Google | fullDescription | 4,000 |
Code Examples
curl -X POST "https://api.appeeky.com/v1/aso/metadata/validate" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "apple",
"title": "FitFlow: Fitness Tracker",
"subtitle": "Easy Workout Planner & Log",
"keywords": "activity,goals,routine,challenge,calories,home,progress,simple,exercise,fitness,beginner"
}'
Response
{
"data": {
"platform": "apple",
"fields": [
{
"field": "title",
"value": "FitFlow: Fitness Tracker",
"charCount": 24,
"maxChars": 30,
"isValid": true,
"message": "24/30 characters (6 remaining)"
},
{
"field": "subtitle",
"value": "Easy Workout Planner & Log",
"charCount": 26,
"maxChars": 30,
"isValid": true,
"message": "26/30 characters (4 remaining)"
},
{
"field": "keywords",
"value": "activity,goals,routine,challenge,calories,home,progress,simple,exercise,fitness,beginner",
"charCount": 89,
"maxChars": 100,
"isValid": true,
"message": "89/100 characters (11 remaining)"
}
],
"allValid": true,
"keywordStuffingDetected": false,
"duplicateKeywords": []
}
}
{
"data": {
"platform": "apple",
"fields": [
{
"field": "title",
"value": "FitFlow: The Best Fitness Tracker App For Everyone",
"charCount": 50,
"maxChars": 30,
"isValid": false,
"message": "50/30 characters (20 over limit!)"
}
],
"allValid": false,
"keywordStuffingDetected": true,
"duplicateKeywords": []
}
}
Response Fields
| Field | Type | Description |
|---|
| platform | string | "apple" or "google" |
| fields | array | Validation result for each submitted field |
| allValid | boolean | true if all fields pass character limits |
| keywordStuffingDetected | boolean | true if excessive keyword repetition is detected |
| duplicateKeywords | string[] | List of keywords that appear more than once in the keyword field |
Field Entry
| Field | Type | Description |
|---|
| field | string | Field name (e.g. "title", "keywords") |
| value | string | The submitted value |
| charCount | number | Actual character count |
| maxChars | number | Maximum allowed characters |
| isValid | boolean | true if within character limit |
| message | string | Human-readable status with remaining/over count |
Apple keyword field tips:
- Use commas without spaces between keywords (saves characters)
- Don’t repeat words already in your title or subtitle
- Don’t include your app name or brand
- Singular vs plural: Apple matches both, so pick the shorter form
- Use all 100 characters — every unused character is a wasted opportunity
Keyword stuffing will get your app rejected or penalized. Apple and Google both have guidelines against unnatural keyword repetition. The keywordStuffingDetected flag warns you when a word appears too frequently (> 5% density in descriptions).
Errors
| Status | Code | When |
|---|
| 400 | INVALID_PLATFORM | platform is not “apple” or “google” |
| 401 | MISSING_API_KEY | No API key in the request |