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 7-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. See adding products to a feed below for every way to fill it - by hand, spreadsheet import, database sync, or a scheduled FTP/SFTP pull.
- 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.
Your account & team
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.
Consumers
A consumer is a buyer you register to reach and sell to - a storefront, a marketplace, or a specific business partner. A consumer applies account-wide, not to just one feed: the same consumer can be granted access to several feeds, book sales against any of them, and receive a download link, a scheduled transfer, or a consumer portal login for whichever ones you choose.
How to add one
- Open the Consumers tab and create a consumer with a code and name - the code is how you'll refer to them elsewhere, like in a booking call.
- Add an email if they'll receive scheduled transfers by email, or set up an FTP/SFTP/FTPS transfer connection from their own row if they'll receive transfers that way instead.
- Grant feed access if they'll have a consumer portal login, or generate an API key scoped to them if they'll book through their own systems.
None of this is exclusive to outside partners - it's just as much the right fit internally: give each branch or team of a multi-location business its own consumer, and they book against one real shared stock count instead of guessing what another location has on hand.
Core concepts
Feeds & products
A product feed is a catalog. Most accounts 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 |
Adding products to a feed
There's no single required way to get products into a feed - pick whichever fits how your catalog already lives today, and mix methods freely on the same feed. A manual edit, a spreadsheet import, a database sync, and a scheduled FTP/SFTP pull can all touch the same feed without conflicting.
Manually, or from a spreadsheet
Add a single product directly from the dashboard's Add Product tab - the right fit for a one-off addition or a quick edit. For everything else, use the Import tab: upload a CSV or Excel file, map its columns to product fields (auto-suggested from your file's own header row), then choose Merge (only touch the columns you mapped, leave everything else - and every other product - alone) or Replace (the file becomes the feed's entire new state; anything not in it gets removed). You'll see it happen live, with a clear reason for any row that doesn't make it in.
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.
Scheduled import (FTP/SFTP/FTPS)
No database to connect to? If your own system can just drop a file somewhere, that's enough. From a feed's Scheduled Import tab, give Feedwyre a host, username, and password for your FTP, SFTP, or FTPS server, the exact filename it writes there (only .csv or .xlsx), an import mode, and a column mapping - then pick which hours of the day it should check. Feedwyre connects, downloads that file, and imports it exactly like a manual upload would, on every plan.
Test connection fetches the real file right away and shows you its columns so you can set up the mapping before saving, rather than guessing. Run now triggers an immediate import outside the schedule, with the same live progress view as a manual upload. Same rules as the manual import: Merge only touches rows that appear in the file, matched by product code; Replace treats the file as the feed's entire new state, and rejects the whole import if any row fails validation.
The hours you can select share the same daily allowance as scheduled transfers, counted separately - a plan that allows 3 scheduled-transfer sends a day also allows 3 scheduled-import checks a day, independently of each other.
The feed's Scheduled Import tab also shows an import log - every scheduled run, its status, and how many rows were processed or failed, kept for 7 days, the same window scheduled transfer's own delivery log uses.
Exporting & reaching your products
Once products are in a feed, there are just as many ways to get them back out again - some built for a caller who integrates your API directly, others for a partner who'd rather not integrate anything at all.
What to give a consumer - the short version
Feedwyre has six 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 |
| Get a fresh export delivered on a recurring schedule, no code or manual download | A scheduled transfer (CSV, XLSX, or JSON) by email, SFTP/FTP/FTPS, or both | The feed's Scheduled Transfer 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 |
Handing out an API key is only half the job - whoever's building against it needs the connection details too. Each key's row in the API Keys tab has an Instructions link that downloads a ready-to-share PDF: the feed URL, the header format, and working curl examples for that key's scope. It deliberately never includes the key value itself, so it's safe to email or forward on its own - send it alongside the key, not instead of it.
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.
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. On Growth and up, going over it is billed at your plan's overage rate rather than blocked, so your integration keeps working either way. The free Starter plan has no overage rate, so calls are refused with a 429 once you hit your monthly allowance until it resets or you upgrade.
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
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.
Scheduled transfer (email/FTP/SFTP)
Beyond an on-demand download link, a feed can be set to deliver itself on a recurring schedule - useful for a buyer, marketplace, or internal system that just wants a fresh file without integrating an API. From a feed's Scheduled Transfer tab, choose a file format (CSV, Excel, or JSON), a timezone, and which hours of the day it should go out, then add recipients from your registered consumers - there's no option to send to an arbitrary address, so every recipient is someone already on your Consumers page.
Each consumer recipient can be delivered to by email, by SFTP/FTP/FTPS transfer straight to their own server, or both - set up a consumer's transfer connection (and test it) from the Consumers page's Transfer settings link. Every export file is named companyname_feedname_mmddyyyy_hhmm so it's easy to track on the receiving end.
Both the hours you can select and the number of recipients you can add depend on your plan - Starter allows 3 sends a day to 1 recipient, Growth 3 sends to 3 recipients, Pro 6 sends to 5 recipients, Business 12 sends to 10 recipients, and Scale all 24 hourly sends to 15 recipients (Enterprise is unlimited on both). Each email attaches the latest export directly when it's small enough, or includes a secure download link instead for larger catalogs, so a 50,000-product feed always arrives reliably either way.
Every email recipient gets a one-click unsubscribe link that removes just their address from the email channel - no login required, and it never affects a transfer already set up for that same recipient. The tab's delivery log shows exactly when each recipient was reached (and on which channel), and if anyone unsubscribed, kept for 7 days.
Bookings
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.
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.