# UpWolf > UpWolf turns a portal's listings into ad creative and live Meta campaigns, then pauses them > when the listing is filled. Portals integrate by exposing a small read-only JSON feed. ## Feed contract (start here) - [Full contract in one file](https://upwolf.com/dev/feed.md): conventions, endpoints, fields, degradation table - [OpenAPI 3.1](https://upwolf.com/dev/openapi.json): machine-readable specification of the feed a portal implements - [JSON Schema — offer detail](https://upwolf.com/dev/schema/Offer.json): the resource with the most fields - [Reference implementation in PHP](https://upwolf.com/assets/dev/reference-feed.php.txt): single file, no dependencies ## Try it - [Sandbox feed](https://upwolf.com/dev/sandbox/feed): a working feed that satisfies the contract; token `sandbox-demo-token` - [Validator](https://upwolf.com/dev/validator): point it at a feed URL, get back what works and what degrades ## Notes for implementers - 404 means "not implemented yet" and is a valid answer — the contract ships in stages. - Every optional field has a documented consequence; there is no field that is merely nice to have. - Cancellation is always explicit (`status: "cancelled"`), never expressed by an item disappearing.