DevelopersAPI reference

Production API

REST endpoints for production in SKUFlow: 8 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
The production boardGET /organizations/{organizationId}/production/jobsread
Move or schedule a jobPATCH /organizations/{organizationId}/production/jobs/{jobId}write
The production scheduleGET /organizations/{organizationId}/production/scheduleread
Plan unscheduled jobsPOST /organizations/{organizationId}/production/schedulewrite
List presses and machinesGET /organizations/{organizationId}/production/resourcesread
Add a press or machinePOST /organizations/{organizationId}/production/resourceswrite
Change a press or machinePATCH /organizations/{organizationId}/production/resources/{resourceId}write
Delete a press or machineDELETE /organizations/{organizationId}/production/resources/{resourceId}sensitive

The production board

GET /organizations/{organizationId}/production/jobs

Jobs of open orders (one per design placement): status (WAITING until the order is ready, QUEUED, IN_PROGRESS, DONE with includeDone), the order (in-hands date, rush, customer), method, press and day. Filter by status, press, method type, order, scheduled range or unscheduled. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolproductionJobs_list (toolset orders)

Parameters

NameInTypeRequiredDescription
statusqueryenumNoWAITING (the order isn't ready), QUEUED, IN_PROGRESS, DONE. One of WAITING, QUEUED, IN_PROGRESS, DONE.
resourceIdquerystringNo
methodTypequeryenumNoA decoration method type. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT.
orderIdquerystringNo
fromquerystringNoA calendar date in the business's own calendar, YYYY-MM-DD.
toquerystringNoA calendar date in the business's own calendar, YYYY-MM-DD.
unscheduledquerybooleanNo
includeDonequerybooleanNo

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/jobs" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstringJob id.
items[].orderIdstring
items[].namestring
items[].designIdstring or null
items[].areaNamestring or null
items[].methodIdstring or null
items[].methodTypeenum or nullA decoration method type. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT.
items[].quantityinteger
items[].statusenumWAITING (the order isn't ready), QUEUED, IN_PROGRESS, DONE. One of WAITING, QUEUED, IN_PROGRESS, DONE.
items[].outsourcedbooleanSent to an outsourced decorator (vendorId).
items[].vendorIdstring or null
items[].resourceIdstring or nullThe press or machine it is planned on.
items[].scheduledDatestring or null
items[].sortOrderinteger
items[].estimatedMinutesinteger
items[].assignedUserIdstring or null
items[].startedAtstring (date-time) or null
items[].completedAtstring (date-time) or null
items[].notesstring or null
items[].orderobject
items[].order.idstring
items[].order.identifierstring
items[].order.titlestring
items[].order.statusenumAWAITING_ART, AWAITING_PAYMENT, AWAITING_GOODS (gates, moved by the server), READY (for production), IN_PRODUCTION, READY_TO_SHIP, SHIPPED, COMPLETED, ON_HOLD, CANCELLED. One of AWAITING_ART, AWAITING_PAYMENT, AWAITING_GOODS, READY, IN_PRODUCTION, READY_TO_SHIP, SHIPPED, COMPLETED, ON_HOLD, CANCELLED.
items[].order.dueDatestring or null
items[].order.rushboolean
items[].resourceobject or null
items[].resource.idstring
items[].resource.namestring
items[].vendorobject or null
items[].vendor.idstring
items[].vendor.namestring
items[].methodobject or null
items[].method.idstring
items[].method.namestring
items[].designobject or null
items[].design.idstring
items[].design.namestring
todaystring

Move or schedule a job

PATCH /organizations/{organizationId}/production/jobs/{jobId}

Moves a job on the board: status (starting the first job starts its order's production; finishing the last makes the order ready to ship), resourceId (a press that runs its method; null unschedules) and scheduledDate, sortOrder, assignedUserId, notes. A job of an order still waiting on its gates can't start (409).

Permissionproduction.manage (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolproductionJobs_update (toolset orders)

Parameters

NameInTypeRequiredDescription
jobIdpathstringYes

Request body

FieldTypeRequiredDescription
statusenumNoWAITING (the order isn't ready), QUEUED, IN_PROGRESS, DONE. One of WAITING, QUEUED, IN_PROGRESS, DONE.
resourceIdstring or nullNo
scheduledDatestring or nullNoA calendar date in the business's own calendar, YYYY-MM-DD.
sortOrderintegerNo0–100000.
assignedUserIdstring or nullNoA team member's user id (GET /team).
notesstring or nullNoUp to 2000 characters.

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/jobs/{jobId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"WAITING","resourceId":"resource_id","scheduledDate":"2026-11-03"}'

Response

200: the answer's fields
FieldTypeDescription
idstringJob id.
orderIdstring
namestring
designIdstring or null
areaNamestring or null
methodIdstring or null
methodTypeenum or nullA decoration method type. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT.
quantityinteger
statusenumWAITING (the order isn't ready), QUEUED, IN_PROGRESS, DONE. One of WAITING, QUEUED, IN_PROGRESS, DONE.
outsourcedbooleanSent to an outsourced decorator (vendorId).
vendorIdstring or null
resourceIdstring or nullThe press or machine it is planned on.
scheduledDatestring or null
sortOrderinteger
estimatedMinutesinteger
assignedUserIdstring or null
startedAtstring (date-time) or null
completedAtstring (date-time) or null
notesstring or null
orderobject
order.idstring
order.identifierstring
order.titlestring
order.statusenumAWAITING_ART, AWAITING_PAYMENT, AWAITING_GOODS (gates, moved by the server), READY (for production), IN_PRODUCTION, READY_TO_SHIP, SHIPPED, COMPLETED, ON_HOLD, CANCELLED. One of AWAITING_ART, AWAITING_PAYMENT, AWAITING_GOODS, READY, IN_PRODUCTION, READY_TO_SHIP, SHIPPED, COMPLETED, ON_HOLD, CANCELLED.
order.dueDatestring or null
order.rushboolean
resourceobject or null
resource.idstring
resource.namestring
vendorobject or null
vendor.idstring
vendor.namestring
methodobject or null
method.idstring
method.namestring
designobject or null
design.idstring
design.namestring

The production schedule

GET /organizations/{organizationId}/production/schedule

Each active press's planned minutes against its capacity, day by day from from (default today) for days (default 14, at most 62), with the open jobs. over marks a day planned past capacity. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolproductionJobs_schedule (toolset orders)

Parameters

NameInTypeRequiredDescription
fromquerystringNoA calendar date in the business's own calendar, YYYY-MM-DD.
daysqueryintegerNo1–62.

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/schedule" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
fromstring
daysinteger
resourcesarray of object
resources[].idstringPress or machine id.
resources[].namestring
resources[].methodTypesarray of enumThe methods it runs; empty = any.
resources[].unitsPerHournumber
resources[].setupMinutesinteger
resources[].hoursPerDaynumber
resources[].workDaysarray of integerISO weekdays it runs: 1 = Monday … 7 = Sunday.
resources[].activeboolean
resources[].sortOrderinteger
resources[].notesstring or null
loadsobject
jobsarray of object
jobs[].idstringJob id.
jobs[].orderIdstring
jobs[].namestring
jobs[].designIdstring or null
jobs[].areaNamestring or null
jobs[].methodIdstring or null
jobs[].methodTypeenum or nullA decoration method type. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT.
jobs[].quantityinteger
jobs[].statusenumWAITING (the order isn't ready), QUEUED, IN_PROGRESS, DONE. One of WAITING, QUEUED, IN_PROGRESS, DONE.
jobs[].outsourcedbooleanSent to an outsourced decorator (vendorId).
jobs[].vendorIdstring or null
jobs[].resourceIdstring or nullThe press or machine it is planned on.
jobs[].scheduledDatestring or null
jobs[].sortOrderinteger
jobs[].estimatedMinutesinteger
jobs[].assignedUserIdstring or null
jobs[].startedAtstring (date-time) or null
jobs[].completedAtstring (date-time) or null
jobs[].notesstring or null
jobs[].orderobject
jobs[].order.idstring
jobs[].order.identifierstring
jobs[].order.titlestring
jobs[].order.statusenumAWAITING_ART, AWAITING_PAYMENT, AWAITING_GOODS (gates, moved by the server), READY (for production), IN_PRODUCTION, READY_TO_SHIP, SHIPPED, COMPLETED, ON_HOLD, CANCELLED. One of AWAITING_ART, AWAITING_PAYMENT, AWAITING_GOODS, READY, IN_PRODUCTION, READY_TO_SHIP, SHIPPED, COMPLETED, ON_HOLD, CANCELLED.
jobs[].order.dueDatestring or null
jobs[].order.rushboolean
jobs[].resourceobject or null
jobs[].resource.idstring
jobs[].resource.namestring
jobs[].vendorobject or null
jobs[].vendor.idstring
jobs[].vendor.namestring
jobs[].methodobject or null
jobs[].method.idstring
jobs[].method.namestring
jobs[].designobject or null
jobs[].design.idstring
jobs[].design.namestring

Plan unscheduled jobs

POST /organizations/{organizationId}/production/schedule

Plans unscheduled jobs (all, or jobIds) onto presses by capacity from from: rush first, then the earliest in-hands date, each on the press that runs its method and fits it soonest. apply: true saves the plan; otherwise it is only proposed. Answers the suggestions (with late when after the in-hands date) and the jobs no press runs.

Permissionproduction.manage (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolproductionJobs_autoSchedule (toolset orders)

Request body

FieldTypeRequiredDescription
fromstringNoA calendar date in the business's own calendar, YYYY-MM-DD.
jobIdsarray of stringNoUp to 1000 items.
applybooleanNo

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/schedule" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-11-03","jobIds":["job_id"],"apply":true}'

Response

200: the answer's fields
FieldTypeDescription
suggestionsarray of object
suggestions[].jobIdstring
suggestions[].resourceIdstring
suggestions[].scheduledDatestring
suggestions[].estimatedMinutesinteger
suggestions[].lateboolean
unplacedarray of string
appliedboolean

List presses and machines

GET /organizations/{organizationId}/production/resources

The shop's presses, embroidery machines, printers and stations: the methods each runs, units per hour, set-up minutes, hours per day and working days. includeInactive adds retired ones. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolproductionResources_list (toolset orders)

Parameters

NameInTypeRequiredDescription
includeInactivequerybooleanNo

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/resources" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstringPress or machine id.
items[].namestring
items[].methodTypesarray of enumThe methods it runs; empty = any.
items[].unitsPerHournumber
items[].setupMinutesinteger
items[].hoursPerDaynumber
items[].workDaysarray of integerISO weekdays it runs: 1 = Monday … 7 = Sunday.
items[].activeboolean
items[].sortOrderinteger
items[].notesstring or null

Add a press or machine

POST /organizations/{organizationId}/production/resources

Adds a press or machine for the schedule. Names are unique. Defaults: any method, 100 units an hour, 15 minutes set-up, 8 hours a day, Monday to Friday.

Permissionproduction.settings (Owner, Admin)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolproductionResources_create (toolset orders)

Request body

FieldTypeRequiredDescription
namestringYesUp to 120 characters.
methodTypesarray of enumNoUp to 10 items.
unitsPerHournumberNo1–100000.
setupMinutesintegerNo0–1440.
hoursPerDaynumberNo0.5–24.
workDaysarray of integerNoUp to 7 items.
activebooleanNo
sortOrderintegerNo0–1000.
notesstring or nullNoUp to 2000 characters.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/resources" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield"}'

Response

201: the answer's fields
FieldTypeDescription
idstringPress or machine id.
namestring
methodTypesarray of enumThe methods it runs; empty = any.
unitsPerHournumber
setupMinutesinteger
hoursPerDaynumber
workDaysarray of integerISO weekdays it runs: 1 = Monday … 7 = Sunday.
activeboolean
sortOrderinteger
notesstring or null

Change a press or machine

PATCH /organizations/{organizationId}/production/resources/{resourceId}

Changes the fields sent. Jobs already planned keep their estimate until moved. active: false retires it.

Permissionproduction.settings (Owner, Admin)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolproductionResources_update (toolset orders)

Parameters

NameInTypeRequiredDescription
resourceIdpathstringYes

Request body

FieldTypeRequiredDescription
namestringNoUp to 120 characters.
methodTypesarray of enumNoUp to 10 items.
unitsPerHournumberNo1–100000.
setupMinutesintegerNo0–1440.
hoursPerDaynumberNo0.5–24.
workDaysarray of integerNoUp to 7 items.
activebooleanNo
sortOrderintegerNo0–1000.
notesstring or nullNoUp to 2000 characters.

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/resources/{resourceId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","methodTypes":["SCREEN_PRINT"],"unitsPerHour":1}'

Response

200: the answer's fields
FieldTypeDescription
idstringPress or machine id.
namestring
methodTypesarray of enumThe methods it runs; empty = any.
unitsPerHournumber
setupMinutesinteger
hoursPerDaynumber
workDaysarray of integerISO weekdays it runs: 1 = Monday … 7 = Sunday.
activeboolean
sortOrderinteger
notesstring or null

Delete a press or machine

DELETE /organizations/{organizationId}/production/resources/{resourceId}

Destructive: deletes it; jobs planned on it become unscheduled. Prefer active: false.

Permissionproduction.settings (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolproductionResources_delete (toolset orders)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Parameters

NameInTypeRequiredDescription
resourceIdpathstringYes

Example

curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/production/resources/{resourceId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
oktrue

On this page