Unmade Factory API API

The Factory API API from Unmade — 15 operation(s) for factory api.

OpenAPI Specification

unmade-factory-api-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Unmade Integration Reference Design API Factory API API
  version: 1.0.0
  description: 'Welcome to the Unmade OS Integration Reference.


    See [Integrating With Unmade](#/group-integrating-with-unmade) to get started.'
  x-apievangelist:
    generated: '2026-07-21'
    method: derived
    source: https://raw.githubusercontent.com/unmadeworks/api-docs/master/apiary.apib
    note: Converted mechanically from the provider's published API Blueprint with apib2swagger, then operationIds/tags/securityScheme added mechanically. The verbatim API Blueprint source is saved alongside this file.
servers:
- url: https://partner-subdomain.embed.unmade.com/
security:
- tokenAuth: []
tags:
- name: Factory API
paths:
  /v1/factories/{factory_slug}/sequences/:
    get:
      responses:
        '200':
          description: OK
          headers: {}
          content: {}
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: authentication_failed
                message: Incorrect authentication credentials.
                original_request: <the original request that was sent, which resulted in this error>
        '403':
          description: Forbidden
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: permission_denied
                message: You do not have permission to perform this action.
                original_request: <the original request that was sent, which resulted in this error>
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: not_found
                message: Not found.
        '405':
          description: Method Not Allowed
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: method_not_allowed
                message: Method used is not allowed
        '406':
          description: Not Acceptable
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: not_acceptable
                message: Could not satisfy the request Accept header.
                original_request: <the original request that was sent, which resulted in this error>
        '415':
          description: Unsupported Media Type
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: unsupported_media_type
                message: Unsupported media type in request.
                original_request: 'Not able to parse the request: `Unsupported media type "type sent" in request.`'
      summary: Get Sequences
      operationId: getFactoriesSequences
      description: "Periodically, Unmade will automatically group created Jobs into efficient manufacturable Sequences. This is called \"Auto-sequencing\". These Sequences are created to:\n\n- Minimise manufacture time by grouping compatible Jobs - reducing the time spent reconfiguring machines\n\n- Make best use of available capacity by evenly distributing Jobs across available machines\n\nAuto-sequencing runs at regular intervals as agreed between you and Unmade.\n\nThis endpoint allows these Sequences to be retrieved when required for manufacture.\n\nThe endpoint returns an array of `Sequence` objects, each of which contains:\n\n+ `id`: The unique ID of this Sequence within Unmade systems\n    + `machine`: The name of the machine to which this Sequence has been assigned\n    + `jobs`: An array of `Job` objects (see below)\n\nEach `Job` object contains:\n\n+ `id`: The unique ID of this Job within Unmade systems\n    + `reference`: The item-level reference for this job provided when creating this job's order\n    + `state`: The status of the selected Job\n    + `created`: The timestamp when it was created\n    + `arrive_by_date`: Date when the Job need to get to end customer by e.g. 2020-07-27 YYYY-MM-DD\n    + `ex_factory_date`: Date when the Job need to leave the factory by e.g. 2020-07-27 YYYY-MM-DD\n    + `design_source_id`: The ID of the Job's designs parent, can be used to group similar Jobs\n    + `order_design_group`: Order specific design source group\n    + `changelog`: List of changes to certain fields\n    + `partner-order-reference`: The order reference provided when creating this job's order\n    + `partner-item-reference`: The item-level reference for this job provided when creating this job's order\n    + `job_ticket`: A URL that returns a PDF Job Ticket containing relevant manufacturing and QC information for this Job\n    + `manufacture_files`: A URL that returns a zip archive containing the manufacture files for this Job\n    + `artwork_ids`: An object mapping embellishment manufacturing file names to their Artwork IDs\n    + `artwork_dimensions`: An object containing the physical dimensions of any embellishment assets for this job\n    + `size`: The size code of this job's layplan\n    + `design_element_colours`:  The colours found in the Job\n    + `product_name`: The name of this job's product\n    + `product_code`: The code of this job's product\n    + `manufacturing_template_code`: The unmade code for the manufacturing template used for this job\n    + `partner_data`: An object containing item-level partner data associated with this job\n    + `previews`: An array of *Preview* objects (see below)\n    + `personalisation`: An array of Name and Value objects for that jobs personalised information\n    + `components`: An array of *Component* objects (see below)\n    + `order`: This job's order data (see below)\n\nEach *Preview* object contains:\n\n+ `name`: This preview's name|\n    + `image`: A URL to the image|\n\nEach *Personalisation* object contains:\n\n+ `name`: The field name|\n    + `value`: The value for that field |\n\nEach *Component* object contains:\n\n+ `name`: This component's name or code|\n    + `display_name`: This component's human-readable display-name|\n    + `type`: This component's type|\n    + `reference`: This component's manufacturing reference|\n    + `quantity`: The quantity of this component required for this job|\n\nEach *design_element_colours* object contains:\n\n+ `cmyk`: A list of CMYK values of the colour\n    + `colourName`: Human readable Name\n    + `displayColour`: HEX representation of the colour\n    + `isSpotColour`: If this is a spot colour\n    + `brandReference`: Brand internal Reference for the colour\n    + `factoryReference`: Factory's internal Reference for the colour\n    + `isDynamicBlackInGradients`: If this is a black gradient\n    + `range`: If this is a yarn will have the reference\n\nEach job's `order` data contains:\n\n+ `id`: The Unmade ID for this order (for use on `/orders` endpoints)\n    + `reference`: This unique reference provided for this order\n    + `created`: The date on which this order was created\n    + `attachments`: An object containing the URLs of any attachments associated with this order\n    + `partner_data`: An object containing order-level partner data associated with this order\n    + `shipping_address`: This order's shipping address (see below)\n\nEach order's `shipping_address` data contains:\n\n+ `name`\n    + `company_name`\n    + `address_1`\n    + `address_2`\n    + `address_3`\n    + `city`\n    + `country_area`\n    + `postal_code`\n    + `country`: Country code\n    + `phone`\n\n##### Artwork IDs\n\nAn 'Artwork ID' is an automatically-generated ID given to any embellishment manufacturing files created for this job.\nThese IDs are shared wherever the same embellishment is used on multiple placements on the same garment, across many jobs, and even across many orders.\nYou can use these IDs to identify jobs which share manufacturing files - which may be useful in your production processes."
      tags:
      - Factory API
      parameters:
      - name: Authorization
        in: header
        description: e.g. Token ABCDEFGHIJKLMNOPQRSTUVWXY
        required: false
        schema:
          type: string
        example: Token ABCDEFGHIJKLMNOPQRSTUVWXY
  /v1/factories/{factory_slug}/sequences/{sequence_id}/set_in_production/:
    put:
      responses:
        '200':
          description: OK
          headers: {}
          content: {}
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: authentication_failed
                message: Incorrect authentication credentials.
                original_request: <the original request that was sent, which resulted in this error>
        '403':
          description: Forbidden
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: permission_denied
                message: You do not have permission to perform this action.
                original_request: <the original request that was sent, which resulted in this error>
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: not_found
                message: Not found.
        '405':
          description: Method Not Allowed
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: method_not_allowed
                message: Method used is not allowed
        '406':
          description: Not Acceptable
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: not_acceptable
                message: Could not satisfy the request Accept header.
                original_request: <the original request that was sent, which resulted in this error>
        '415':
          description: Unsupported Media Type
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  original_request:
                    type: string
              example:
                code: unsupported_media_type
                message: Unsupported media type in request.
                original_request: 'Not able to parse the request: `Unsupported media type "type sent" in request.`'
      summary: Set a Sequence as 'in_production'
      operationId: factoriesSequencesSetInProduction
      description: 'Once manufacturing files have been successfully downloaded for a given Sequence, it should be marked as `in production`. This prevents the Sequence from appearing in subsequent calls to the “Get Sequences” endpoint.

        If a Sequence has not been marked as `in_production`, it remains in the [Get Sequences](https://engineering.unmade.com/api-docs/#/group-factory-api/resource-v1-factories-factory_slug-sequences-690efc0e) list and its Jobs will be re-sequenced the next time auto-sequencing occurs. This is done to create even more efficient Sequences in combination with new Jobs.


        Sequence IDs are provided in the [Get Sequences](https://engineering.unmade.com/api-docs/#/group-factory-api/resource-v1-factories-factory_slug-sequences-690efc0e) response.'
      tags:
      - Factory API
      parameters:
      - name: Authorization
        in: header
        description: e.g. Token ABCDEFGHIJKLMNOPQRSTUVWXY
        required: false
        schema:
          type: string
        example: Token ABCDEFGHIJKLMNOPQRSTUVWXY
  /factory.unmade.com/v2/orders/:
    get:
      responses:
        '200':
          description: OK
          headers: {}
          content: {}
      summary: List Orders
      operationId: factoryGetOrders
      description: "This endpoint can be used to retrieve the complete list of all orders that have been created to date.\n\nThis endpoint is paginated and shows a maximum of 10 order objects per response. Use the `page` query parameter to \nselect the desired page.\n\nYou can optionally provide `created_before` and `created_after` query parameters in the format `YYYY-MM-DD` to filter \nthe listed orders by their creation date."
      tags:
      - Factory API
      parameters:
      - name: state
        in: query
        description: Show orders with this state (see Order States section above for allowed values)
        schema:
          type: string
      - name: page
        in: query
        description: Page number
        schema:
          type: number
      - name: created_before
        in: query
        description: Show orders created before this date (`YYYY-MM-DD`)
        schema:
          type: string
      - name: created_after
        in: query
        description: Show orders created after this date (`YYYY-MM-DD`)
        schema:
          type: string
      - name: submitted_before
        in: query
        description: Show orders submitted for manufacturing before this date (`YYYY-MM-DD`)
        schema:
          type: string
      - name: submitted_after
        in: query
        description: Show orders submitted for manufacturing after this date (`YYYY-MM-DD`)
        schema:
          type: string
      - name: ecommerce_origin (optional, string) - Show orders with `ecommerce_origin` containing specified string
        in: query
        description: ''
        required: true
        schema:
          type: string
      - name: reference
        in: query
        description: Show orders with `reference` containing specified string
        schema:
          type: string
      - name: Authorization
        in: header
        description: e.g. Token ABCDEF
        required: false
        schema:
          type: string
        example: Token ABCDEF
  /factory.unmade.com/v2/orders/{order_id}/:
    get:
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  created:
                    type: string
                  submitted:
                    type: string
                  reference:
                    type: string
                  num_jobs:
                    type: number
                  jobs:
                    type: string
                  shipping_address:
                    type: string
                  ecommerce_order:
                    type: string
                  factory:
                    type: object
                    properties:
                      name:
                        type: string
                      slug:
                        type: string
                  partner_data:
                    type: object
                    properties:
                      my_partner_data_key:
                        type: string
                  attachments:
                    type: object
                    properties:
                      packing_slip:
                        type: string
                      commercial_invoice:
                        type: string
                  summary:
                    type: string
                  state:
                    type: string
                  tracking_data:
                    type: object
                    properties: {}
                  destination_country:
                    type: string
                  shipped:
                    nullable: true
                  cancelled:
                    nullable: true
              example:
                id: a38c331d-cc6d-4e03-b514-91e27ae8b02e
                created: '2017-07-31T16:52:50.905026Z'
                submitted: '2017-07-31T17:44:50.905026Z'
                reference: mc_testorder6
                num_jobs: 4
                jobs: https://factory.unmade.com/v2/orders/a882ac66-9374-4910-8c93-9ea45a470bd4/jobs/
                shipping_address: https://factory.unmade.com/v2/orders/a882ac66-9374-4910-8c93-9ea45a470bd4/shipping_address/
                ecommerce_order: https://partner.embed.unmade.com/v2/orders/a882ac66-9374-4910-8c93-9ea45a470bd4
                factory:
                  name: Factory A
                  slug: factory-a
                partner_data:
                  my_partner_data_key: foo
                attachments:
                  packing_slip: https://cdn.unmade.com/order/900243544001/attachments/packing_slip.pdf
                  commercial_invoice: https://cdn.unmade.com/order/900243544001/attachments/import_invoice.pdf
                summary: https://cdn.unmade.com/order/900243544001/attachments/summary.pdf
                state: in_production
                tracking_data: {}
                destination_country: US
                shipped: null
                cancelled: null
        '400':
          description: Bad Request
          headers: {}
          content: {}
        '401':
          description: Unauthorized
          headers: {}
          content: {}
        '403':
          description: Forbidden
          headers: {}
          content: {}
        '405':
          description: Method Not Allowed
          headers: {}
          content: {}
        '406':
          description: Not Acceptable
          headers: {}
          content: {}
        '415':
          description: Unsupported Media Type
          headers: {}
          content: {}
      summary: Retrieve an existing order
      operationId: factoryGetOrders2
      description: 'After an order has been submitted to production, you can use this endpoint to pull order data into your own systems or

        query production states.


        The `attachments` object contains URLs to any paperwork or documentation associated with this order.


        **Note**: Any `attachments` containing sensitive information such as customer shipping addresses will only be present

        in the response if the order is state `in_production` or `ready_to_ship`.'
      tags:
      - Factory API
      parameters:
      - name: order_id
        in: path
        description: ID of the Order in the form of a uuid
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: e.g. Token ABCDEF
        required: false
        schema:
          type: string
        example: Token ABCDEF
  /factory.unmade.com/v2/orders/{order_id}/shipping_address/:
    get:
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  company_name:
                    type: string
                  address_1:
                    type: string
                  address_2:
                    type: string
                  city:
                    type: string
                  country_area:
                    type: string
                  postal_code:
                    type: string
                  country:
                    type: string
                  phone:
                    type: string
                  email:
                    type: string
              example:
                name: John Smith
                company_name: unmade
                address_1: 152 Strand
                address_2: Somerset House
                city: London
                country_area: London
                postal_code: WC2R 1LA
                country: UK
                phone: 0123456789
                email: js@example.com
        '400':
          description: Bad Request
          headers: {}
          content: {}
        '401':
          description: Unauthorized
          headers: {}
          content: {}
        '403':
          description: Forbidden
          headers: {}
          content: {}
        '404':
          description: Not Found
          headers: {}
          content: {}
        '405':
          description: Method Not Allowed
          headers: {}
          content: {}
        '406':
          description: Not Acceptable
          headers: {}
          content: {}
        '415':
          description: Unsupported Media Type
          headers: {}
          content: {}
      summary: Retrieve Shipping Address
      operationId: factoryGetOrdersShippingAddress
      description: "When an order has progressed to the `in_production` or `ready_to_ship` states, this endpoint can be used to retrieve the \nshipping address for the order. For orders not in this state, this endpoint will respond with an HTTP 400 with an \nappropriate error message."
      tags:
      - Factory API
      parameters:
      - name: order_id
        in: path
        description: ID of the Order in the form of a uuid
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: e.g. Token ABCDEF
        required: false
        schema:
          type: string
        example: Token ABCDEF
  /factory.unmade.com/v2/orders/{order_id}/set_in_production/:
    post:
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  state:
                    type: string
              example:
                id: f00f9780-e026-42f5-9876-41abb3619334
                state: in_production
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: bad_request
                message: Order cannot be set as in_production
        '401':
          description: Unauthorized
          headers: {}
          content: {}
        '403':
          description: Forbidden
          headers: {}
          content: {}
        '404':
          description: Not Found
          headers: {}
          content: {}
        '405':
          description: Method Not Allowed
          headers: {}
          content: {}
        '406':
          description: Not Acceptable
          headers: {}
          content: {}
        '415':
          description: Unsupported Media Type
          headers: {}
          content: {}
      summary: Set In Production
      operationId: factoryOrdersSetInProduction
      description: 'Once an order has been ingested into your systems and has entered production with your vendor, this endpoint is used to

        inform Unmade that production has begun. This state change is automatically propagated to the associated Ecommerce order

        to allow the end consumer to be notified if required. This state change also automatically propagates to all associated

        jobs in this order.'
      tags:
      - Factory API
      parameters:
      - name: order_id
        in: path
        description: ID of the Order in the form of a uuid
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: e.g. Token ABCDEF
        required: false
        schema:
          type: string
        example: Token ABCDEF
  /factory.unmade.com/v2/orders/{order_id}/set_ready_to_ship/:
    post:
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  state:
                    type: string
              example:
                id: f00f9780-e026-42f5-9876-41abb3619334
                state: ready_to_ship
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: bad_request
                message: Order cannot be set as ready_to_ship
        '401':
          description: Unauthorized
          headers: {}
          content: {}
        '403':
          description: Forbidden
          headers: {}
          content: {}
        '404':
          description: Not Found
          headers: {}
          content: {}
        '405':
          description: Method Not Allowed
          headers: {}
          content: {}
        '406':
          description: Not Acceptable
          headers: {}
          content: {}
        '415':
          description: Unsupported Media Type
          headers: {}
          content: {}
      summary: Set Ready to Ship
      operationId: factoryOrdersSetReadyToShip
      description: "Once an order has completed production and is ready to ship from your vendor, this endpoint is used to inform Unmade \nthat the order is ready to ship. This state change is automatically propagated to the associated Ecommerce order to \nallow the end consumer to be notified if required. This state change also automatically propagates to all associated\njobs in this order."
      tags:
      - Factory API
      parameters:
      - name: order_id
        in: path
        description: ID of the Order in the form of a uuid
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: e.g. Token ABCDEF
        required: false
        schema:
          type: string
        example: Token ABCDEF
  /factory.unmade.com/v2/orders/{order_id}/set_shipped/:
    post:
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  state:
                    type: string
              example:
                id: f00f9780-e026-42f5-9876-41abb3619334
                state: shipped
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
              example:
                code: bad_request
                message: Order cannot be set as shipped
        '401':
          description: Unauthorized
          headers: {}
          content: {}
        '403':
          description: Forbidden
          headers: {}
          content: {}
        '404':
          description: Not Found
          headers: {}
          content: {}
        '405':
          description: Method Not Allowed
          headers: {}
          content: {}
        '406':
          description: Not Acceptable
          headers: {}
          content: {}
        '415':
          description: Unsupported Media Type
          headers: {}
          content: {}
      summary: Set Shipped
      operationId: factoryOrdersSetShipped
      description: "Once an order has finally been shipped from your vendor, this endpoint is used to inform Unmade that the order is on the\nway to the destination address. This state change is automatically propagated to the associated Ecommerce order to \nallow the end consumer to be notified if required. This state change also automatically propagates to all associated\njobs in this order."
      tags:
      - Factory API
      parameters:
      - name: order_id
        in: path
        description: ID of the Order in the form of a uuid
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: e.g. Token ABCDEF
        required: false
        schema:
          type: string
        example: Token ABCDEF
  /factory.unmade.com/v2/orders/{order_id}/set_tracking_number/:
    post:
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  tracking_data:
                    type: object
                    properties:
                      tracking_number:
                        type: string
              example:
                id: f00f9780-e026-42f5-9876-41abb3619334
                tracking_data:
                  tracking_number: '123456789'
        '400':
          description: Bad Request
          headers: {}
          content: {}
        '401':
          description: Unauthorized
          headers: {}
          content: {}
        '403':
          description: Forbidden
          headers: {}
          content: {}
        '404':
          description: Not Found
          headers: {}
          content: {}
        '405':
          description: Method Not Allowed
          headers: {}
          content: {}
        '406':
          description: Not Acceptable
          headers: {}
          content: {}
        '415':
          description: Unsupported Media Type
          headers: {}
          content: {}
      summary: Set Tracking Number
      operationId: factoryOrdersSetTrackingNumber
      description: "If relevant for the shipping configuration for your integration, this endpoint can be used to provide a tracking number\nthat has been generated in a third-party shipping system. If p

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/unmade/refs/heads/main/openapi/unmade-factory-api-api-openapi.yml