data.status field indicates the outcome of the request:
| Status | Meaning | When This Occurs | Billable | Input Type |
|---|---|---|---|---|
"filled" | All requested offers were filled | returned == requested | Yes | All |
"partial_fill" | Some offers filled (multi-offer mode) | 0 < returned < requested | Yes | All |
"no_offer" | No affiliate offer available | Couldn’t match a keyword to an affiliate URL | Yes | All |
"message_too_short" | Message below minimum word count | Fewer than 10 words after sanitization | No | Text only |
"message_too_long" | Message above maximum character count | Over 10,000 characters | No | Text, Image URL |
"country_not_allowed" | Country is not ‘US’ (ChatAds is US-only currently) | You passed country parameter with any value that isn’t ‘US’ | No | All |
"blocked_keyword" | Blocked keyword detected | Message contains keyword you added to Rules | No | Text only |
"language_not_allowed" | Language is not ‘en’ (ChatAds is English-only currently) | ChatAds’s language detection identifies text as non-English | No | Text only |
"ip_country_not_allowed" | Passed IPv4 is not US | You passed ip and it resolved to non-US location | No | All |
The
offers array only contains offers with URLs. If the array is empty, check the status field to understand why no offers were returned.