Project

printfulrb

0.0
No release in over a year
A Ruby library for interacting with the Printful API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

~> 2.0
 Project Readme

PrintfulRB

This library is a work in progress

PrintfulRB is a Ruby library for interacting with the Printful API.

Installation

Add this line to your application's Gemfile:

gem 'printfulrb'

Usage

Authentication

The Printful API requires authentication with an access token.

@client = Printful::Client.new(access_token: "abc123")

If you have an account level token, you can set a Store ID like so:

@client = Printful::Client.new(store_id: 123, access_token: "abc123")

Stores

# Retrieve a list of stores depending on token access
@client.stores.list

# Retrieve store info
@client.stores.retrieve id: 123

Catalog

# Retrieve a list of Products available on Printful
@client.catalog.products
@client.catalog.products(category: 123)

# Retrieve a product by its ID
@client.catalog.product id: "123"

# Retrieve information for a variant
@client.catalog.variant id: "123"

# Retrieve information about size guides for a product
@client.catalog.product_sizes id: "123"

# Retrieve a list of Catalog Categories on Printful
@client.catalog.categories

# Retrieve a category by its ID
@client.catalog.category id: "123"

Products

# Returns a list of products for a store
@client.products.list

# Retrieve a product
@client.products.retrieve id: 123123

# Create a product
# More info: https://developers.printful.com/docs/#operation/createSyncProduct
@client.products.create product: {name: "My Product"}, variants: [{variant_id: 4011, retail_price: "20.00", files: [{url: "http://myfileurl.com/file.png"}]}]

# Update a product
# More info: https://developers.printful.com/docs/#operation/updateSyncProduct
@client.products.update id: 123123, product: {name: "My Product"}, variants: [{variant_id: 4011, retail_price: "20.00", files: [{url: "http://myfileurl.com/file.png"}]}]

# Delete a product
@client.products.delete id: 123123

Product Variants

# Retrieve a variant
@client.variants.retrieve id: 123123

# Create a variant
# ID would be the Product ID
# More info: https://developers.printful.com/docs/#operation/createSyncVariant
@client.variants.create id: 123123, variant_id: 4011, retail_price: "20.00", files: [{url: "http://myfileurl.com/file.png"}]

# Update a variant
# More info: https://developers.printful.com/docs/#operation/updateSyncVariant
@client.variants.update id: 123123, retail_price: "25.00"

# Delete a variant
@client.variants.delete id: 123123

Product Templates

# List all product templates
@client.product_templates.list

# Retrieve a product template
@client.product_templates.retrieve id: 123123

# Delete a product template
@client.product_templates.delete id: 123123

Orders

# List all orders
@client.orders.list

# Retrieve an order
@client.order.retrieve id: 123123

# Create an order
# More info: https://developers.printful.com/docs/#operation/createOrder
@client.orders.create recipient: {}, items: []

# Estimate order costs
# More info: https://developers.printful.com/docs/#operation/estimateOrderCosts
@client.orders.estimate recipient: {}, items: []

# Update an order
# More info: https://developers.printful.com/docs/#operation/updateOrderById
@client.orders.update id: 123123, recipient: {}, items: []

# Cancel an order
@client.orders.cancel id: 123123

# Confirm an order
@client.orders.confirm id: 123123

Files

# Retrieve a file
@client.files.retrieve id: 123123

# Create a file
# More info: https://developers.printful.com/docs/#operation/addFile
@client.files.create url: "https://myfileurl.com/file.png"

Shipping Rates

# Returns available shipping options and rates for a given list of products
# More info: https://developers.printful.com/docs/#operation/calculateShippingRates
@client.shipping_rates.calculate recipient: {}, items: []

Mockup Generator

This API is complex and you'll need to read through the API docs to learn how to use it properly.

# Retrieve a list of templates that can be used for client-side positioning
@client.mockup_generator.templates id: 123

# Retrieve a list of print files for a product
@client.mockup_generator.printfiles id: 123

# Create a Mockup Generator task
# This API is rate limited
# More info: https://developers.printful.com/docs/#operation/createGeneratorTask
@client.mockup_generator.create id: 123, variant_ids: [123], files: [{placement: "front", url: "https://host.com/file.png", position: {}}]

# Retrieve mockup generator task result
@client.mockup_generator.retrieve id: "abc123"

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/deanpcmad/printfulrb.

License

The gem is available as open source under the terms of the MIT License.