Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "watch_get_status" and "watch_save_checkin" (6 tools before, 8 now)
READ. Return this key's Eligibility Watch trend, projected dates, and rule-change notes. It does not write.
WRITE. Save caller-supplied Snapchat numbers on this key's Eligibility Watch. A field you include replaces that date. A field you omit keeps the saved value. Null clears it.
Added "calculate_payout_timeline" (5 tools before, 6 now)
CALCULATION. Use this when you need a date-by-date timeline of Snap's payout steps from a credited date: Pending to Available, the cash-out minimum, taxpayer verification, and the earliest day cash can reach the Payout Portal. Ranges stay ranges when the source gives a range. This is an estimate, not a promise. Do not use it to score eligibility (check_eligibility) or to list every rule (get_monetization_requirements).
Changed the definition of "calculate_gap", "calculate_growth_pace", "check_eligibility" and 2 more
before
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/calculate_gap.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"already_enrolled":{"type":"boolean"},"api_version":{"const":"v1"},"binding_constraint":{"additionalProperties":false,"properties":{"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"percent_complete":{"type":"number"},"rule":{"const":"unmet requirement with the lowest percent_complete; ties broken by rule_id"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","metric","percent_complete","rule"],"type":["object","null"]},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"gaps":{"description":"Entry requirements only.","items":{"additionalProperties":false,"properties":{"current":{"type":"number"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"met":{"type":"boolean"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"percent_complete":{"description":"min(current / threshold, 1) * 100, rounded to 2 dp","maximum":100,"minimum":0,"type":"number"},"percent_complete_uncapped":{"minimum":0,"type":"number"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_version":{"type":"integer"},"shortfall_absolute":{"description":"max(threshold - current, 0)","minimum":0,"type":"number"},"surplus_absolute":{"description":"max(current - threshold, 0)","minimum":0,"type":"number"},"threshold":{"type":"number"},"unit":{"type":"string"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","rule_version","metric","unit","threshold","current","met","shortfall_absolute","percent_complete","percent_complete_uncapped","formula"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"ongoing_gaps":{"additionalProperties":false,"description":"null unless already_enrolled=true.","properties":{"gaps":{"items":{"additionalProperties":false,"properties":{"current":{"type":"number"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"met":{"type":"boolean"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"percent_complete":{"description":"min(current / threshold, 1) * 100, rounded to 2 dp","maximum":100,"minimum":0,"type":"number"},"percent_complete_uncapped":{"minimum":0,"type":"number"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_version":{"type":"integer"},"shortfall_absolute":{"description":"max(threshold - current, 0)","minimum":0,"type":"number"},"surplus_absolute":{"description":"max(current - threshold, 0)","minimum":0,"type":"number"},"threshold":{"type":"number"},"unit":{"type":"string"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","rule_version","metric","unit","threshold","current","met","shortfall_absolute","percent_complete","percent_complete_uncapped","formula"],"type":"object"},"type":"array"},"note":{"const":"Ongoing requirements apply only to creators already enrolled in the Monetization Program. Snap says the 100-hour Spotlight view-time requirement is needed to qualify for maximum Creator Rewards; Snap does not say that rewards stop below it."}},"required":["note","gaps"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"recommendations":{"items":{"additionalProperties":false,"description":"RECOMMENDATION: our suggestion, never a Snap rule. Short and structured; the calling agent writes prose.","properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"label":{"const":"RECOMMENDATION"},"linked_rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"measurable_target":{"additionalProperties":false,"properties":{"by_date":{"format":"date","type":["string","null"]},"metric":{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},"unit":{"type":"string"},"value":{"type":"number"}},"required":["metric","value","unit"],"type":"object"},"objective":{"maxLength":200,"type":"string"},"order":{"description":"1 = address first (the binding constraint). An ordering, not a score.","minimum":1,"type":"integer"},"realism_note":{"description":"Plain statement when the math is unrealistic, e.g. 'Required pace is 20x your observed pace.'","type":["string","null"]},"reason":{"maxLength":300,"type":"string"},"risks":{"items":{"type":"string"},"type":"array"}},"required":["label","objective","reason","linked_rule_id","measurable_target","assumptions","risks"],"type":"object"},"type":"array"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"const":"calculate_gap"},"unknowns":{"items":{"additionalProperties":false,"description":"A requirement we could not evaluate, with the reason and what would resolve it.","properties":{"how_to_resolve":{"type":"string"},"missing_metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"reason":{"enum":["missing_input","rule_unverified","requires_user_confirmation","not_computable_from_metrics","rule_value_not_numeric"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","reason","how_to_resolve"],"type":"object"},"type":"array"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","program","already_enrolled","gaps","ongoing_gaps","binding_constraint","unknowns","facts","recommendations"],"title":"calculate_gap output","type":"object"}Certificate recorded, valid to 2026-12-27
Authorization not required
Changed the definition of "get_rule_changes"
⟨178 unchanged words⟩ ,"type":"string"},"since":{"default":"2024-01-01","description":"Inclusive lower bound on the change ⟨12 unchanged words⟩ Omitted on GET, POST, and MCP means2024-01-01, the same90defaultdaysasbefore therule-changesrequest'spage.UTC date. until defaults to the UTC date of the ⟨43 unchanged words⟩
Unknown → Live
First tool surface recorded: 5 tools (server version 1.1.0)
https://howtomakemoneyonsnapchat.com/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 9 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
after
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/calculate_gap.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"already_enrolled":{"type":"boolean"},"api_version":{"const":"v1"},"binding_constraint":{"additionalProperties":false,"properties":{"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"percent_complete":{"type":"number"},"rule":{"const":"unmet requirement with the lowest percent_complete; ties broken by rule_id"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","metric","percent_complete","rule"],"type":["object","null"]},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this rule's official source text unchanged. Omitted when no such check is recorded. Does not replace verified_at and is not a rule value.","format":"date-time","type":"string"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"gaps":{"description":"Entry requirements only.","items":{"additionalProperties":false,"properties":{"current":{"type":"number"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"met":{"type":"boolean"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"percent_complete":{"description":"min(current / threshold, 1) * 100, rounded to 2 dp","maximum":100,"minimum":0,"type":"number"},"percent_complete_uncapped":{"minimum":0,"type":"number"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_version":{"type":"integer"},"shortfall_absolute":{"description":"max(threshold - current, 0)","minimum":0,"type":"number"},"surplus_absolute":{"description":"max(current - threshold, 0)","minimum":0,"type":"number"},"threshold":{"type":"number"},"unit":{"type":"string"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","rule_version","metric","unit","threshold","current","met","shortfall_absolute","percent_complete","percent_complete_uncapped","formula"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"ongoing_gaps":{"additionalProperties":false,"description":"null unless already_enrolled=true.","properties":{"gaps":{"items":{"additionalProperties":false,"properties":{"current":{"type":"number"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"met":{"type":"boolean"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"percent_complete":{"description":"min(current / threshold, 1) * 100, rounded to 2 dp","maximum":100,"minimum":0,"type":"number"},"percent_complete_uncapped":{"minimum":0,"type":"number"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_version":{"type":"integer"},"shortfall_absolute":{"description":"max(threshold - current, 0)","minimum":0,"type":"number"},"surplus_absolute":{"description":"max(current - threshold, 0)","minimum":0,"type":"number"},"threshold":{"type":"number"},"unit":{"type":"string"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","rule_version","metric","unit","threshold","current","met","shortfall_absolute","percent_complete","percent_complete_uncapped","formula"],"type":"object"},"type":"array"},"note":{"const":"Ongoing requirements apply only to creators already enrolled in the Monetization Program. Snap says the 100-hour Spotlight view-time requirement is needed to qualify for maximum Creator Rewards; Snap does not say that rewards stop below it."}},"required":["note","gaps"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"recommendations":{"items":{"additionalProperties":false,"description":"RECOMMENDATION: our suggestion, never a Snap rule. Short and structured; the calling agent writes prose.","properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"label":{"const":"RECOMMENDATION"},"linked_rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"measurable_target":{"additionalProperties":false,"properties":{"by_date":{"format":"date","type":["string","null"]},"metric":{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},"unit":{"type":"string"},"value":{"type":"number"}},"required":["metric","value","unit"],"type":"object"},"objective":{"maxLength":200,"type":"string"},"order":{"description":"1 = address first (the binding constraint). An ordering, not a score.","minimum":1,"type":"integer"},"realism_note":{"description":"Plain statement when the math is unrealistic, e.g. 'Required pace is 20x your observed pace.'","type":["string","null"]},"reason":{"maxLength":300,"type":"string"},"risks":{"items":{"type":"string"},"type":"array"}},"required":["label","objective","reason","linked_rule_id","measurable_target","assumptions","risks"],"type":"object"},"type":"array"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"const":"calculate_gap"},"unknowns":{"items":{"additionalProperties":false,"description":"A requirement we could not evaluate, with the reason and what would resolve it.","properties":{"how_to_resolve":{"type":"string"},"missing_metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"reason":{"enum":["missing_input","rule_unverified","requires_user_confirmation","not_computable_from_metrics","rule_value_not_numeric"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","reason","how_to_resolve"],"type":"object"},"type":"array"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","program","already_enrolled","gaps","ongoing_gaps","binding_constraint","unknowns","facts","recommendations"],"title":"calculate_gap output","type":"object"}before
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/calculate_growth_pace.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"already_enrolled":{"type":"boolean"},"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"ongoing_paces":{"additionalProperties":false,"description":"null unless already_enrolled=true.","properties":{"note":{"const":"Ongoing requirements apply only to creators already enrolled in the Monetization Program. Snap says the 100-hour Spotlight view-time requirement is needed to qualify for maximum Creator Rewards; Snap does not say that rewards stop below it."},"paces":{"items":{"additionalProperties":false,"properties":{"already_met":{"type":"boolean"},"current":{"type":"number"},"gap":{"minimum":0,"type":"number"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"metric_kind":{"enum":["cumulative","rolling_window"],"type":"string"},"observed_daily_change":{"type":["number","null"]},"required_to_observed_ratio":{"description":"linear required_daily / observed_daily_change; null if observed not supplied or <= 0.","type":["number","null"]},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"scenarios":{"items":{"additionalProperties":false,"properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"computable":{"type":"boolean"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"name":{"description":"linear: shortfall divided by the caller-chosen days, (T - C) / N. Used for cumulative metrics and for rolling-window metrics. compound: constant daily % growth (cumulative metrics; not computable when current = 0). rolling_window_replacement remains in the enum and is not produced.","enum":["linear","compound","rolling_window_replacement"],"type":"string"},"not_computable_reason":{"type":["string","null"]},"required_daily":{"type":["number","null"]},"required_daily_growth_rate_pct":{"description":"compound scenario only","type":["number","null"]},"required_weekly":{"type":["number","null"]},"unit":{"type":"string"}},"required":["label","name","computable","required_daily","required_weekly","unit","formula","assumptions"],"type":"object"},"minItems":1,"type":"array"},"threshold":{"type":"number"},"window_days":{"type":["integer","null"]}},"required":["rule_id","metric","metric_kind","current","threshold","gap","scenarios"],"type":"object"},"type":"array"}},"required":["note","paces"],"type":["object","null"]},"paces":{"description":"Entry requirements only.","items":{"additionalProperties":false,"properties":{"already_met":{"type":"boolean"},"current":{"type":"number"},"gap":{"minimum":0,"type":"number"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"metric_kind":{"enum":["cumulative","rolling_window"],"type":"string"},"observed_daily_change":{"type":["number","null"]},"required_to_observed_ratio":{"description":"linear required_daily / observed_daily_change; null if observed not supplied or <= 0.","type":["number","null"]},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"scenarios":{"items":{"additionalProperties":false,"properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"computable":{"type":"boolean"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"name":{"description":"linear: shortfall divided by the caller-chosen days, (T - C) / N. Used for cumulative metrics and for rolling-window metrics. compound: constant daily % growth (cumulative metrics; not computable when current = 0). rolling_window_replacement remains in the enum and is not produced.","enum":["linear","compound","rolling_window_replacement"],"type":"string"},"not_computable_reason":{"type":["string","null"]},"required_daily":{"type":["number","null"]},"required_daily_growth_rate_pct":{"description":"compound scenario only","type":["number","null"]},"required_weekly":{"type":["number","null"]},"unit":{"type":"string"}},"required":["label","name","computable","required_daily","required_weekly","unit","formula","assumptions"],"type":"object"},"minItems":1,"type":"array"},"threshold":{"type":"number"},"window_days":{"type":["integer","null"]}},"required":["rule_id","metric","metric_kind","current","threshold","gap","scenarios"],"type":"object"},"type":"array"},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"projection_disclaimer":{"const":"Projections show the pace required under stated assumptions. They are not predictions of what will happen."},"recommendations":{"items":{"additionalProperties":false,"description":"RECOMMENDATION: our suggestion, never a Snap rule. Short and structured; the calling agent writes prose.","properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"label":{"const":"RECOMMENDATION"},"linked_rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"measurable_target":{"additionalProperties":false,"properties":{"by_date":{"format":"date","type":["string","null"]},"metric":{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},"unit":{"type":"string"},"value":{"type":"number"}},"required":["metric","value","unit"],"type":"object"},"objective":{"maxLength":200,"type":"string"},"order":{"description":"1 = address first (the binding constraint). An ordering, not a score.","minimum":1,"type":"integer"},"realism_note":{"description":"Plain statement when the math is unrealistic, e.g. 'Required pace is 20x your observed pace.'","type":["string","null"]},"reason":{"maxLength":300,"type":"string"},"risks":{"items":{"type":"string"},"type":"array"}},"required":["label","objective","reason","linked_rule_id","measurable_target","assumptions","risks"],"type":"object"},"type":"array"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"target_date":{"format":"date","type":"string"},"target_days":{"type":"integer"},"tool":{"const":"calculate_growth_pace"},"unknowns":{"items":{"additionalProperties":false,"description":"A requirement we could not evaluate, with the reason and what would resolve it.","properties":{"how_to_resolve":{"type":"string"},"missing_metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"reason":{"enum":["missing_input","rule_unverified","requires_user_confirmation","not_computable_from_metrics","rule_value_not_numeric"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","reason","how_to_resolve"],"type":"object"},"type":"array"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","program","already_enrolled","target_days","target_date","paces","ongoing_paces","projection_disclaimer","unknowns","facts","recommendations"],"title":"calculate_growth_pace output","type":"object"}after
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/calculate_growth_pace.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"already_enrolled":{"type":"boolean"},"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this rule's official source text unchanged. Omitted when no such check is recorded. Does not replace verified_at and is not a rule value.","format":"date-time","type":"string"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"ongoing_paces":{"additionalProperties":false,"description":"null unless already_enrolled=true.","properties":{"note":{"const":"Ongoing requirements apply only to creators already enrolled in the Monetization Program. Snap says the 100-hour Spotlight view-time requirement is needed to qualify for maximum Creator Rewards; Snap does not say that rewards stop below it."},"paces":{"items":{"additionalProperties":false,"properties":{"already_met":{"type":"boolean"},"current":{"type":"number"},"gap":{"minimum":0,"type":"number"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"metric_kind":{"enum":["cumulative","rolling_window"],"type":"string"},"observed_daily_change":{"type":["number","null"]},"required_to_observed_ratio":{"description":"linear required_daily / observed_daily_change; null if observed not supplied or <= 0.","type":["number","null"]},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"scenarios":{"items":{"additionalProperties":false,"properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"computable":{"type":"boolean"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"name":{"description":"linear: shortfall divided by the caller-chosen days, (T - C) / N. Used for cumulative metrics and for rolling-window metrics. compound: constant daily % growth (cumulative metrics; not computable when current = 0). rolling_window_replacement remains in the enum and is not produced.","enum":["linear","compound","rolling_window_replacement"],"type":"string"},"not_computable_reason":{"type":["string","null"]},"required_daily":{"type":["number","null"]},"required_daily_growth_rate_pct":{"description":"compound scenario only","type":["number","null"]},"required_weekly":{"type":["number","null"]},"unit":{"type":"string"}},"required":["label","name","computable","required_daily","required_weekly","unit","formula","assumptions"],"type":"object"},"minItems":1,"type":"array"},"threshold":{"type":"number"},"window_days":{"type":["integer","null"]}},"required":["rule_id","metric","metric_kind","current","threshold","gap","scenarios"],"type":"object"},"type":"array"}},"required":["note","paces"],"type":["object","null"]},"paces":{"description":"Entry requirements only.","items":{"additionalProperties":false,"properties":{"already_met":{"type":"boolean"},"current":{"type":"number"},"gap":{"minimum":0,"type":"number"},"metric":{"enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","posts_per_month","active_posting_days_28d"],"type":"string"},"metric_kind":{"enum":["cumulative","rolling_window"],"type":"string"},"observed_daily_change":{"type":["number","null"]},"required_to_observed_ratio":{"description":"linear required_daily / observed_daily_change; null if observed not supplied or <= 0.","type":["number","null"]},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"scenarios":{"items":{"additionalProperties":false,"properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"computable":{"type":"boolean"},"formula":{"type":"string"},"label":{"const":"CALCULATION"},"name":{"description":"linear: shortfall divided by the caller-chosen days, (T - C) / N. Used for cumulative metrics and for rolling-window metrics. compound: constant daily % growth (cumulative metrics; not computable when current = 0). rolling_window_replacement remains in the enum and is not produced.","enum":["linear","compound","rolling_window_replacement"],"type":"string"},"not_computable_reason":{"type":["string","null"]},"required_daily":{"type":["number","null"]},"required_daily_growth_rate_pct":{"description":"compound scenario only","type":["number","null"]},"required_weekly":{"type":["number","null"]},"unit":{"type":"string"}},"required":["label","name","computable","required_daily","required_weekly","unit","formula","assumptions"],"type":"object"},"minItems":1,"type":"array"},"threshold":{"type":"number"},"window_days":{"type":["integer","null"]}},"required":["rule_id","metric","metric_kind","current","threshold","gap","scenarios"],"type":"object"},"type":"array"},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"projection_disclaimer":{"const":"Projections show the pace required under stated assumptions. They are not predictions of what will happen."},"recommendations":{"items":{"additionalProperties":false,"description":"RECOMMENDATION: our suggestion, never a Snap rule. Short and structured; the calling agent writes prose.","properties":{"assumptions":{"items":{"type":"string"},"minItems":1,"type":"array"},"label":{"const":"RECOMMENDATION"},"linked_rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"measurable_target":{"additionalProperties":false,"properties":{"by_date":{"format":"date","type":["string","null"]},"metric":{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},"unit":{"type":"string"},"value":{"type":"number"}},"required":["metric","value","unit"],"type":"object"},"objective":{"maxLength":200,"type":"string"},"order":{"description":"1 = address first (the binding constraint). An ordering, not a score.","minimum":1,"type":"integer"},"realism_note":{"description":"Plain statement when the math is unrealistic, e.g. 'Required pace is 20x your observed pace.'","type":["string","null"]},"reason":{"maxLength":300,"type":"string"},"risks":{"items":{"type":"string"},"type":"array"}},"required":["label","objective","reason","linked_rule_id","measurable_target","assumptions","risks"],"type":"object"},"type":"array"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"target_date":{"format":"date","type":"string"},"target_days":{"type":"integer"},"tool":{"const":"calculate_growth_pace"},"unknowns":{"items":{"additionalProperties":false,"description":"A requirement we could not evaluate, with the reason and what would resolve it.","properties":{"how_to_resolve":{"type":"string"},"missing_metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"reason":{"enum":["missing_input","rule_unverified","requires_user_confirmation","not_computable_from_metrics","rule_value_not_numeric"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","reason","how_to_resolve"],"type":"object"},"type":"array"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","program","already_enrolled","target_days","target_date","paces","ongoing_paces","projection_disclaimer","unknowns","facts","recommendations"],"title":"calculate_growth_pace output","type":"object"}before
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/check_eligibility.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"already_enrolled":{"type":"boolean"},"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"ongoing_requirements":{"additionalProperties":false,"description":"null unless already_enrolled=true.","properties":{"note":{"const":"Ongoing requirements apply only to creators already enrolled in the Monetization Program. Snap says the 100-hour Spotlight view-time requirement is needed to qualify for maximum Creator Rewards; Snap does not say that rewards stop below it."},"requirements":{"items":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"explanation":{"maxLength":300,"type":"string"},"input_value":{"type":["number","string","boolean","null"]},"label":{"const":"CALCULATION"},"metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"outcome":{"enum":["pass","fail","unknown","requires_user_confirmation","user_confirmed","user_denied"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_status":{"enum":["current","unverified"],"type":"string"},"rule_version":{"type":"integer"},"threshold":{"additionalProperties":false,"properties":{"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]}},"required":["value","unit"],"type":"object"}},"required":["label","rule_id","rule_version","claim","rule_status","outcome","threshold","input_value"],"type":"object"},"type":"array"}},"required":["note","requirements"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"requirements":{"items":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"explanation":{"maxLength":300,"type":"string"},"input_value":{"type":["number","string","boolean","null"]},"label":{"const":"CALCULATION"},"metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"outcome":{"enum":["pass","fail","unknown","requires_user_confirmation","user_confirmed","user_denied"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_status":{"enum":["current","unverified"],"type":"string"},"rule_version":{"type":"integer"},"threshold":{"additionalProperties":false,"properties":{"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]}},"required":["value","unit"],"type":"object"}},"required":["label","rule_id","rule_version","claim","rule_status","outcome","threshold","input_value"],"type":"object"},"type":"array"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"summary":{"additionalProperties":false,"allOf":[{"if":{"properties":{"published_criteria_status":{"const":"meets_published_criteria"}}},"then":{"properties":{"disclaimer":{"const":"Meets the published criteria; invitation to the Monetization Program is at Snap's discretion."}}}},{"if":{"properties":{"published_criteria_status":{"const":"does_not_meet_published_criteria"}}},"then":{"properties":{"disclaimer":{"const":"Does not meet the published criteria based on the inputs provided; invitation to the Monetization Program is at Snap's discretion."}}}},{"if":{"properties":{"published_criteria_status":{"const":"unknown"}}},"then":{"properties":{"disclaimer":{"const":"Cannot determine whether the published criteria are met from the inputs provided (some requirements are unknown or need the creator's confirmation); invitation to the Monetization Program is at Snap's discretion."}}}}],"description":"Entry requirements only. published_criteria_status rule: does_not_meet_published_criteria if any requirement is fail or user_denied; otherwise unknown if any is unknown or requires_user_confirmation; otherwise meets_published_criteria. There is deliberately no 'eligible' verdict.","properties":{"disclaimer":{"enum":["Meets the published criteria; invitation to the Monetization Program is at Snap's discretion.","Does not meet the published criteria based on the inputs provided; invitation to the Monetization Program is at Snap's discretion.","Cannot determine whether the published criteria are met from the inputs provided (some requirements are unknown or need the creator's confirmation); invitation to the Monetization Program is at Snap's discretion."],"type":"string"},"fail_count":{"minimum":0,"type":"integer"},"pass_count":{"minimum":0,"type":"integer"},"published_criteria_status":{"enum":["meets_published_criteria","does_not_meet_published_criteria","unknown"],"type":"string"},"requires_confirmation_count":{"minimum":0,"type":"integer"},"unknown_count":{"minimum":0,"type":"integer"}},"required":["published_criteria_status","disclaimer","pass_count","fail_count","unknown_count","requires_confirmation_count"],"type":"object"},"tool":{"const":"check_eligibility"},"unknowns":{"items":{"additionalProperties":false,"description":"A requirement we could not evaluate, with the reason and what would resolve it.","properties":{"how_to_resolve":{"type":"string"},"missing_metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"reason":{"enum":["missing_input","rule_unverified","requires_user_confirmation","not_computable_from_metrics","rule_value_not_numeric"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","reason","how_to_resolve"],"type":"object"},"type":"array"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","program","already_enrolled","summary","requirements","ongoing_requirements","unknowns","facts"],"title":"check_eligibility output","type":"object"}after
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/check_eligibility.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"already_enrolled":{"type":"boolean"},"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this rule's official source text unchanged. Omitted when no such check is recorded. Does not replace verified_at and is not a rule value.","format":"date-time","type":"string"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"ongoing_requirements":{"additionalProperties":false,"description":"null unless already_enrolled=true.","properties":{"note":{"const":"Ongoing requirements apply only to creators already enrolled in the Monetization Program. Snap says the 100-hour Spotlight view-time requirement is needed to qualify for maximum Creator Rewards; Snap does not say that rewards stop below it."},"requirements":{"items":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"explanation":{"maxLength":300,"type":"string"},"input_value":{"type":["number","string","boolean","null"]},"label":{"const":"CALCULATION"},"metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"outcome":{"enum":["pass","fail","unknown","requires_user_confirmation","user_confirmed","user_denied"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_status":{"enum":["current","unverified"],"type":"string"},"rule_version":{"type":"integer"},"threshold":{"additionalProperties":false,"properties":{"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]}},"required":["value","unit"],"type":"object"}},"required":["label","rule_id","rule_version","claim","rule_status","outcome","threshold","input_value"],"type":"object"},"type":"array"}},"required":["note","requirements"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"requirements":{"items":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"explanation":{"maxLength":300,"type":"string"},"input_value":{"type":["number","string","boolean","null"]},"label":{"const":"CALCULATION"},"metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"outcome":{"enum":["pass","fail","unknown","requires_user_confirmation","user_confirmed","user_denied"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_status":{"enum":["current","unverified"],"type":"string"},"rule_version":{"type":"integer"},"threshold":{"additionalProperties":false,"properties":{"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]}},"required":["value","unit"],"type":"object"}},"required":["label","rule_id","rule_version","claim","rule_status","outcome","threshold","input_value"],"type":"object"},"type":"array"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"summary":{"additionalProperties":false,"allOf":[{"if":{"properties":{"published_criteria_status":{"const":"meets_published_criteria"}}},"then":{"properties":{"disclaimer":{"const":"Meets the published criteria; invitation to the Monetization Program is at Snap's discretion."}}}},{"if":{"properties":{"published_criteria_status":{"const":"does_not_meet_published_criteria"}}},"then":{"properties":{"disclaimer":{"const":"Does not meet the published criteria based on the inputs provided; invitation to the Monetization Program is at Snap's discretion."}}}},{"if":{"properties":{"published_criteria_status":{"const":"unknown"}}},"then":{"properties":{"disclaimer":{"const":"Cannot determine whether the published criteria are met from the inputs provided (some requirements are unknown or need the creator's confirmation); invitation to the Monetization Program is at Snap's discretion."}}}}],"description":"Entry requirements only. published_criteria_status rule: does_not_meet_published_criteria if any requirement is fail or user_denied; otherwise unknown if any is unknown or requires_user_confirmation; otherwise meets_published_criteria. There is deliberately no 'eligible' verdict.","properties":{"disclaimer":{"enum":["Meets the published criteria; invitation to the Monetization Program is at Snap's discretion.","Does not meet the published criteria based on the inputs provided; invitation to the Monetization Program is at Snap's discretion.","Cannot determine whether the published criteria are met from the inputs provided (some requirements are unknown or need the creator's confirmation); invitation to the Monetization Program is at Snap's discretion."],"type":"string"},"fail_count":{"minimum":0,"type":"integer"},"pass_count":{"minimum":0,"type":"integer"},"published_criteria_status":{"enum":["meets_published_criteria","does_not_meet_published_criteria","unknown"],"type":"string"},"requires_confirmation_count":{"minimum":0,"type":"integer"},"unknown_count":{"minimum":0,"type":"integer"}},"required":["published_criteria_status","disclaimer","pass_count","fail_count","unknown_count","requires_confirmation_count"],"type":"object"},"tool":{"const":"check_eligibility"},"unknowns":{"items":{"additionalProperties":false,"description":"A requirement we could not evaluate, with the reason and what would resolve it.","properties":{"how_to_resolve":{"type":"string"},"missing_metric":{"anyOf":[{"description":"Closed vocabulary of creator metrics the engines understand.","enum":["followers","view_time_hours_28d","spotlight_view_time_hours_28d","meets_age_requirement","country","is_snap_star","posts_per_month","active_posting_days_28d"],"type":"string"},{"type":"null"}]},"reason":{"enum":["missing_input","rule_unverified","requires_user_confirmation","not_computable_from_metrics","rule_value_not_numeric"],"type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["rule_id","reason","how_to_resolve"],"type":"object"},"type":"array"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","program","already_enrolled","summary","requirements","ongoing_requirements","unknowns","facts"],"title":"check_eligibility output","type":"object"}before
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/get_monetization_requirements.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"api_version":{"const":"v1"},"catalog_scope":{"additionalProperties":false,"description":"Counts computed from the approved rules database for one as-of date. mvp_in_force is the default requirements list. in_force_including_out_of_scope adds programs stored as out of scope. mvp_including_historical is every in-scope record, which is what the rule-change log lists.","properties":{"approved_total":{"minimum":0,"type":"integer"},"in_force_including_out_of_scope":{"minimum":0,"type":"integer"},"mvp_in_force":{"minimum":0,"type":"integer"},"mvp_including_historical":{"minimum":0,"type":"integer"},"out_of_scope_programs":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"}},"required":["mvp_in_force","in_force_including_out_of_scope","mvp_including_historical","approved_total","out_of_scope_programs","summary"],"type":"object"},"country_eligibility":{"items":{"additionalProperties":false,"properties":{"country":{"type":"string"},"listed":{"type":["boolean","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["program","country","listed","rule_id"],"type":"object"},"type":["array","null"]},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"direct_answer":{"description":"Answer-first lead built from entry-requirement facts included in this response. Omitted when those facts are absent.","type":"string"},"direct_answer_note":{"description":"Optional sentence after the lead for unverified entry facts left out of it. Omitted when there are none.","type":"string"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"programs":{"items":{"additionalProperties":false,"properties":{"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"program_status":{"enum":["active","historical","unknown"],"type":"string"},"rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["program","program_status","rule_ids"],"type":"object"},"type":"array"},"query":{"additionalProperties":true,"description":"Echo of the effective filters.","type":"object"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"const":"get_monetization_requirements"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","programs","facts"],"title":"get_monetization_requirements output","type":"object"}after
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/get_monetization_requirements.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"api_version":{"const":"v1"},"catalog_scope":{"additionalProperties":false,"description":"Counts computed from the approved rules database for one as-of date. mvp_in_force is the default requirements list. in_force_including_out_of_scope adds programs stored as out of scope. mvp_including_historical is every in-scope record, which is what the rule-change log lists.","properties":{"approved_total":{"minimum":0,"type":"integer"},"in_force_including_out_of_scope":{"minimum":0,"type":"integer"},"mvp_in_force":{"minimum":0,"type":"integer"},"mvp_including_historical":{"minimum":0,"type":"integer"},"out_of_scope_programs":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"}},"required":["mvp_in_force","in_force_including_out_of_scope","mvp_including_historical","approved_total","out_of_scope_programs","summary"],"type":"object"},"country_eligibility":{"items":{"additionalProperties":false,"properties":{"country":{"type":"string"},"listed":{"type":["boolean","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"}},"required":["program","country","listed","rule_id"],"type":"object"},"type":["array","null"]},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"direct_answer":{"description":"Answer-first lead built from entry-requirement facts included in this response. Omitted when those facts are absent.","type":"string"},"direct_answer_note":{"description":"Optional sentence after the lead for unverified entry facts left out of it. Omitted when there are none.","type":"string"},"facts":{"items":{"additionalProperties":false,"description":"FACT: a rule record as stored in the versioned rules database (approved records only).","properties":{"applies_to":{"enum":["entry","enrolled_creators","all","not_applicable"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"claim":{"type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"iso_countries":{"description":"ISO 3166-1 codes for each name in a country list, from the reviewed country map. Omitted unless this fact is a country list.","items":{"additionalProperties":false,"properties":{"alpha2":{"type":"string"},"alpha3":{"type":"string"},"numeric":{"type":"string"},"snap_name":{"type":"string"}},"required":["snap_name","alpha2","alpha3","numeric"],"type":"object"},"type":"array"},"label":{"const":"FACT"},"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this rule's official source text unchanged. Omitted when no such check is recorded. Does not replace verified_at and is not a rule value.","format":"date-time","type":"string"},"metric":{"type":["string","null"]},"mvp_scope":{"enum":["in_scope","out_of_scope"],"type":"string"},"notes":{"type":"string"},"operator":{"enum":["gte","gt","lte","lt","eq","in","is_true",null],"type":["string","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"publisher":{"type":"string"},"related_rule_ids":{"items":{"type":"string"},"type":"array"},"requirement_phase":{"enum":["entry","ongoing","entry_and_ongoing","not_applicable"],"type":"string"},"requires_user_confirmation":{"type":"boolean"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"rule_type":{"description":"Role of the rule, copied from the rules database. Omitted by older clients. Used to group answer pages.","enum":["eligibility_threshold","eligibility_condition","ongoing_condition","payout_term","tax_term","content_policy","program_fact","program_status","supplementary_note",null],"type":["string","null"]},"source_url":{"format":"uri","type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"supersedes":{"type":["string","null"]},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"minimum":1,"type":"integer"},"window_days":{"type":["integer","null"]}},"required":["label","rule_id","version","program","claim","value","unit","status","source_url","publisher","verified_at","effective_date","requires_user_confirmation","applies_to","requirement_phase","mvp_scope","notes"],"type":"object"},"type":"array"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"programs":{"items":{"additionalProperties":false,"properties":{"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"program_status":{"enum":["active","historical","unknown"],"type":"string"},"rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["program","program_status","rule_ids"],"type":"object"},"type":"array"},"query":{"additionalProperties":true,"description":"Echo of the effective filters.","type":"object"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"const":"get_monetization_requirements"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","programs","facts"],"title":"get_monetization_requirements output","type":"object"}before
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/get_rule_changes.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"api_version":{"const":"v1"},"baseline":{"description":"Initial-load records. Present only when include_baseline is true. Never included in changes or in change counts.","items":{"additionalProperties":false,"properties":{"change_type":{"const":"baseline"},"changed_after":{"format":"date","type":["string","null"]},"changed_before":{"format":"date","type":["string","null"]},"current":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"date_confidence":{"description":"stated_by_snap, bounded_by_archives, or unknown. Null on records that predate the field.","enum":["stated_by_snap","bounded_by_archives","unknown",null],"type":["string","null"]},"date_display":{"description":"Rendered public date line: Snap's date, an archive window with evidence URLs, or unknown, plus the day first recorded by us.","type":"string"},"date_note":{"type":["string","null"]},"detected_at":{"format":"date","type":"string"},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"effective_month":{"pattern":"^[0-9]{4}-[0-9]{2}$","type":["string","null"]},"evidence_urls":{"description":"Wayback captures or Snap URLs that support the date. Empty when there are none.","items":{"format":"uri","type":"string"},"type":"array"},"first_recorded_by_us":{"description":"Day this project first recorded the change. Null when the record has no such date. Not Snap's date.","format":"date","type":["string","null"]},"label":{"const":"FACT"},"notes":{"type":"string"},"previous":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"snap_announced_date":{"description":"Day Snap announced the rule. Null when Snap did not state an announcement day.","format":"date","type":["string","null"]},"snap_effective_date":{"description":"Day Snap stated the rule took effect. Null when Snap did not state one.","format":"date","type":["string","null"]},"source_url":{"format":"uri","type":"string"}},"required":["label","rule_id","program","change_type","previous","current","source_url","detected_at","effective_date"],"type":"object"},"type":"array"},"catalog_scope":{"additionalProperties":false,"description":"Counts computed from the approved rules database for one as-of date. mvp_in_force is the default requirements list. in_force_including_out_of_scope adds programs stored as out of scope. mvp_including_historical is every in-scope record, which is what the rule-change log lists.","properties":{"approved_total":{"minimum":0,"type":"integer"},"in_force_including_out_of_scope":{"minimum":0,"type":"integer"},"mvp_in_force":{"minimum":0,"type":"integer"},"mvp_including_historical":{"minimum":0,"type":"integer"},"out_of_scope_programs":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"}},"required":["mvp_in_force","in_force_including_out_of_scope","mvp_including_historical","approved_total","out_of_scope_programs","summary"],"type":"object"},"changes":{"items":{"additionalProperties":false,"properties":{"change_type":{"description":"How this record differs from the approved record it supersedes, or the type on an explicit change block. Baseline records are returned only in baseline.","enum":["added","value_changed","status_changed","retired","source_changed","baseline"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"current":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"date_confidence":{"description":"stated_by_snap, bounded_by_archives, or unknown. Null on records that predate the field.","enum":["stated_by_snap","bounded_by_archives","unknown",null],"type":["string","null"]},"date_display":{"description":"Rendered public date line: Snap's date, an archive window with evidence URLs, or unknown, plus the day first recorded by us.","type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"detected_at":{"format":"date","type":"string"},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"effective_month":{"description":"Month-only announcement when Snap did not publish a day, YYYY-MM. Null when the change has a day or no month.","pattern":"^[0-9]{4}-[0-9]{2}$","type":["string","null"]},"evidence_urls":{"description":"Wayback captures or Snap URLs that support the date. Empty when there are none.","items":{"format":"uri","type":"string"},"type":"array"},"first_recorded_by_us":{"description":"Day this project first recorded the change. Null when the record has no such date. Not Snap's date.","format":"date","type":["string","null"]},"label":{"const":"FACT"},"notes":{"type":"string"},"previous":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"snap_announced_date":{"description":"Day Snap announced the rule. Null when Snap did not state an announcement day.","format":"date","type":["string","null"]},"snap_effective_date":{"description":"Day Snap stated the rule took effect. Null when Snap did not state one.","format":"date","type":["string","null"]},"source_url":{"format":"uri","type":"string"}},"required":["label","rule_id","program","change_type","previous","current","source_url","detected_at","effective_date"],"type":"object"},"type":"array"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; rules not re-verified within 7 days are listed as stale.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose verified_at is older than the staleness window stated in `policy`.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"next_cursor":{"type":["string","null"]},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"query":{"additionalProperties":false,"description":"Filters applied to this response, including defaults. Top-level since and until stay for older clients.","properties":{"cursor":{"type":["string","null"]},"include_baseline":{"type":"boolean"},"limit":{"type":"integer"},"program":{"type":["string","null"]},"since":{"format":"date","type":"string"},"until":{"format":"date","type":"string"}},"required":["since","until","program","limit","include_baseline","cursor"],"type":"object"},"since":{"format":"date","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"const":"get_rule_changes"},"until":{"format":"date","type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","since","until","query","changes","next_cursor"],"title":"get_rule_changes output","type":"object"}after
{"$id":"https://howtomakemoneyonsnapchat.com/schemas/v1/get_rule_changes.output.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"description":"Fields present in every successful tool output.","properties":{"api_version":{"const":"v1"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness"],"type":"object"}],"properties":{"api_version":{"const":"v1"},"baseline":{"description":"Initial-load records. Present only when include_baseline is true. Never included in changes or in change counts.","items":{"additionalProperties":false,"properties":{"change_type":{"const":"baseline"},"changed_after":{"format":"date","type":["string","null"]},"changed_before":{"format":"date","type":["string","null"]},"current":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"date_confidence":{"description":"stated_by_snap, bounded_by_archives, or unknown. Null on records that predate the field.","enum":["stated_by_snap","bounded_by_archives","unknown",null],"type":["string","null"]},"date_display":{"description":"Rendered public date line: Snap's date, an archive window with evidence URLs, or unknown, plus the day first recorded by us.","type":"string"},"date_note":{"type":["string","null"]},"detected_at":{"format":"date","type":"string"},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"effective_month":{"pattern":"^[0-9]{4}-[0-9]{2}$","type":["string","null"]},"evidence_urls":{"description":"Wayback captures or Snap URLs that support the date. Empty when there are none.","items":{"format":"uri","type":"string"},"type":"array"},"first_recorded_by_us":{"description":"Day this project first recorded the change. Null when the record has no such date. Not Snap's date.","format":"date","type":["string","null"]},"label":{"const":"FACT"},"notes":{"type":"string"},"previous":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"snap_announced_date":{"description":"Day Snap announced the rule. Null when Snap did not state an announcement day.","format":"date","type":["string","null"]},"snap_effective_date":{"description":"Day Snap stated the rule took effect. Null when Snap did not state one.","format":"date","type":["string","null"]},"source_url":{"format":"uri","type":"string"}},"required":["label","rule_id","program","change_type","previous","current","source_url","detected_at","effective_date"],"type":"object"},"type":"array"},"catalog_scope":{"additionalProperties":false,"description":"Counts computed from the approved rules database for one as-of date. mvp_in_force is the default requirements list. in_force_including_out_of_scope adds programs stored as out of scope. mvp_including_historical is every in-scope record, which is what the rule-change log lists.","properties":{"approved_total":{"minimum":0,"type":"integer"},"in_force_including_out_of_scope":{"minimum":0,"type":"integer"},"mvp_in_force":{"minimum":0,"type":"integer"},"mvp_including_historical":{"minimum":0,"type":"integer"},"out_of_scope_programs":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"}},"required":["mvp_in_force","in_force_including_out_of_scope","mvp_including_historical","approved_total","out_of_scope_programs","summary"],"type":"object"},"changes":{"items":{"additionalProperties":false,"properties":{"change_type":{"description":"How this record differs from the approved record it supersedes, or the type on an explicit change block. Baseline records are returned only in baseline.","enum":["added","value_changed","status_changed","retired","source_changed","baseline"],"type":"string"},"changed_after":{"description":"Inclusive start of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"changed_before":{"description":"Inclusive end of an observed change window when the source does not state a single effective_date. Null when unknown. Additive.","format":"date","type":["string","null"]},"current":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"date_confidence":{"description":"stated_by_snap, bounded_by_archives, or unknown. Null on records that predate the field.","enum":["stated_by_snap","bounded_by_archives","unknown",null],"type":["string","null"]},"date_display":{"description":"Rendered public date line: Snap's date, an archive window with evidence URLs, or unknown, plus the day first recorded by us.","type":"string"},"date_note":{"description":"How changed_after and changed_before were established. Null when there is no window note. Not a substitute for source_url.","type":["string","null"]},"detected_at":{"format":"date","type":"string"},"effective_date":{"format":"date","type":["string","null"]},"effective_date_note":{"const":"not published by Snap","description":"Present when effective_date is null because Snap did not publish a date. effective_date stays null."},"effective_month":{"description":"Month-only announcement when Snap did not publish a day, YYYY-MM. Null when the change has a day or no month.","pattern":"^[0-9]{4}-[0-9]{2}$","type":["string","null"]},"evidence_urls":{"description":"Wayback captures or Snap URLs that support the date. Empty when there are none.","items":{"format":"uri","type":"string"},"type":"array"},"first_recorded_by_us":{"description":"Day this project first recorded the change. Null when the record has no such date. Not Snap's date.","format":"date","type":["string","null"]},"label":{"const":"FACT"},"notes":{"type":"string"},"previous":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"status":{"enum":["current","historical","unverified"],"type":"string"},"unit":{"type":"string"},"value":{"anyOf":[{"type":["number","string","boolean","null"]},{"items":{"type":"string"},"type":"array"}]},"verified_at":{"format":"date","type":"string"},"version":{"type":"integer"}},"required":["version","value","unit","status","verified_at"],"type":["object","null"]},"program":{"description":"Program identifier. Validated at runtime against programs present in the rules database; unknown values return UNKNOWN_PROGRAM. Examples: unified_monetization_program, snap_star, creator_subscriptions, brand_partnerships, payouts, tax, recommendation_eligibility, creator_monetization_policy, public_profile, lens_creator_rewards.","pattern":"^[a-z0-9_]{2,64}$","type":"string"},"rule_id":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"snap_announced_date":{"description":"Day Snap announced the rule. Null when Snap did not state an announcement day.","format":"date","type":["string","null"]},"snap_effective_date":{"description":"Day Snap stated the rule took effect. Null when Snap did not state one.","format":"date","type":["string","null"]},"source_url":{"format":"uri","type":"string"}},"required":["label","rule_id","program","change_type","previous","current","source_url","detected_at","effective_date"],"type":"object"},"type":"array"},"data_freshness":{"additionalProperties":false,"properties":{"generated_at":{"format":"date-time","type":"string"},"newest_last_checked_at":{"description":"Latest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace newest_verified_at.","format":"date-time","type":"string"},"newest_verified_at":{"format":"date","type":["string","null"]},"oldest_last_checked_at":{"description":"Earliest last_checked_at among rules in this response. Omitted when none of those rules have an unchanged-source check. Does not replace oldest_verified_at.","format":"date-time","type":"string"},"oldest_verified_at":{"format":"date","type":["string","null"]},"policy":{"description":"Human-readable freshness policy, e.g. 'Sources are re-checked daily; a rule is listed as stale when the later of verified_at and last_checked_at is more than 7 days before the response date.'","type":"string"},"rules_db_version":{"description":"Monotonic version of the published rules set. Pattern YYYY-MM-DD.n","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.[0-9]+$","type":"string"},"stale_rule_ids":{"description":"Rules in this response whose later of verified_at and last_checked_at is older than the staleness window stated in `policy`. A missing last_checked_at does not count.","items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"}},"required":["rules_db_version","generated_at","oldest_verified_at","newest_verified_at","stale_rule_ids","policy"],"type":"object"},"generated_at":{"format":"date-time","type":"string"},"next_cursor":{"type":["string","null"]},"notice":{"const":"HowToMakeMoneyOnSnapchat.com is an independent third party and is not affiliated with, endorsed by, or sponsored by Snap Inc. Snapchat is a trademark of Snap Inc.","description":"Non-affiliation notice included in every response.","type":"string"},"query":{"additionalProperties":false,"description":"Filters applied to this response, including defaults. Top-level since and until stay for older clients.","properties":{"cursor":{"type":["string","null"]},"include_baseline":{"type":"boolean"},"limit":{"type":"integer"},"program":{"type":["string","null"]},"since":{"format":"date","type":"string"},"until":{"format":"date","type":"string"}},"required":["since","until","program","limit","include_baseline","cursor"],"type":"object"},"since":{"format":"date","type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"last_checked_at":{"description":"ISO-8601 timestamp of the latest automated check that found this source's official text unchanged. Omitted when no such check is recorded. Does not replace verified_at.","format":"date-time","type":"string"},"publisher":{"type":"string"},"supports_rule_ids":{"items":{"maxLength":120,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"type":"array"},"title":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"verified_at":{"format":"date","type":"string"}},"required":["url","publisher","verified_at","supports_rule_ids"],"type":"object"},"type":"array"},"tool":{"const":"get_rule_changes"},"until":{"format":"date","type":"string"},"warnings":{"description":"Plain strings. Omitted when empty. Calculation tools add a string when followers is 0 and view_time_hours_28d or spotlight_view_time_hours_28d is above 0, and when view_time_hours_28d exceeds 28 days × 24 hours × followers × 0.5. Those warnings say the figure is unusually high for your follower count, please check for a typo, and that view time can come from non-followers. They are never an error. FACT GET aliases append ignored query parameter notices to this same array. Spotlight hours above total view hours are HTTP 400 VALUE_INCONSISTENT rather than a warning.","items":{"type":"string"},"type":"array"}},"required":["tool","api_version","notice","generated_at","sources","data_freshness","since","until","query","changes","next_cursor"],"title":"get_rule_changes output","type":"object"}