Goflow - API (v1)

Download OpenAPI specification:Download

Goflow Support: support@goflow.com

Authentication

All requests require a valid API token.

Include your token in your request headers, as Authorization: Bearer {token} (without the curly braces).

The account owner can generate API tokens from within the Goflow web app, by visiting SettingsAPI Tokens.

Beta Header

While browsing the documentation, you may see some endpoints marked as beta. These endpoints, like all public API endpoints, are fully production-ready, have been thoroughly tested and are running on production hardware with full availability.

The beta designation is primarily for transparency. These endpoints haven't been in production long enough for us to be confident that the schema is set in stone. We may still need to tweak it a tiny bit in the future (though we very rarely do).

Rest assured that if any changes are necessary, we'll reach out to you directly to ensure a smooth transition.

To access a beta endpoint, you must explicitly opt in by including a contact email address as an X-Beta-Contact header:

X-Beta-Contact: contact@mydomain.com

We'll use this email address to contact you in case there are any changes to these beta endpoints that may affect your code.

Your privacy is of utmost importance to us. Your email address will never be shared with anyone outside of Goflow, and we will never send you anything that is not related to the API.

Endpoints and requests

All REST API endpoints follow this pattern:

https://{your_subdomain}.api.goflow.com/v1/{resource}

This subdomain is the same as the one used to access the general Goflow portal. For example, if you generally access Goflow at:

https://companyname.goflow.com

...then you would access the API at:

https://companyname.api.goflow.com/v1/{resource}

Note: The Goflow API is only accessible over HTTPS. For extra security, accessing the API over plain-text HTTP does not automatically redirect to HTTPS. You will get an error that we only support HTTPS.

Dates

The API uses ISO 8601 for all dates. All dates returned from the API have both the date and time set, and are always in UTC. For example:

2025-01-31T18:30:20Z

We recommend that you follow the same pattern when sending dates to the API. For example, to filter a list of orders for a given date:

/orders?filters[date:gte]=2025-01-01T00:00:00Z&filters[date:lt]=2025-01-02T00:00:00Z

...will return all orders whose date is January 1st 2025 in UTC.

If you need to filter based on a different timezone, we recommend doing the timezone conversion on your end, before passing it to the API filters. For example, to apply the above filter based on EST, convert the start and end of the day from EST to UTC:

/orders?filters[date:gte]=2024-12-31T19:00:00Z&filters[date:lt]=2025-01-01T19:00:00Z

...will return all orders whose date is January 1st 2025 in EST.

Filters

Many list endpoints, which are accessed via a GET request to the root of the resource (such as /orders), include support for passing along filters to narrow down the results. This section describes how filters work in general. Refer to the documentation for each resource to see the available filters for each specific endpoint.

  • The filters query - All filters should be passed in via the filters query parameter. For example:

    /orders?filters[status]=shipped
    

    ...will only return orders whose status is shipped.

  • Multiple filters - To use multiple filters, you may set multiple fields on the filters key. For example:

    /orders?filters[status]=shipped&filters[invoice_number]=123
    

    ...will return orders whose status is shipped, but only if its invoice_number is also 123.

  • Multiple values - To filter for multiple values in the same field, you may set the same field multiple times to a different value. For example:

    /orders?filters[status]=shipped&filters[status]=ready_for_pickup
    

    ...will return orders whose status is either shipped or ready_for_pickup.

  • Nested fields - To filter based on a nested field, you can use "dot notation" as the key. For example:

    /orders?filters[store.id]=123
    

    ...will return orders whose store ID is 123.

  • Operators - In addition to regular key/value filters, many fields also support supplying an operator for the filter. For example:

    /orders?filters[status:not]=shipped
    

    ...will only return orders whose status is not shipped.

    To filter based on whether a given field is set or not, without checking for a specific value, use the special boolean exists operator. For example:

    /orders?filters[invoice_number:exists]=false
    

    As you can see, operators are supplied as part of the key, separated from the field by a : (colon). Here is a list of operators and their meaning:

    Operator Meaning
    eq Equals (Default)
    not Not equals
    exists Exists
    gt Greater than
    lt Less than
    gte Greater than or equal to
    lte Less than or equal to

    For additional examples of operator usage, review the section on dates.

    Support for these operators varies by endpoint and field type. As mentioned, refer to the documentation of each endpoint to see the list of supported filters and operators.

    Note on whitespace: All input strings in the API are trimmed of any surrounding whitespace. This prevents errors when you're passing user input directly to the API.

    As a side effect, in the rare case where an existing record has a field with surrounding whitespace, you will not be able to search for it in the API. Your query string term will be trimmed and won't match the record's value.

Pagination

All list pages, which are accessed via a GET request to the root of the resource (such as /orders), return their data as paginated chunks. The basic schema for the response is:

{
    "data": [/* ... */],
    "next": string|null
}

The actual chunk of records is returned in an array under the data property. If there are more records after the current chunk, the next property will contain a URL from which to fetch the next chunk. If this is the last chunk in the set, the next property will be null.

Partial Updates

Some endpoints, such as PATCH requests, support partial updates. For these endpoints, you may completely omit any fields you do not intend to update.

For example, to update the tracking number of a shipment box, submit this JSON body as a PATCH request to the edit shipment box endpoint:

{
    "tracking_number": "9274890388405702033589"
}

...and only the tracking_number field will be updated. All other fields, such as cost, weight and dimensions will remain unchanged.

Note: omitting a field is not the same as passing it as null. Omitting a field ignores that field entirely, whereas setting it to null will actually set the field to null in Goflow (or return a validation error, where applicable).

Feeds for Bulk Actions

Some resources in the API support bulk actions using feeds, which let you post multiple API requests within a single HTTP request. For example, using the orders/shipments/feeds endpoint, you may submit a whole list of order shipment requests at once.

Unlike other endpoints, the actions in a feed are processed asynchronously. The response will include a location property, which contains the endpoint for this feed:

HTTP/1.1 202 Accepted
{
    "id": 123,
    "location": "https://domain.com/v1/orders/shipments/feeds/123"
}

Once all requests have been processed, the feed's endpoint will return the responses for each request, respectively:

HTTP/1.1 207 Multi-Status
{
    "status": "pending" | "done"
    "responses": null | [
        {
            "index": 0,
            "status_code": 201|422, /* Or any other status code */
            "request": { /* The original request */ },
            "error": null | string
        }
    ]
}

Note: For some feeds where there would be no details in the successful response, such as the Vendor Products feed, the responses array may only contain error responses, if any.

If the feed's status is still pending, then responses will be null. Once the feed is done processing, the responses will hold a list of responses, one for each request.

Expiry Note: Feed results are kept by Goflow for 12 hours after the feed is done processing. After that timeframe, the endpoint will return a 404.

Rate Limits

Every endpoint in the API is rate limited, to prevent abuse and keep the API available to all users.

All REST API responses include X-Rate-Limit headers, which show how many requests the client has made, and the total number allowed per minute.

When the limit has been exceeded, a 429 HTTP response code will be returned. It will also include a Retry-After header with the number of seconds to wait until retrying your request.

Quota Limits

In addition to rate limits, some asynchronous requests, particularly reports, are subject to quota limits.

Quota limits differ from rate limits. While rate limits cap the number of requests within a period, quota limits restrict the number of records generated asynchronously within a given period. Upon reaching the quota, any additional requests are queued for processing when the quota replenishes.

When processing a given request, the full result-set will be generated, even if it exceeds the current quota limit. Any overage will roll over, reducing the available quota for the next period.

Example: Consider a report with a quota limit of 100 records per day. If a report generates 250 records, no additional reports of that type will be processed today or tomorrow. On the day after tomorrow, any queued requests, along with new requests, will begin processing.

This example uses smaller numbers for clarity, but the actual quota limits are significantly higher.

Refer to the documentation of each endpoint to see its exact quota limit. Furthermore, the Report Quotas endpoint provides comprehensive information on quota policies for each report type, along with real-time data on current quota usage.

Reports

Reports are generated asynchronously, similar to responses of Feeds for Bulk Actions. Request to generate a report, and the response will include a location property, which contains the endpoint for this report:

HTTP/1.1 202 Accepted
{
    "id": 123,
    "location": "https://domain.com/v1/reports/123"
}

The report is generated and stored in a file with the format of your choosing (json, jsonl, or csv). You may fetch the report status and metadata from the endpoint returned in the above-mentioned location URL.

Once the report was successfully generated, the report's endpoint will return the file_url of the generated file:

HTTP/1.1 200 OK
{
    /* Partial */
    "status": "completed",
    "completed": {
        "records_count": 265,
        "file_url": "https://path-to-file.jsonl",
    },
}

Note: the above is a partial view of the response. Refer to the report endpoint's documentation for the full details.

If the report's status is still queued or processing, then completed will be null. Once the report is fully generated, completed.file_url will point to the URL from which to fetch the generated report file.

The URL at completed.file_url will redirect you to the actual file on our CDN. Make sure to follow the HTTP redirect header when downloading the file.

Expiry Note: Generated reports are kept by Goflow for 12 hours from when the report was fully generated. After that timeframe, the endpoint will return a 404.

Status and error codes

401 Unauthorized

The client doesn't have correct authentication credentials.

403 Forbidden

The client doesn't have the correct permissions for the given endpoint.

404 Not Found

The requested resource was not found.

409 Conflict

The request conflicts with another process. You may try the same request again.

422 Unprocessable Entity

The request body contains semantic errors, or doesn't pass validation. This is typically caused by incorrect formatting, omitting required fields, or logical errors such as attempting to ship an order that's already shipped.

HTTP/1.1 422 Unprocessable Entity
{
    "message": "The given data is invalid",
    "errors": [
        "name": [
            "Name required"
        ]
    ]
}

429 Too Many Requests

The client has exceeded the rate limit.

HTTP/1.1 429 Too Many Requests
{
    "message": "API rate limit exceeded. See the rate-limiting section in our API documentation.",
    "retry_after_seconds": 7.8832487
}

503 Service Unavailable

The Goflow API is temporarily unavailable, for scheduled maintenance.

5xx Errors

An internal error occurred in Goflow.

Orders

The orders resource represents sales orders. Orders are generally imported directly from the channels, but may have also been entered manually, or uploaded from a file. No matter the source, Goflow standardizes the orders so they all look the same.

List orders

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
order_number eq, not
date gt, gte, lt, lte
status_updated_at gt, gte, lt, lte
status eq, not
source eq, not
store.id eq, not
warehouse.id eq, not
invoice_number eq, not, exists
pick_list_number eq, not
purchase_order_number eq, not
original_order_id eq, not, exists
external_transactions.store_shipment_notification.sent_at gt, gte, lt, lte
external_transactions.store_invoice.sent_at gt, gte, lt, lte
external_transactions.accounting_invoice.sent_at gt, gte, lt, lte
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id order_number date status_updated_at external_transactions.store_shipment_notification.sent_at … 2 more

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Create sales order • beta

This endpoint has a rate limit of 30 requests per minute.

Request Body schema:
required
object

The order to create.

object or null

Miscellaneous options for the order.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "order": {
    },
  • "options": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Fetch single order

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Responses

Response Schema:
id
integer <int64>

The internal ID for the order.

order_number
string

The order number from the channel.

date
string <date-time>

The order date. Usually the date and time the order was placed by the customer.

status
string
Enum: awaiting_confirmation backorder canceled draft dropship … 12 more

The current status of the order.

status_updated_at
string <date-time>

The date and time when the status was last updated.

source
string
Enum: channel manual api upload

The source of the order.

object

The store to which this order belongs.

object

The warehouse this order is assigned to.

Array of objects[ items ]

A list of line items, each containing information about an item in the order.

object or null

The address to which this order is shipped.

object or null

The customer's billing address.

Array of objects[ items ]

A list of arbitrary order notes.

pick_list_number
integer or null <int64>

The order's pick list number (if the order is in a pick list).

invoice_number
string or null

The invoice number (used for invoicing the store and sending the order to accounting).

purchase_order_number
string or null

The customer's PO number.

is_gift
boolean

Whether this order is a gift.

is_pii_removed
boolean

Whether Personally Identifiable Information (PII) has been removed from the address.

is_reserving_inventory
boolean or null

Whether the order is set to reserve inventory.

object

Information about the order's shipment.

object

Various ship-by and deliver-by dates.

Array of objects[ items ]

A list of tags assigned to this order.

Array of objects[ items ]

A list of charges on the order (in addition to the charges on the lines).

Array of objects[ items ]

A list of taxes charged on the order (in addition to the taxes on the lines).

Array of objects[ items ]

A list of costs associated with this order.

original_order_id
integer or null <int64>

If this order was split from another order, this field will contain the original order's ID.

Note: If an order is split multiple times (i.e. one of the chunks was split again), the new orders' original_order_id will contain the order ID of the original order, not the id of the chunk that was just split.

object

Details about external transactions associated with this order.

object

A summary of some order financials.

Response samples

Content type
{
  • "id": 0,
  • "order_number": "string",
  • "date": "2019-08-24T14:15:22Z",
  • "status": "awaiting_confirmation",
  • "status_updated_at": "2019-08-24T14:15:22Z",
  • "source": "channel",
  • "store": {
    },
  • "warehouse": {
    },
  • "lines": [
    ],
  • "shipping_address": {
    },
  • "billing_address": {
    },
  • "notes": [
    ],
  • "pick_list_number": 0,
  • "invoice_number": "string",
  • "purchase_order_number": "string",
  • "is_gift": true,
  • "is_pii_removed": true,
  • "is_reserving_inventory": true,
  • "shipment": {
    },
  • "ship_dates": {
    },
  • "tags": [
    ],
  • "charges": [
    ],
  • "taxes": [
    ],
  • "costs": [
    ],
  • "original_order_id": 0,
  • "external_transactions": {
    },
  • "summary": {
    }
}

Orders • Documents

The Orders Documents resource returns URLs that point directly to specific order documents.

The URLs returned by this endpoint are publicly-accessible, and do not require authentication. They're valid for a limited time, after which they expire. You can always call this endpoint again to get fresh URLs.

Get order document URLs • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Responses

Response Schema:
object or null

Bill of lading.

object or null

Carton labels.

object or null

Commercial invoice.

Array of objects[ items ]

Packing slips.

Generally speaking there's only a single packing slip. However, if the store has also sent us a packing slip, you may see 2 packing slips here. You probably only ever want to print one of them, so choose the one that makes the most sense for you.

object or null

Pallet labels.

object or null

Shipping labels.

Response samples

Content type
{
  • "bill_of_lading": {
    },
  • "carton_labels": {
    },
  • "commercial_invoice": {
    },
  • "packing_slips": [
    ],
  • "pallet_labels": {
    },
  • "shipping_labels": {
    }
}

Orders • Lines

The Order Lines resource represents lines in an order.

Update order lines • beta

This endpoint has a rate limit of 30 requests per minute.

This endpoint lets you update the charges of multiple lines in the same order.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
required
Array of objects non-empty [ items ]

A list of lines to update. For groups, only the parent line can be updated.

Existing lines not in this list will not be modified.

Responses

Request samples

Content type
{
  • "lines": [
    ]
}

Orders • Warehouse

The Order Warehouse resource represents the fulfillment warehouse for a given order.

If the order is set to reserve inventory, the warehouse's "reserved inventory" will include the product quantities in this order.

Change order warehouse • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
warehouse_id
required
string <uuid>

The internal ID of the warehouse.

Responses

Request samples

Content type
{
  • "warehouse_id": "825f5f2b-307c-4cc1-9373-6d0c4692d478"
}

Orders • Cancellation

The Orders Cancellation endpoint provides the ability to cancel orders.

Cancel order • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
notify_store
boolean or null

Whether to send a shipment notification to the store. Defaults to true when the channel integration supports it.

Note: When explicitly set to true and the channel integration does not support cancelling orders, a validation error will be returned.

reason
string or null
Enum: cannot_fulfill cannot_ship_to_country cannot_ship_to_address cannot_ship_to_alaska_or_hawaii cannot_ship_to_military … 23 more

The reason for cancelling this order.

Note: Some channels only accept a subset of these reasons. See Channel Integration Details.

Responses

Request samples

Content type
{
  • "notify_store": true,
  • "reason": "cannot_fulfill"
}

Orders • Holds

The Orders Holds resource allows you to add and remove order holds.

Place order hold • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Responses

Remove order hold • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Responses

Orders • Splits

The Order Splits resources allows you to split an order into multiple different orders. This is useful when you're planning to fulfill different parts of an order at different times, from different warehouses, or using different methods (i.e. Direct Fulfillment vs. Purchase to Order or Dropship).

If the order already has packed shipment boxes, they will carry over to the new orders, respectively.

Note: When splitting an order, the original order is deleted in Goflow. The new chunks are each saved as individual standalone orders. Each order will have its own id, but they'll all share the original order's order_number. To tie them together, their original_order_id will always contain the original order's id.

Split order • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
required
Array of objects [ 2 .. 100 ] items [ items ]

The list of new orders.

Responses

Response Schema:
Array of objects[ items ]

The newly-created individual orders.

Request samples

Content type
{
  • "chunks": [
    ]
}

Response samples

Content type
{
  • "orders": [
    ]
}

Orders • Acknowledgment

The Order Acknowledgment resource allows you to confirm or reject orders from specific channels.

Note: Order Acknowledgments are currently only supported in the API for the following channels: amazon_vendor_usa, amazon_vendor_mexico, and amazon_vendor_canada.

Acknowledge order • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
required
Array of objects[ items ]

A list of lines, each containing information about an acknowledgement to an order line.

This list may contain the same line_id multiple times. If you want to take different actions on some quantities in the same line, repeat that line with a different action per quantity, respectively.

Responses

Response Schema:
Array of objects[ items ]

The newly-created individual orders.

If all actions on all lines are the same, this will just return the order as is. If there are different actions on some lines, the order will be automatically split into multiple new orders. Refer to the documentation on Order Splits for information on how splits are handled in Goflow.

Request samples

Content type
{
  • "lines": [
    ]
}

Response samples

Content type
{
  • "orders": [
    ]
}

Orders • Shipment

The Order Shipment resource lets you update the details about how an order is being shipped, such as the carrier, shipping method etc.

Note: This resource simply lets Goflow know how an order should be shipped.

To actually mark orders as shipped, submit a Shipments Feed instead.

Update order shipment • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
shipment_type
required
string
Enum: small_parcel ltl messenger pickup

The type of shipment.

shipping_method
string or null
Enum: amazon_logistics_us_bulk amazon_logistics_us_lma amazon_logistics_us_lma_air amazon_logistics_us_premium amazon_logistics_us_premium_air … 210 more

The carrier's shipping method. Required when shipment_type is small_parcel.

scac
string or null [ 2 .. 5 ] characters

The "Standard Carrier Alpha Code". Required when shipment_type is ltl.

object or null

The 3rd party account to use when shipping this order, if any. Only allowed when type is small_parcel.

Note: 3rd party shipping accounts are currently supported for fedex, ups, canada_post and on_trac.

Responses

Request samples

Content type
{
  • "shipment_type": "small_parcel",
  • "shipping_method": "amazon_logistics_us_bulk",
  • "scac": "strin",
  • "third_party_account": {
    }
}

Orders • Shipment Boxes

The Order Shipment Boxes resource lets you pack orders into boxes, as well as unpack existing boxes.

After all boxes are packed, you may mark the order as shipped by submitting a Shipments Feed.

Note: Packing boxes individually through the API is primarily useful when your shipment requires carton labels. Packing each box in real-time allows fetching the box's carton label, so that it can be affixed to the correct box right away.

If you don't need labels in real-time, you may skip this step altogether and only mark orders shipped via a Shipments Feed directly.

Pack box • beta

This endpoint has a rate limit of 30 requests per minute.

Create a packed box containing some products from the order.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
object or null

The shipping cost for this box.

tracking_number
string or null

The tracking number or, for LTL orders, the PRO number.

sscc
string or null^[0-9]{20}$

The "Serial Shipping Container Code" for this box.

object or null

The weight of this box.

object or null

The dimensions of this box.

required
Array of objects non-empty [ items ]

The products packed in this box. For group products, only list the group's children.

Responses

Response Schema:
box_id
string <uuid>

The ID of the newly-created box.

Request samples

Content type
{
  • "cost": {
    },
  • "tracking_number": "string",
  • "sscc": "string",
  • "weight": {
    },
  • "dimensions": {
    },
  • "lines": [
    ]
}

Response samples

Content type
{
  • "box_id": "cc04d3e6-0274-4602-af5c-c924910fec95"
}

Edit box • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
boxId
required
string <uuid>

The internal ID for the shipment box.

id
required
string

The internal ID for the order.

Request Body schema:

This endpoint supports partial updates. You may completely omit any fields you do not intend to update.

Refer to the general section on partial updates for more information.

object or null

The shipping cost for this box.

When updating cost, all fields in cost are required.

tracking_number
string or null

The tracking number or, for LTL orders, the PRO number.

object or null

The weight of this box.

When updating weight, all fields in weight are required.

object or null

The dimensions of this box.

When updating dimensions, all fields in dimensions are required.

Responses

Request samples

Content type
{
  • "cost": {
    },
  • "tracking_number": "string",
  • "weight": {
    },
  • "dimensions": {
    }
}

Unpack box • beta

This endpoint has a rate limit of 30 requests per minute.

Delete a packed box from the order.

path Parameters
boxId
required
string <uuid>

The internal ID for the shipment box.

id
required
string

The internal ID for the order.

Responses

Orders • Shipments Feeds

This resource allows you to post shipments for orders that were shipped outside of Goflow.

Refer to the general feeds section for details on how to use feeds.

Note: Each order can only have a single shipment, and each order must be shipped in full.

To make partial shipments, you should first split the order.

Submit order shipments

This endpoint has a rate limit of 6 requests per minute.

Request Body schema:
required
Array of objects [ 1 .. 1000 ] items [ items ]

A list of order shipments.

Responses

Response Schema:
id
integer <int64>

The ID of the new feed.

location
string

The URL from which to get the results.

Request samples

Content type
{
  • "requests": [
    ]
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Fetch feed responses

This endpoint has a rate limit of 12 requests per minute.

path Parameters
id
required
integer <int64>

The ID of the feed

Responses

Response Schema:
status
string
Enum: pending done
Array of objects or null

A list of responses, available once the feed is done processing.

Response samples

Content type
{
  • "status": "pending",
  • "responses": [
    ]
}

Orders • Shipment Routing Request

The Order Shipment Routing Request resource represents an inquiry to the channel asking for instructions on how to ship a given order.

Shipment Routing responses from the store are asynchronous: it may take several hours, or more, to receive a response from the store. After receiving a response from the store, Goflow updates all relevant order properties, such as shipment.carrier, shipment.shipping_method, shipment.ship_dates.latest_ship etc.

To determine whether Goflow has already received a Shipment Routing response from the store, you may fetch the Shipment Routing Request and inspect its response.

Note: Shipment Routing Requests are currently supported for the following channels: amazon_vendor_usa, amazon_vendor_mexico, and walmart_vendor_usa.

Request routing • beta

This endpoint has a rate limit of 30 requests per minute.

Important: For walmart_vendor_usa orders, the user must first manually acknowledge the order on Walmart's portal. Routing requests for unacknowledged orders will silently fail.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
object or null

The weight of the shipment. Required if the order is not packed in full.

object or null

Information about the boxes. Required if the order is not packed in full.

object or null

Information about the pallets.

object or null

The cubic volume of the shipment. Required if the order is not packed in full.

freight_class
string or null

The freight class of the shipment.

Enum: 50 55 60 65 70 77.5 85 92.5 100 110 125 150 175 200 250 300 400 500

This is only used for amazon_vendor_usa and amazon_vendor_mexico.

ready_for_pickup_at
string or null <date-time>

The date and time the shipment will be ready for pickup.

This is only used for amazon_vendor_usa and amazon_vendor_mexico.

Responses

Request samples

Content type
{
  • "weight": {
    },
  • "boxes": {
    },
  • "pallets": {
    },
  • "cubic_volume": {
    },
  • "freight_class": "string",
  • "ready_for_pickup_at": "2019-08-24T14:15:22Z"
}

Fetch routing request • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Responses

Response Schema:
requested_at
string <date-time>

The date and time the routing request was made.

object

The weight of the shipment.

object

Information about the boxes.

object

Information about the pallets.

object

The cubic volume of the shipment.

freight_class
string or null

The freight class of the shipment.

Enum: 50 55 60 65 70 77.5 85 92.5 100 110 125 150 175 200 250 300 400 500

ready_for_pickup_at
string or null <date-time>

The date and time the shipment is ready for pickup.

object or null

The response received from the store for this routing request.

This field is null until Goflow gets a response from the store.

Response samples

Content type
{
  • "requested_at": "2019-08-24T14:15:22Z",
  • "weight": {
    },
  • "boxes": {
    },
  • "pallets": {
    },
  • "cubic_volume": {
    },
  • "freight_class": "string",
  • "ready_for_pickup_at": "2019-08-24T14:15:22Z",
  • "response": {
    }
}

Delete routing request • beta

This endpoint has a rate limit of 30 requests per minute.

Deleting the routing request does not cancel it at the channel. It only deletes it in Goflow, so that it can be requested again.

path Parameters
id
required
string

The internal ID for the order.

Responses

Orders • Invoice Number

The Order Invoice Number endpoint controls which invoice number to use when sending an invoice to the store or to your connected accounting system, where applicable.

Note: when an order is split, the existing invoice_number will be removed, unless an invoice has already been sent to the store (e.g. the order was unshipped and then split).

If you split an order after having set its invoice_number, be sure to set new invoice numbers on the new orders.

Set invoice number • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the order.

Request Body schema:
invoice_number
required
string [ 1 .. 20 ] characters

The invoice number.

Responses

Request samples

Content type
{
  • "invoice_number": "string"
}

Orders • Tags

The Orders Tags resource controls the list of tags on a given order.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Orders • Bulk Tags

The Orders Bulk Tags resource controls the list of tags on several orders at once.

Add tags in bulk • beta

This endpoint has a rate limit of 10 requests per minute.

Request Body schema:
required
Array of objects <= 1000 items [ items ]

The orders to update.

required
Array of objects <= 200 items [ items ]

The list of tags to add to each order.

Responses

Response Schema:
Array of objects[ items ]

A list of responses.

Request samples

Content type
{
  • "orders": [
    ],
  • "tags": [
    ]
}

Response samples

Content type
{
  • "responses": [
    ]
}

Replace tags in bulk • beta

This endpoint has a rate limit of 10 requests per minute.

Request Body schema:
required
Array of objects <= 1000 items [ items ]

The orders to update.

required
Array of objects <= 200 items [ items ]

The new list of tags that will replace the current list of tags on each order.

Responses

Response Schema:
Array of objects[ items ]

A list of responses.

Request samples

Content type
{
  • "orders": [
    ],
  • "tags": [
    ]
}

Response samples

Content type
{
  • "responses": [
    ]
}

Remove tags in bulk • beta

This endpoint has a rate limit of 10 requests per minute.

Request Body schema:
required
Array of objects <= 1000 items [ items ]

The orders to update.

required
Array of objects <= 200 items [ items ]

The list of tags to remove from each order.

Responses

Response Schema:
Array of objects[ items ]

A list of responses.

Request samples

Content type
{
  • "orders": [
    ],
  • "tags": [
    ]
}

Response samples

Content type
{
  • "responses": [
    ]
}

Purchasing • Purchase Orders

The Purchase Orders resource represents purchase orders placed with your vendors.

List purchase orders • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
purchase_order_number eq, not
date gt, gte, lt, lte
status eq, not
vendor.id eq, not
warehouse.id eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id purchase_order_number date

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch single purchase order • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the purchase order.

Responses

Response Schema:
id
integer <int64>

The internal ID for the purchase order.

type
string
Enum: standard dropship purchase_to_order

The type of purchase order.

purchase_order_number
string

The purchase order number.

date
string <date-time>

The date on the purchase order. This is usually the date it was created in Goflow, but may be changed by the user.

status
string
Enum: awaiting_receipt receiving received_partial received closed … 1 more

The current status of the purchase order.

object

The warehouse the purchase order is assigned to.

object

The vendor from whom these products are being purchased.

object

Information about the purchase order submitted to the vendor.

Array of objects[ items ]

A list of charges on the purchase order (in addition to the charges on the lines).

object

Information about the shipment of the purchase order.

Array of objects[ items ]

A list of line items, each containing information about a product in the purchase order.

Array of objects[ items ]

A list of tags assigned to the purchase order.

Array of objects[ items ]

A list of notes.

object

A summary of the purchase order financials.

object

Meta information about the purchase order.

Response samples

Content type
{
  • "id": 0,
  • "type": "standard",
  • "purchase_order_number": "string",
  • "date": "2019-08-24T14:15:22Z",
  • "status": "awaiting_receipt",
  • "warehouse": {
    },
  • "vendor": {
    },
  • "vendor_purchase_order": {
    },
  • "charges": [
    ],
  • "shipment": {
    },
  • "lines": [
    ],
  • "tags": [
    ],
  • "notes": [
    ],
  • "summary": {
    },
  • "meta": {
    }
}

Purchasing • Purchase Orders Tags

The Purchase Orders Tags resource controls the list of tags on a given purchase order.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Purchasing • Receipts

The Receipts resource represents products received from your vendors.

Can optionally be related to existing purchase orders.

List receipts • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
reference_number eq, not
date gt, gte, lt, lte
status eq, not
vendor.id eq, not
warehouse.id eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id reference_number date vendor.id warehouse.id

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch single receipt • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the receipt.

Responses

Response Schema:
id
integer <int64>

The internal ID for the receipt.

reference_number
string

The user-specified reference number for the receipt.

date
string <date-time>

The date on the receipt. This is usually the date it was created in Goflow, but may be changed by the user.

status
string
Enum: draft completed

The status of the receipt.

object

The warehouse at which these products were received.

object

The vendor from which these products were purchased.

Array of objects[ items ]

A list of line items, each containing information about a product in the receipt.

Array of objects[ items ]

A list of tags assigned to the receipt.

Array of objects[ items ]

A list of notes.

object

Meta information about the receipt.

Response samples

Content type
{
  • "id": 0,
  • "reference_number": "string",
  • "date": "2019-08-24T14:15:22Z",
  • "status": "draft",
  • "warehouse": {
    },
  • "vendor": {
    },
  • "lines": [
    ],
  • "tags": [
    ],
  • "notes": [
    ],
  • "meta": {
    }
}

Purchasing • Receipts Tags

The Receipts Tags resource controls the list of tags on a given receipt.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Products

The Products resource represents products in your catalog.

Products come in 3 different types:

  • standard - A regular product, with inventory and recorded costs.

  • group - A virtual product, which is a grouping of other products. The product's children property holds the "recipe" that forms this group, including the quantities for each child.

    Groups have no inventory of their own, and no associated costs of their own. They're merely a way to group products together to easily sell them as a single bundle.

  • kit - A product that can be assembled from other products, and disassembled back into those products. The product's children property holds the "recipe" that forms this kit, including the quantities for each child.

    Kits have their own inventory and recorded cost, just like standard products. When assembling or disassembling a kit (using productions), the inventory and cost is automatically moved between the kit and its children.

List products • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
item_number eq, not
status eq, not
details.brand eq, not
details.category eq, not
details.condition eq, not
details.manufacturer eq, not
details.name eq, not
details.is_perishable eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id item_number details.brand details.category details.condition … 1 more

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Create product • beta

This endpoint has a rate limit of 30 requests per minute.

Request Body schema:
type
string
Default: standard
Enum: standard group kit

The type of product.

  • standard: a regular product.
  • group: A virtual product, which is a grouping of other products. Groups have no inventory of their own.
  • kit: A product that can be assembled/disassembled from/into other products.

See the section description above for a detailed explanation.

item_number
required
string [ 1 .. 100 ] characters

The user-defined item number, displayed everywhere in the app.

Note: Item numbers never change.

Array of objects or null <= 25 items

A list of child products and quantities that make up the "recipe" for this product.

Note: Only applies to group and kit products. See the section description above for a detailed explanation.

object or null

General details about the product.

object or null

Pricing details for the product.

object or null

General settings for the product.

object or null

The product's units of measure.

Array of objects or null <= 25 items

A list of identifiers (usually printed on barcodes) for this product.

object or null

The product's packing & shipping properties.

object or null

The product's customs & tariff properties.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "type": "standard",
  • "item_number": "string",
  • "children": [
    ],
  • "details": {
    },
  • "pricing": {
    },
  • "settings": {
    },
  • "units_of_measure": {
    },
  • "identifiers": [
    ],
  • "shipping": {
    },
  • "customs": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Fetch single product • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the product.

Responses

Response Schema:
id
integer <int64>

The internal ID for the product.

type
string
Enum: standard group kit

The type of product.

  • standard: a regular product.
  • group: A virtual product, which is a grouping of other products. Groups have no inventory of their own.
  • kit: A product that can be assembled/disassembled from/into other products.

See the section description above for a detailed explanation.

item_number
string

The user-defined item number, displayed everywhere in the app.

Note: Item numbers never change.

status
string
Enum: active inactive

The current status of the product.

Array of objects[ items ]

A list of user-defined tags assigned to this product.

Array of objects[ items ]

A list of child products and quantities that make up the "recipe" for this product.

Note: Only applies to group and kit products. See the section description above for a detailed explanation.

object

General details about the product.

object

Pricing details for the product.

object

General settings for the product.

object

The product's units of measure.

Array of objects[ items ]

A list of identifiers (usually printed on barcodes) for this product.

object

The product's packing & shipping properties.

object

The product's customs & tariff properties.

Response samples

Content type
{
  • "id": 0,
  • "type": "standard",
  • "item_number": "string",
  • "status": "active",
  • "tags": [
    ],
  • "children": [
    ],
  • "details": {
    },
  • "pricing": {
    },
  • "settings": {
    },
  • "units_of_measure": {
    },
  • "identifiers": [
    ],
  • "shipping": {
    },
  • "customs": {
    }
}

Products • Pricing

The Products Pricing endpoint provides the ability to update pricing on a product.

Edit pricing • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string

The internal ID for the product.

Request Body schema:

This endpoint supports partial updates. You may completely omit any fields you do not intend to update.

Refer to the general section on partial updates for more information.

default_cost
number or null <double> [ 0.01 .. 1000000 ]

The default cost when creating purchase orders.

default_price
number or null <double> [ 0.01 .. 1000000 ]

The default price when manually creating sales orders.

msrp
number or null <double> [ 0.01 .. 1000000 ]

The manufacturer-suggested price.

map
number or null <double> [ 0.01 .. 1000000 ]

The manufacturer-provided minimum advertised price.

Responses

Request samples

Content type
{
  • "default_cost": 0.01,
  • "default_price": 0.01,
  • "msrp": 0.01,
  • "map": 0.01
}

Products • Tags

The Products Tags resource controls the list of tags on a given product.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Inventory • Adjustments

The adjustments resource represents inventory adjustments. Adjustments are manual, arbitrary changes to product inventory, which are not connected to any other transaction.

A single adjustment may contain adjustments for many different products.

List adjustments

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
reference_number eq, not
warehouse.id eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Value: id

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Adjust inventory

This endpoint has a rate limit of 30 requests per minute.

Adjustments may be created as one of two types: relative and absolute.

  • relative adjustments treat the provided quantity on each line as a change, incrementing or decrementing the current "on hand" inventory number by the given quantity.

  • absolute adjustments treat the provided quantity on each line as replacing the current "on hand" inventory number. If the current "on hand" inventory number is the same as the provided quantity, that line will be ignored.

    If the quantity of every line is the same as the current "on hand" inventory number for its product, respectively, then no adjustment document will be created. The endpoint will return an empty response with a 204 status code.

    Note: absolute adjustments are simply an easier way to create an adjustment, so that you don't have to first fetch the current "on hand" inventory number and calculate the difference. However, they are still recorded in a relative manner. The final adjustment transaction will always have its quantity set to the relative number that was actually adjusted.

Request Body schema:
type
required
string
Enum: absolute relative

The type of quantity specified in the lines. See the section description above for a detailed explanation.

warehouse_id
required
string <uuid>

The internal ID for the warehouse.

reference_number
string or null

The user-provided reference number for the adjustment. Leave empty to have the system assign an auto-incremented number.

required
Array of objects [ 1 .. 2000 ] items [ items ]

A list of lines, each containing information about an adjustment to a product.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "type": "absolute",
  • "warehouse_id": "825f5f2b-307c-4cc1-9373-6d0c4692d478",
  • "reference_number": "string",
  • "lines": [
    ]
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Fetch single adjustment

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the adjustment.

Responses

Response Schema:
id
integer <int64>

The internal ID for the adjustment.

created_at
string <date-time>

The time at which the adjustment was created.

reference_number
string or null

The user-provided reference number for the adjustment.

object

The warehouse to which this adjustment belongs.

Array of objects[ items ]

A list of tags assigned to this adjustment.

Array of objects[ items ]

A list of notes.

Array of objects[ items ]

A list of lines, each containing information about an adjustment to a given product.

object

Meta information about the adjustment.

Response samples

Content type
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "reference_number": "string",
  • "warehouse": {
    },
  • "tags": [
    ],
  • "notes": [
    ],
  • "lines": [
    ],
  • "meta": {
    }
}

Inventory • Adjustments Tags

The Adjustments Tags resource controls the list of tags on a given adjustment.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Inventory • Productions

The productions resource represents kit product assemblies and disassemblies.

  • An assembly consumes the kit's children and produces the parent kit product.
  • A disassembly consumes the parent kit product and produces the kit's children.

List productions

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
reference_number eq, not
date gt, gte, lt, lte
type eq, not
status eq, not
warehouse.id eq, not
product.id eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id reference_number date

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch single production

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the production.

Responses

Response Schema:
id
integer <int64>

The internal ID for the production.

reference_number
string

The user-provided reference number for the production.

date
string <date-time>

The date on the production. This is usually the date it was created in Goflow, but may be changed by the user.

type
string
Enum: assembly disassembly

The type of production.

status
string
Enum: in_progress completed closed unknown

The status of the production.

object

The warehouse this production is assigned to.

object

The amount of kits being assembled or disassembled.

object

The kit product being assembled or disassembled.

Array of objects[ items ]

A list production fulfillments. Each fulfillment represents kits that were assembled or disassembled at a specific time.

is_reserving_inventory
boolean or null

Whether the production is set to reserve inventory.

Array of objects[ items ]

A list of tags assigned to this production.

Array of objects[ items ]

A list of notes.

Response samples

Content type
{
  • "id": 0,
  • "reference_number": "string",
  • "date": "2019-08-24T14:15:22Z",
  • "type": "assembly",
  • "status": "in_progress",
  • "warehouse": {
    },
  • "quantity": {
    },
  • "product": {
    },
  • "fulfillments": [
    ],
  • "is_reserving_inventory": true,
  • "tags": [
    ],
  • "notes": [
    ]
}

Inventory • Productions Tags

The Productions Tags resource controls the list of tags on a given production.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Listings

The Listings resource represents the items on your stores.

Before diving into listings, it's important to understand the difference between products and listings in Goflow:

  • Products in Goflow serve as your single master catalog. The product contains all the information about your items. You have only one catalog of products.

  • Listings are catalogs of your items with the store. For each store you partner with, you have a separate set of listings.

Products and listings are connected through listing mapping. Each listing is mapped to a single product.

List listings • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
store_provided_id eq, not
status eq, not
sku eq, not
store.id eq, not
product.id eq, not, exists
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: store_provided_id sku store.id product.id

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Listings • Tags

The Listings Tags resource controls the list of tags on a given listing.

Add tags • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
internal-id
required
string

The internal ID for the listing.

Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
internal-id
required
string

The internal ID for the listing.

Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
internal-id
required
string

The internal ID for the listing.

Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Transfers

The Transfers resource represents inventory transfers between warehouses.

List transfers • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
reference_number eq, not
external_id eq, not
date gt, gte, lt, lte
status eq, not
warehouses.from.id eq, not
warehouses.from.type eq, not
warehouses.to.id eq, not
warehouses.to.type eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id reference_number external_id date

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Create transfer • beta

This endpoint has a rate limit of 30 requests per minute.

Request Body schema:
required
object

The transfer to create.

object or null

Miscellaneous options for the transfer.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "transfer": {
    },
  • "options": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Fetch single transfer • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the transfer.

Responses

Response Schema:
id
integer <int64>

The internal ID for the transfer.

reference_number
string or null

The user-provided reference number for the transfer.

external_id
string or null

The external ID for the transfer.

date
string <date-time>

The date on the transfer. This is usually the date it was created in Goflow, but may be changed by the user.

status
string
Enum: ready_to_pick ready_for_plan ready_to_pack packing ready_to_ship … 11 more

The status of the transfer.

object

The warehouses involved in the transfer.

Array of objects[ items ]

A list of line items, each containing information about a product in the transfer.

object or null

Information about the transfer's shipment.

is_reserving_inventory
boolean or null

Whether the transfer should reserve inventory in the from warehouse.

Array of objects[ items ]

A list of tags assigned to this transfer.

Array of objects[ items ]

A list of notes.

object

Meta information about the transfer.

Response samples

Content type
{
  • "id": 0,
  • "reference_number": "string",
  • "external_id": "string",
  • "date": "2019-08-24T14:15:22Z",
  • "status": "ready_to_pick",
  • "warehouses": {
    },
  • "lines": [
    ],
  • "shipment": {
    },
  • "is_reserving_inventory": true,
  • "tags": [
    ],
  • "notes": [
    ],
  • "meta": {
    }
}

Transfers • Tags

The Transfers Tags resource controls the list of tags on a given transfer.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Stores

The stores resource represents individual stores connected to Goflow.

Goflow generally imports store orders directly from the channel, sends live inventory updates, and sends shipment notifications (ASNs) and invoices for shipped orders, where applicable.

List stores • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
name eq, not
status eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id name

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch single store • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the store.

Responses

Response Schema:
id
integer <int64>

The internal ID for the store.

name
string

The user-specified name for the store.

channel
string
Enum: academy_sports ace_hardware amazon_dropship_europe amazon_dropship_uk amazon_dropship_usa … 163 more

The store type.

status
string
Enum: active inactive disconnected onboarding

The current status of the store.

status_updated_at
string or null <date-time>

The date and time when the status was last updated.

object

General settings for the store.

Response samples

Content type
{
  • "id": 0,
  • "name": "string",
  • "channel": "academy_sports",
  • "status": "active",
  • "status_updated_at": "2019-08-24T14:15:22Z",
  • "settings": {
    }
}

Stores • Channel Integration Details

The Store Channel endpoint returns details about requirements and feature support for the given store's channel integration.

Fetch channel integration details • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the store.

Responses

Response Schema:
channel
string
Enum: academy_sports ace_hardware amazon_dropship_europe amazon_dropship_uk amazon_dropship_usa … 163 more

The store type.

object

Details about canceling orders via the Goflow integration.

object

Details about acknowledging orders via the Goflow integration.

Response samples

Content type
{
  • "channel": "academy_sports",
  • "order_cancellation": {
    },
  • "order_acknowledgment": {
    }
}

Warehouses

The Warehouse resource represents warehouses that house physical products. Each product's inventory level is constantly kept up-to-date via different transactions (e.g. receipts, orders, transfers, productions, conversions, adjustments).

Warehouses in Goflow may represent your own warehouse, or a 3rd party's fulfillment center. See the type property for details.

List warehouses • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
name eq, not
type eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: name type

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch warehouse • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the warehouse.

Responses

Response Schema:
id
string <uuid>

The internal ID for the warehouse.

name
string

The user-defined name for this warehouse.

Note: Warehouse names never change.

type
string
Enum: standard barrett castle_gate deliverr deposco … 14 more

The type of warehouse. Either standard, or one of the many 3rd party fulfillment centers supported by Goflow.

object

General settings for the warehouse.

object

The warehouse's physical address.

Array of objects[ items ]

A list of user-defined tags assigned to this warehouse.

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "type": "standard",
  • "settings": {
    },
  • "address": {
    },
  • "tags": [
    ]
}

Warehouses • Tags

The Warehouses Tags resource controls the list of tags on a given warehouse.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Vendors

The vendors resource represents suppliers from which products are bought.

Vendors in Goflow are used for purchase orders, receipts and bills.

List vendors • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
name eq, not
status eq, not
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: id name

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch single vendor • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The internal ID for the vendor.

Responses

Response Schema:
id
integer <int64>

The internal ID for the vendor.

name
string

The user-defined vendor name, displayed everywhere in the app.

status
string
Enum: active inactive

The current status of the vendor.

currency
string
Enum: unknown afn all dzd aoa … 184 more

The currency used on purchase orders for this vendor.

Array of objects[ items ]

A list of user-defined tags assigned to this vendor.

Array of objects[ items ]

A list of notes.

Response samples

Content type
{
  • "id": 0,
  • "name": "string",
  • "status": "active",
  • "currency": "unknown",
  • "tags": [
    ],
  • "notes": [
    ]
}

Vendors • Products

The Vendor Products resource represents products in your vendors' catalog. Each product has your vendor's inventory level, letting Goflow constantly update your store listings with your vendor's inventory.

List vendor products • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
vendor_item_number eq, not
vendor.id eq, not
product.id eq, not, exists
inventory.expires_at gt, gte, lt, lte
updated_at gt, gte, lt, lte
tags.id eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Enum: vendor_item_number vendor.id product.id inventory.expires_at updated_at

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Vendors • Products Feeds

This resource allows you to post vendor products. This includes vendor prices, vendor inventory etc.

The feed may include new vendor products, as well as updates to vendor products already in Goflow.

Refer to the general feeds section for details on how to use feeds.

Submit vendor products • beta

This endpoint has a rate limit of 6 requests per hour per vendor-id.

path Parameters
vendor-id
required
string

The internal ID of the vendor

Request Body schema:
other_products
string
Default: ignore
Enum: ignore delete reset_to_zero

Determines what to do with vendor products that are not included in this feed.

  • ignore: Do nothing. Keep the other vendor products as is.
  • delete: Completely remove the other vendor products from Goflow.
  • reset_to_zero: Set their inventory.quantity to zero.
ignore_other_products_on_error
boolean
Default: true

Determines whether to ignore the other_products option when the feed contains errors for some products.

When true, if any request in this feed has an error, the other vendor products will be kept as is — regardless of the specified other_products option.

inventory_expires_at
string or null <date-time>

The day until the inventory.quantity is considered reliable.

From the day of expiration, Goflow will consider the vendor's inventory.quantity for these products as zero.

Note: When null, the vendor's inventory.quantity for these products will never expire.

required
Array of objects [ 1 .. 25000 ] items [ items ]

A list of vendor products to submit.

Responses

Response Schema:
id
integer <int64>

The ID of the new feed.

location
string

The URL from which to get the results.

Request samples

Content type
{
  • "other_products": "ignore",
  • "ignore_other_products_on_error": true,
  • "inventory_expires_at": "2019-08-24T14:15:22Z",
  • "requests": [
    ]
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Fetch feed responses • beta

This endpoint has a rate limit of 12 requests per minute per vendor-id.

path Parameters
id
required
integer <int64>

The ID of the feed

vendor-id
required
string

The internal ID of the vendor

Responses

Response Schema:
status
string
Enum: pending done
Array of objects or null

A list of error responses, if any, available once the feed is done processing.

Response samples

Content type
{
  • "status": "pending",
  • "responses": [
    ]
}

Vendors • Tags

The Vendors Tags resource controls the list of tags on a given vendor.

Add tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to add.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Replace tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The new list of tags that will replace the current list of tags.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Remove tags

This endpoint has a rate limit of 30 requests per minute.

path Parameters
id
required
string
Request Body schema:
required
Array of objects[ items ]

The list of tags to remove.

Responses

Request samples

Content type
{
  • "tags": [
    ]
}

Tags

The tags resource represents the list of user-defined tags that are available for each resource type.

Note: A maximum of 200 tags may be created for each resource type.

Fetch tag • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
resource-type
required
string

The type of resource for which this tag is available.

id
required
string

The internal ID for the tag.

Responses

Response Schema:
name
string
id
string

The internal ID for the tag.

resource_type
string
Enum: adjustments bills customers conversions listings … 11 more

The type of resource for which this tag is available.

color
string
Enum: black gray white blue green … 3 more

The color used when displaying this tag.

Response samples

Content type
{
  • "name": "string",
  • "id": "string",
  • "resource_type": "adjustments",
  • "color": "black"
}

Update tag • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
resource-type
required
string
Enum: adjustments bills customers conversions listings … 11 more

The type of resource for which this tag is available.

id
required
string

The internal ID for the tag.

Request Body schema:
name
required
string non-empty ^[^,]+$

The name to use when displaying this tag.

color
required
string
Enum: black gray white blue green … 3 more

The color to use when displaying this tag.

Responses

Response Schema:
id
string

The internal ID of the modified resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "name": "string",
  • "color": "black"
}

Response samples

Content type
{
  • "id": "string",
  • "location": "string"
}

Delete tag • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
resource-type
required
string

The type of resource for which this tag is available.

id
required
string

The internal ID for the tag.

Responses

List tags • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
resource-type
required
string
Enum: adjustments bills customers conversions listings … 11 more

The type of resource for which this tag is available.

Responses

Response Schema:
Array
name
string
id
string

The internal ID for the tag.

resource_type
string
Enum: adjustments bills customers conversions listings … 11 more

The type of resource for which this tag is available.

color
string
Enum: black gray white blue green … 3 more

The color used when displaying this tag.

Response samples

Content type
[
  • {
    }
]

Create tag • beta

This endpoint has a rate limit of 30 requests per minute.

path Parameters
resource-type
required
string
Enum: adjustments bills customers conversions listings … 11 more

The type of resource for which this tag is available.

Request Body schema:
name
required
string non-empty ^[^,]+$

The name to use when displaying this tag.

color
required
string
Enum: black gray white blue green … 3 more

The color to use when displaying this tag.

Responses

Response Schema:
id
string

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "name": "string",
  • "color": "black"
}

Response samples

Content type
{
  • "id": "string",
  • "location": "string"
}

Reports

The reports resource provides the status and metadata for requested reports, along with a link to the generated report file.

Refer to the general reports section for details on how to generate and download reports.

List reports • beta

This endpoint has a rate limit of 60 requests per minute.

query Parameters
object
Field Operators
id eq, not
status eq, not

Refer to the general filters section for details on how to use these filters.

sort
string
Value: id

The field by which to sort the results.

sort_direction
string
Enum: asc desc

The direction of the sort.

Responses

Response Schema:
Array of objects[ items ]
next
string or null

A link to the next page of results.

Response samples

Content type
{
  • "data": [
    ],
  • "next": "string"
}

Fetch single report • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
id
required
string

The ID of the report

Responses

Response Schema:
id
integer <int64>

The ID of the report.

status
string
Enum: queued processing completed error

The current status of the report.

object

Details about the original request to generate the report.

object or null

Details about any error that occured while generating the report. Provided when status is error.

object or null

Details about the completed, generated report. Provided when status is completed.

object

Meta information about the report.

Response samples

Content type
{
  • "id": 0,
  • "status": "queued",
  • "request": {
    },
  • "error": {
    },
  • "completed": {
    },
  • "meta": {
    }
}

Delete a report • beta

This endpoint has a rate limit of 30 requests per minute.

Note: Reports that are currently processing cannot be deleted.

path Parameters
id
required
string

The ID of the report

Responses

Reports • Inventory

The inventory reports resource provides the ability to request multiple different inventory reports.

Reports are generated asynchronously. Refer to the general reports section for details on how to generate and download reports.

Counts • beta

This endpoint has a rate limit of 6 requests per hour.

This report has a quota limit of 1,000,000 records per day.

Generate a report on inventory counts.

Request Body schema:
columns
required
Array of strings non-empty

The columns to include in the report.

Field Type
warehouse_id integer
The internal ID for the warehouse.
warehouse_name string
The user-provided name for the warehouse.
product_id integer
The internal ID for the product.
product_item_number string
The user-defined item number, displayed everywhere in the app.
product_status enum (active, inactive)
The current status of the product.
product_name string or null
The product's short name.
product_condition string or null
The product condition (such as "New", "Used", "Refurbished").
product_brand string or null
The product's brand.
product_manufacturer string or null
The product's manufacturer.
product_category string or null
The product category.
product_buyer_user_name string or null
The user responsible for purchasing the product.
available integer
The count of inventory available (i.e. not `reserved`) in the warehouse.
awaiting_production integer
The count of inventory awaiting to be created from outstanding productions.
awaiting_transfer integer
The count of inventory awaiting transfer from another warehouse.
in_transit integer
The count of inventory being transported from another warehouse.
on_hand integer
The count of inventory in the warehouse.
on_production integer
The count of inventory in the warehouse reserved for outstanding productions.
on_purchase_order integer
The count of inventory purchased that has not been received yet.
on_sales_order integer
The count of inventory in the warehouse reserved for outstanding orders.
on_transfer integer
The count of inventory in the warehouse reserved for outstanding transfers out of the warehouse.
inventory integer
The count of total inventory in the warehouse, including `in_transit` into the warehouse.
reported_available integer or null
The count of inventory reported by the 3rd-party warehouse as available, if any.
reported_in_internal_transit integer or null
The count of inventory reported by the 3rd-party warehouse as currently being transferred internally between their warehouses, if any.
reported_on_hand integer or null
The count of inventory reported by the 3rd-party warehouse, if any.
reserved integer
The count of inventory in the warehouse reserved for outstanding transactions.

At least one of the following columns is required:

warehouse_id, warehouse_name, product_id, product_item_number, product_status, product_name, product_condition, product_brand, product_manufacturer, product_category, product_buyer_user_name

Array of objects or null

A list of fields by which to sort the results.

limit
integer <int32> [ 1 .. 1000000 ]
Default: 1000000

The maximum number of records to generate in the report.

Reports do not use pagination, so this field is primarily useful for testing purposes, allowing you to limit results and conserve your quota while experimenting with the API.

format
string
Default: json
Enum: json jsonl csv

The format in which to return the results.

Note: jsonl represents JSON Lines, which is a convenient format for streaming structured data that may be processed one record at a time, with a minimal amount of memory.

object or null

Filters by which to constrain the report records.

object or null

Miscellaneous options for the report.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "columns": [
    ],
  • "order_by": [
    ],
  • "limit": 1000000,
  • "format": "json",
  • "filters": {
    },
  • "options": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Aging • beta

This endpoint has a rate limit of 6 requests per hour.

This report has a quota limit of 200,000 records per day.

Generate a report on the duration that products have been sitting in inventory.

Request Body schema:
columns
required
Array of strings non-empty

The columns to include in the report.

Field Type
product_id integer
The internal ID for the product.
product_item_number string
The user-defined item number, displayed everywhere in the app.
product_status enum (active, inactive)
The current status of the product.
product_name string or null
The product's short name.
product_condition string or null
The product condition (such as "New", "Used", "Refurbished").
product_brand string or null
The product's brand.
product_manufacturer string or null
The product's manufacturer.
product_category string or null
The product category.
product_buyer_user_name string or null
The user responsible for purchasing the product.
age_0_to_180 integer
The number of units aged between 0-180 days.
age_180_to_365 integer
The number of units aged between 180-365 days.
age_0_to_30 integer
The number of units aged between 0-30 days.
age_30_to_60 integer
The number of units aged between 30-60 days.
age_60_to_90 integer
The number of units aged between 60-90 days.
age_90_to_120 integer
The number of units aged between 90-120 days.
age_120_to_150 integer
The number of units aged between 120-150 days.
age_150_to_180 integer
The number of units aged between 150-180 days.
age_0_to_90 integer
The number of units aged between 0-90 days.
age_90_to_180 integer
The number of units aged between 90-180 days.
age_180_to_270 integer
The number of units aged between 180-270 days.
age_270_to_365 integer
The number of units aged between 270-365 days.
age_365_plus integer
The number of units aged more than 365 days.

At least one of the following columns is required:

product_id, product_item_number, product_status, product_name, product_condition, product_brand, product_manufacturer, product_category, product_buyer_user_name

Array of objects or null

A list of fields by which to sort the results.

limit
integer <int32> [ 1 .. 1000000 ]
Default: 1000000

The maximum number of records to generate in the report.

Reports do not use pagination, so this field is primarily useful for testing purposes, allowing you to limit results and conserve your quota while experimenting with the API.

format
string
Default: json
Enum: json jsonl csv

The format in which to return the results.

Note: jsonl represents JSON Lines, which is a convenient format for streaming structured data that may be processed one record at a time, with a minimal amount of memory.

object or null

Filters by which to constrain the report records.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "columns": [
    ],
  • "order_by": [
    ],
  • "limit": 1000000,
  • "format": "json",
  • "filters": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Values • beta

This endpoint has a rate limit of 6 requests per hour.

This report has a quota limit of 200,000 records per day.

Generate a report on the cost of current inventory.

Request Body schema:
columns
required
Array of strings non-empty

The columns to include in the report.

Field Type
warehouse_id integer
The internal ID for the warehouse.
warehouse_name string
The user-provided name for the warehouse.
product_id integer
The internal ID for the product.
product_item_number string
The user-defined item number, displayed everywhere in the app.
product_status enum (active, inactive)
The current status of the product.
product_name string or null
The product's short name.
product_condition string or null
The product condition (such as "New", "Used", "Refurbished").
product_brand string or null
The product's brand.
product_manufacturer string or null
The product's manufacturer.
product_category string or null
The product category.
product_buyer_user_name string or null
The user responsible for purchasing the product.
inventory integer
The count of total inventory in the warehouse, including `in_transit` into the warehouse.
inventory_value number
The total cost of the inventory, including `in_transit`, in the warehouse.
inventory_value_average number
The average per-unit cost of the inventory, including `in_transit`, in the warehouse.
on_hand integer
The count of inventory in the warehouse.
on_hand_value number
The total cost of the inventory `on_hand` in the warehouse.
on_hand_value_average number
The average per-unit cost of the inventory `on_hand` in the warehouse.
available integer
The count of inventory available (i.e. not `reserved`) in the warehouse.
available_value number
The total cost of the inventory `available` (i.e. not `reserved`) in the warehouse.
available_value_average number
The average per-unit cost of the inventory `available` (i.e. not `reserved`) in the warehouse.
in_transit integer
The count of inventory being transported from another warehouse.
in_transit_value number
The total cost of the inventory being transported from another warehouse.
in_transit_value_average number
The average per-unit cost of the inventory being transported from another warehouse.

At least one of the following columns is required:

warehouse_id, warehouse_name, product_id, product_item_number, product_status, product_name, product_condition, product_brand, product_manufacturer, product_category, product_buyer_user_name

Array of objects or null

A list of fields by which to sort the results.

limit
integer <int32> [ 1 .. 1000000 ]
Default: 1000000

The maximum number of records to generate in the report.

Reports do not use pagination, so this field is primarily useful for testing purposes, allowing you to limit results and conserve your quota while experimenting with the API.

format
string
Default: json
Enum: json jsonl csv

The format in which to return the results.

Note: jsonl represents JSON Lines, which is a convenient format for streaming structured data that may be processed one record at a time, with a minimal amount of memory.

object or null

Filters by which to constrain the report records.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "columns": [
    ],
  • "order_by": [
    ],
  • "limit": 1000000,
  • "format": "json",
  • "filters": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Batches • beta

This endpoint has a rate limit of 6 requests per hour.

This report has a quota limit of 100,000 records per day.

Generate a report on FIFO batches of inventory.

Request Body schema:
columns
required
Array of strings non-empty

The columns to include in the report.

Field Type
product_id integer
The internal ID for the product.
product_item_number string
The user-defined item number, displayed everywhere in the app.
product_status enum (active, inactive)
The current status of the product.
product_name string or null
The product's short name.
product_condition string or null
The product condition (such as "New", "Used", "Refurbished").
product_brand string or null
The product's brand.
product_manufacturer string or null
The product's manufacturer.
product_category string or null
The product category.
product_buyer_user_name string or null
The user responsible for purchasing the product.
created_at date
The date on which this batch was created.
transaction_type enum (adjustment, conversion, production, receipt)
The type of transaction that generated this batch.
transaction_reference_number string or null
The reference number of the transaction that generated this batch.
status enum (open, closed)
The current status of the batch.
age integer
The count of days since this batch was created, if the `status` is still `open`.
units integer
The number of units of this product created in this batch.
consumed integer
The number of units from this batch already used up.
open integer
The number of units from this batch not used up yet.
cost number
The per-unit cost in this batch. Includes both direct and indirect cost (AKA landed cost).
direct_cost number
The per-unit cost, directly paid to your vendor.
indirect_cost number
The per-unit indirect cost (e.g. insurance, customs fees) recorded by the user for this batch.

At least one of the following columns is required:

product_id, product_item_number, product_status, product_name, product_condition, product_brand, product_manufacturer, product_category, product_buyer_user_name, created_at, transaction_type, transaction_reference_number, status

Array of objects or null

A list of fields by which to sort the results.

limit
integer <int32> [ 1 .. 1000000 ]
Default: 1000000

The maximum number of records to generate in the report.

Reports do not use pagination, so this field is primarily useful for testing purposes, allowing you to limit results and conserve your quota while experimenting with the API.

format
string
Default: json
Enum: json jsonl csv

The format in which to return the results.

Note: jsonl represents JSON Lines, which is a convenient format for streaming structured data that may be processed one record at a time, with a minimal amount of memory.

object or null

Filters by which to constrain the report records.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "columns": [
    ],
  • "order_by": [
    ],
  • "limit": 1000000,
  • "format": "json",
  • "filters": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

History by product • beta

This endpoint has a rate limit of 6 requests per hour.

This report has a quota limit of 100,000 records per day.

Generate a report based on historical snapshots of daily inventory for a specific product.

path Parameters
id
required
integer <int64>

The internal ID of the product

Request Body schema:
columns
required
Array of strings non-empty

The columns to include in the report.

Field Type
warehouse_id integer
The internal ID for the warehouse.
warehouse_name string
The user-provided name for the warehouse.
product_item_number string
The user-defined item number, displayed everywhere in the app.
date date
The date of the inventory snapshot.
on_hand integer
The count of inventory in the warehouse.
in_transit integer
The count of inventory being transported from another warehouse.
available integer
The count of inventory available (i.e. not `reserved`) in the warehouse.
on_purchase_order integer
The count of inventory purchased that has not been received yet.
value number
The total cost of the inventory on hand in the warehouse.

At least one of the following columns is required:

warehouse_id, warehouse_name, product_item_number, date

Array of objects or null

A list of fields by which to sort the results.

limit
integer <int32> [ 1 .. 1000000 ]
Default: 1000000

The maximum number of records to generate in the report.

Reports do not use pagination, so this field is primarily useful for testing purposes, allowing you to limit results and conserve your quota while experimenting with the API.

format
string
Default: json
Enum: json jsonl csv

The format in which to return the results.

Note: jsonl represents JSON Lines, which is a convenient format for streaming structured data that may be processed one record at a time, with a minimal amount of memory.

object or null

Filters by which to constrain the report records.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "columns": [
    ],
  • "order_by": [
    ],
  • "limit": 1000000,
  • "format": "json",
  • "filters": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

History by date • beta

This endpoint has a rate limit of 6 requests per hour.

This report has a quota limit of 1,000,000 records per day.

Generate a report based on historical snapshots of inventory for a specific date.

path Parameters
date
required
string <date-time>

The date of the snapshot

Request Body schema:
columns
required
Array of strings non-empty

The columns to include in the report.

Field Type
warehouse_id integer
The internal ID for the warehouse.
warehouse_name string
The user-provided name for the warehouse.
product_id integer
The internal ID for the product.
product_item_number string
The user-defined item number, displayed everywhere in the app.
product_status enum (active, inactive)
The current status of the product.
product_name string or null
The product's short name.
product_condition string or null
The product condition (such as "New", "Used", "Refurbished").
product_brand string or null
The product's brand.
product_manufacturer string or null
The product's manufacturer.
product_category string or null
The product category.
product_buyer_user_name string or null
The user responsible for purchasing the product.
on_hand integer
The count of inventory in the warehouse.
in_transit integer
The count of inventory being transported from another warehouse.
available integer
The count of inventory available (i.e. not `reserved`) in the warehouse.
on_purchase_order integer
The count of inventory purchased that has not been received yet.
value number
The total cost of the inventory on hand in the warehouse.

At least one of the following columns is required:

warehouse_id, warehouse_name, product_id, product_item_number, product_status, product_name, product_condition, product_brand, product_manufacturer, product_category, product_buyer_user_name

Array of objects or null

A list of fields by which to sort the results.

limit
integer <int32> [ 1 .. 1000000 ]
Default: 1000000

The maximum number of records to generate in the report.

Reports do not use pagination, so this field is primarily useful for testing purposes, allowing you to limit results and conserve your quota while experimenting with the API.

format
string
Default: json
Enum: json jsonl csv

The format in which to return the results.

Note: jsonl represents JSON Lines, which is a convenient format for streaming structured data that may be processed one record at a time, with a minimal amount of memory.

object or null

Filters by which to constrain the report records.

object or null

Miscellaneous options for the report.

Responses

Response Schema:
id
integer <int64>

The internal ID of the newly-created resource.

location
string

The URL from which to get the resource.

Request samples

Content type
{
  • "columns": [
    ],
  • "order_by": [
    ],
  • "limit": 1000000,
  • "format": "json",
  • "filters": {
    },
  • "options": {
    }
}

Response samples

Content type
{
  • "id": 0,
  • "location": "string"
}

Reports • Quotas

The reports quotas resource returns ongoing details about the current state of the quotas for each report. It describes how many records are allowed per period, how many were already generated, how many are still available etc.

Refer to the general reports section for details on how to use reports.

Fetch report quota • beta

This endpoint has a rate limit of 60 requests per minute.

path Parameters
type
required
string
Enum: inventory_counts inventory_aging inventory_values inventory_batches inventory_history_by_product … 1 more

Responses

Response Schema:
object

The quota policy for this report type.

consumed
integer <int64>

The amount of records that were generated within the current period (see quota.per_period). May also include rollovers - see the general quotas section for more details.

available
integer <int64>

The amount of records still available within the current period (see quota.per_period). Note that this may actually be a negative number, if there are existing rollovers - see the general quotas section for more details.

replenishes_at
string <date-time>

The time at which the next period starts (see quotas.per_period).

Response samples

Content type
{
  • "quota": {
    },
  • "consumed": 0,
  • "available": 0,
  • "replenishes_at": "2019-08-24T14:15:22Z"
}