Documentation
How to turn a product catalog into a live API, and how to call that API from your own systems. Start with the picture below if you'd rather see the shape of it before reading the details.
Getting started
- Create an account: register with a company name, email, and password (or continue with Google). You land on the Starter plan with a 30-day free trial, pre-loaded with a sample product feed so there's something real to explore right away.
- Create a product feed: a feed is just a named catalog. Add products by hand, import a CSV/XLSX file, or connect your own database.
- Configure the API: on the feed's API Config tab, choose which fields callers can search by, what counts as a "group," and what comes back in a response.
- Generate an API key: Query for read-only access, Query & Booking to also record sales, or Manage for full read/write access. The raw key is shown once at creation, so save it somewhere safe.
- Call the API: use the branded URL (
/feeds/your-company/your-feed/products) shown on the feed's API Integration tab, or the generic/api/v1/...equivalent.
Team access
Everyone on your team signs in at the same login you do - there's no separate portal to stand up. From the Account page's Team section, add a teammate with their own email and password and give them one of three roles:
| Role | Can do | Can't do |
|---|---|---|
| Owner | Everything - exactly one per account, whoever registered it | - |
| Admin | Everything except billing and deleting the account, including adding or removing Member teammates | Touch billing, delete the account, or manage another Admin |
| Member | Day-to-day catalog work - products, imports, bookings, consumers, feed health | Create or reveal API keys, configure database sync credentials, or touch billing |
A role change or removal takes effect immediately, even for a teammate already signed in elsewhere - their very next request picks it up rather than waiting for their session to expire. Removing a teammate deletes their login only, not their history: anything they created stays exactly where it is.
What to give a consumer
Feedwyre has five ways to reach a feed. Which one to hand a particular consumer depends on what they need to do and what they're equipped to integrate - not on how technical you are, but on how technical they are. A single feed can serve every option at once, to different consumers, at the same time.
| They need to | Give them | Set it up from |
|---|---|---|
| Look up products and record sales from their own app or storefront | A Query & Booking API key | The feed's API Keys tab |
| Only look products up, and never book a sale | A Query-only API key | The feed's API Keys tab |
| Resell your catalog at their own markup | A child feed with margin rules, then a key or link on that child feed | The Child Feeds tab |
| Open your catalog in a spreadsheet or import tool, no code at all | A download link (CSV, XLSX, or JSON) | The feed's Download Links tab |
| Place their own orders with no developer and no file to manage | A consumer portal login | The Consumers tab |
| Book from one shared inventory list across several branches or employees | A consumer portal login per branch, all on the same feed | The Consumers tab |
| Add, edit, or bulk-update the catalog itself | A Manage API key, or just the dashboard directly | The feed's API Keys tab |
None of these are mutually exclusive - a single child feed, say, can hand one partner an API key and another partner a download link, or a portal login, off the exact same margin-adjusted catalog. See the case studies for each of these worked through end to end, with a diagram.
Core concepts
Feeds & products
A product feed is a catalog. Most tenants only need one, but you can have several (one per brand or region, say). Each feed has its own products, its own API settings, and its own API keys. A product carries the usual fields (code, name, price, stock, images, and more) plus any custom attributes you add for that feed.
API configuration
Four simple settings, per feed, control how the Query API behaves and what an import expects:
| Setting | Controls |
|---|---|
AcceptedInputFields | Which single field a caller can look one product up by - has to be unique per product, e.g. SKU or barcode |
GroupFields | Which fields define a "group" for listing many products at once - category or brand, say |
OutputFields | Exactly which fields come back in every API response |
RequiredFields | Which fields must have a value before an imported or synced row is accepted |
The Query API
This is read-only, so it's safe to share widely, and it works with any key type: Query, Query & Booking, or Manage. There's one endpoint - what you put in the URL decides which of the three ways below you get.
Look up a single product
List a group
List everything in the feed
Every call counts against your plan's monthly query allowance. Going over it is billed at your plan's overage rate rather than blocked - your integration keeps working either way.
Download links
Not everyone who needs your product feed wants to integrate an API. Sometimes the simplest answer for a partner is a link they can drop straight into their own spreadsheet, POS, or import tool. A download link is a standing CSV, XLSX, or JSON URL that serves a feed's current data - no API key, no code, and it doesn't count against your query allowance.
Each feed gets one general link, plus as many per-consumer links as you want. Every one of them can be revoked on its own, without touching the others. On a child feed, a download link serves that child's own margin-adjusted prices, exactly like its API keys do. Give one partner an API key and another a download link off the same child feed, and both see the same marked-up numbers - just delivered in a different way.
How to set one up
- Open the Download Links tab on the feed you want to share.
- Create a link, optionally scoped to one consumer so it can be revoked without touching any other link.
- Pick a format when you use it - the same link serves CSV, XLSX, or JSON; the format is just a query parameter.
- Share the link. There's nothing to install or configure on their end.
A download link is a read-only snapshot - it can't book a sale. Give a consumer an API key too if they also need to record sales or write back to a feed.
The Manage API
This needs a Manage-scope key, the only tier that can actually edit the catalog. You can create products, update them, delete them, or bulk-update just price and stock without resending everything else about a product.
Create or update a product
Bulk-update price & stock only
Consumers & bookings
A consumer is a buyer you register to book sales against: a storefront, a marketplace, or a specific partner. It applies across your whole account, not just one product feed. Booking a sale decrements stock atomically - the "is there enough left" check and the actual decrement happen as one step, so two sales racing for the last unit can never both win.
This needs at least a Query & Booking-scope key (a Manage key works too). It's the right fit for a storefront or order system that needs to report sales but shouldn't be able to edit the catalog itself.
Book a sale
referenceNumber is required and must be unique across every booking you've ever made - sending the same reference twice (say, a network retry) is rejected outright instead of quietly booking the same sale again. address and contactDetails are optional free-text - a delivery address and contact info for this specific order - stored on the booking but never validated or looked up against anything.
Consumer portal - no integration at all
A consumer doesn't even need an API key or a spreadsheet. From the Consumers tab, set up a login and choose which of your product feeds they can see. They get a link to their own portal on Feedwyre, sign in there with an email and password, browse the catalog and prices you've granted them, and book straight against your stock using the same atomic booking described above. Revoking the login later doesn't touch their booking history or anyone else's access.
How to set one up
- Open the Consumers tab and create or select the consumer this login belongs to.
- Set a password for their portal login - Feedwyre doesn't send email invites, so you set it directly and share it however you'd share any other credential.
- Choose which feeds they're allowed to see; one consumer can be granted access to more than one.
- Share their portal link. They sign in to Feedwyre there, browse, and book - no key, no file, no code.
This is also the right fit internally, not just for outside partners: give each branch or team of a multi-location business its own consumer and login, all pointed at the same feed, and they book against one real shared stock count instead of guessing what another location has on hand.
Database sync
On Business plan and above, you can point a product feed straight at your own SQL Server, MySQL, or PostgreSQL database. Give it a read-only query and a column mapping, and Feedwyre pulls in fresh rows on a schedule - anywhere from every 15 minutes to once a day. Sync only ever adds or updates; it will never delete a product, even if a query briefly returns fewer rows than expected. It also refuses to sync from an internal network address, as a safety check.
Child feeds & margin
Turn any product feed into a parent and create child feeds under it to resell the same catalog to a different audience at a different price. This comes with every plan, even the free trial. A child feed reads the parent's products live (nothing is duplicated) and applies your margin rules - a flat percentage or fixed amount, with an option to override it per category - before handing the products back. Your own channels don't need a child feed at all - they call the parent directly, at cost.
The example below is one catalog serving seven different consumers at once: your own store and mobile app read the parent directly, while three child feeds each apply a different margin and hand their customers a different way in - an API key, a download link, or a consumer portal login.
Stripped down to its simplest form, that's just one parent feeding one child feed, which hands one partner a single number:
How to set one up
- Create a child feed and point it at the parent whose catalog you want to resell.
- Add margin rules on the child feed's Margin Rules tab - a flat percentage or fixed amount, with per-category overrides where you need them.
- Check the Product List tab to see the parent's products priced exactly as this child feed's rules will show them, before you hand anyone a key.
- Generate a key or link on the child feed itself, never the parent - an API key, a download link, or a consumer portal login all work.
- Repeat per partner. Each child feed has its own margin, its own keys, and its own consumers, all reading the same live parent catalog.
A child feed has its own API keys, consumers, and download links, but no write access of its own - all product management happens on the parent. Child feeds count toward your plan's total feed limit, right alongside parent feeds.
Each plan also caps how many margin rules a single child feed can hold, from 10 on Starter up to 200 on Scale, with no limit on Enterprise. The feed's Margin Rules tab shows the exact number you're allowed and how many you're currently using, and stops you from adding more once you hit it.
Errors & status codes
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Invalid request - a missing field, a duplicate reference number, or not enough stock to book |
| 401 | Missing, invalid, or revoked API key |
| 403 | Your account is suspended, or your plan doesn't include this capability |
| 404 | No product matches the field/value you gave |
Rate & usage limits
Each plan includes a monthly query allowance (see pricing) - go over it and calls get billed per 1,000 instead of blocked. Product feeds, products, custom attributes, and API keys each have their own per-plan ceiling, and you can check your current usage against each one on the Account page. Your feed ceiling counts parent and child feeds together.