Find an API

Search public APIs with auth details & Postman guides

← All APIs

Fulfillment.com APIv2

fulfillment · Commerce

Commerce No Auth Free & Open ecommerce

Welcome to our current iteration of our REST API. While we encourage you to upgrade to v2.0 we will continue support for our [SOAP API](https://github.com/fulfillment/soap-integration). # Versioning The Fulfillment.com (FDC) REST API is version controlled and backwards compatible. We have many future APIs scheduled for publication within our v2.0 spec so please be prepared for us to add data nodes in our responses, however, we will not remove knowledge from previously published APIs. #### A C

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET List Order Accounting

Retrieves accounting activity during the queried timespan.

https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting?page=1&limit=80&toDate=example&hydrate=example&fromDate=example&orderIds=example&warehouseIds=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting?page=1&limit=80&toDate=example&hydrate=example&fromDate=example&orderIds=example&warehouseIds=example"
import requests
params = {
    "page": "1",
    "limit": "80",
    "toDate": "example",
    "hydrate": "example",
    "fromDate": "example",
    "orderIds": "example",
    "warehouseIds": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting');
url.searchParams.set('page', '1');
url.searchParams.set('limit', '80');
url.searchParams.set('toDate', 'example');
url.searchParams.set('hydrate', 'example');
url.searchParams.set('fromDate', 'example');
url.searchParams.set('orderIds', 'example');
url.searchParams.set('warehouseIds', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting")
	q := baseURL.Query()
	q.Set("page", "1")
	q.Set("limit", "80")
	q.Set("toDate", "example")
	q.Set("hydrate", "example")
	q.Set("fromDate", "example")
	q.Set("orderIds", "example")
	q.Set("warehouseIds", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting")
uri.query = URI.encode_www_form({
  "page" => "1",
  "limit" => "80",
  "toDate" => "example",
  "hydrate" => "example",
  "fromDate" => "example",
  "orderIds" => "example",
  "warehouseIds" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/fulfillment.com/2.0/accounting?" . http_build_query([
    "page" => "1",
    "limit" => "80",
    "toDate" => "example",
    "hydrate" => "example",
    "fromDate" => "example",
    "orderIds" => "example",
    "warehouseIds" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET List of Item Inventories

Retrieve inventory for one or more items. This API requires elevated permissions, please speak to your success manager.

https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory?page=1&limit=80&merchantIds=example&warehouseIds=example&externalSkuNames=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory?page=1&limit=80&merchantIds=example&warehouseIds=example&externalSkuNames=example"
import requests
params = {
    "page": "1",
    "limit": "80",
    "merchantIds": "example",
    "warehouseIds": "example",
    "externalSkuNames": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory');
url.searchParams.set('page', '1');
url.searchParams.set('limit', '80');
url.searchParams.set('merchantIds', 'example');
url.searchParams.set('warehouseIds', 'example');
url.searchParams.set('externalSkuNames', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory")
	q := baseURL.Query()
	q.Set("page", "1")
	q.Set("limit", "80")
	q.Set("merchantIds", "example")
	q.Set("warehouseIds", "example")
	q.Set("externalSkuNames", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory")
uri.query = URI.encode_www_form({
  "page" => "1",
  "limit" => "80",
  "merchantIds" => "example",
  "warehouseIds" => "example",
  "externalSkuNames" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/fulfillment.com/2.0/inventory?" . http_build_query([
    "page" => "1",
    "limit" => "80",
    "merchantIds" => "example",
    "warehouseIds" => "example",
    "externalSkuNames" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET List Returns

Retrieves summary return activity during the queried timespan. Although return knowledge can be learned from `GET /orders/{id}` it can take an unknown amount of time for an order that is refused or undeliverable to return to an FDC facility. Instead we recommend regularly querying this API.

https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns?page=1&limit=80&toDate=example&fromDate=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns?page=1&limit=80&toDate=example&fromDate=example"
import requests
params = {
    "page": "1",
    "limit": "80",
    "toDate": "example",
    "fromDate": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns');
url.searchParams.set('page', '1');
url.searchParams.set('limit', '80');
url.searchParams.set('toDate', 'example');
url.searchParams.set('fromDate', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns")
	q := baseURL.Query()
	q.Set("page", "1")
	q.Set("limit", "80")
	q.Set("toDate", "example")
	q.Set("fromDate", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns")
uri.query = URI.encode_www_form({
  "page" => "1",
  "limit" => "80",
  "toDate" => "example",
  "fromDate" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/fulfillment.com/2.0/returns?" . http_build_query([
    "page" => "1",
    "limit" => "80",
    "toDate" => "example",
    "fromDate" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Fulfillment.com APIv2?

Fulfillment.com APIv2 is a Commerce API. Developers commonly use commerce APIs for:

  • syncing product catalogues and inventory levels
  • building price comparison and deal-finder tools
  • processing orders and tracking shipments
  • managing customer wishlists and reviews
  • automating abandoned-cart and promotional emails

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Fulfillment.com APIv2 is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗