ZSK Web API

ZSK Web API

CreateTBF

POST

CreateTBF creates stitch data in the TBF format (extension .tbf) from text, from an existing design, or from both. Send it as an HTTP POST with a JSON body to StitchJob (see Overview) with "RequestType": "CreateTBF", "ServerVersion": 3 and a valid WebApiLicense (see ZSK Web API License). Key names are case-sensitive, and integer fields need JSON integers ("DistanceMM": 2, not 2.5).

Input

  • Text only: send Monograms and Needle, omit EmbroideryBase64.
  • Existing design only: send EmbroideryType and EmbroideryBase64, omit Monograms (or send an empty list). No Needle list is needed.
  • Design + text: send EmbroideryType, EmbroideryBase64, Monograms and Needle (with a TC or TBF design, "UseEmbroideryColors": 1 can replace Needle, see Colors). TextAlignment with a Mode places the text relative to the design (see TextAlignment to Design).

Text rules: without a design, every monogram needs a non-blank text; up to 9 monograms, one line each, 200 characters in total; FontSizeMM 5 to 50; FontFamily as listed by GetFontList (case-sensitive); UsedNeedle starts at 1. See Monograms.

EmbroideryType is required with every design and must be one of these values (case-sensitive):

EmbroideryTypeFileProcessing
TC.z00Used directly.
TBF.tbfUsed directly.
DST.dstConverted to TC with the needle assignment in SeqAssignmentJson (required).
DSZ.dszConverted to DST, then handled like DST input; the sequence indexes in SeqAssignmentJson refer to the converted DST.

For DST and DSZ input, SeqAssignmentJson is a JSON string holding NeedleAssignment (key k: 0-based index into UsedConeDefs, becomes needle k + 1; value: the 0-based DST color sequences in that color) and UsedConeDefs (ColorNumber as integer). See NeedleAssignment.

"EmbroideryType": "DST",
"EmbroideryBase64": "base64 encoded embroidery data",
"SeqAssignmentJson": "{\"NeedleAssignment\":{\"0\":[0,2],\"1\":[1]},\"UsedConeDefs\":[{\"R\":196,\"G\":30,\"B\":58,\"ColorNumber\":5566,\"ColorName\":\"radiant red\"},{\"R\":0,\"G\":0,\"B\":0,\"ColorNumber\":20,\"ColorName\":\"Black\"}]}"

Colors

  • Needle sets the colors by position (first entry = needle 1); each monogram uses the entry in its UsedNeedle, so with text Needle needs at least that many entries. Red, Green, Blue: integers 0 to 255; other fields: strings.
  • Only Red, Green, Blue and ColorName are passed on to the stitch generation; only CreateTC writes the other fields into its output.
  • With a TC or TBF design, "UseEmbroideryColors": 1 builds Needle from the design, replacing a sent list; UsedNeedle then selects an entry by position. See UseEmbroideryColors.

Response

On success: HTTP 200 with a JobResponseType with Success true and:

  • RequestData: the created TBF file, Base64-encoded.
  • Info: widthMm, heightMm, maxX, maxY, minX, minY and numberOfStitches of the created TBF file. The other fields (also numberOfCuts, TC output only) are 0 or null.
  • NeedleColor: with a design, read from the created TBF file, as in GetNeedleInfo. Text only: one entry per monogram (its UsedNeedle and that Needle entry).
  • NeedleSequence: with a design, read from the created TBF file. Text only: the UsedNeedle of each monogram.
  • Time: processing times. PreviewData stays empty, also with WithPreview; use CreatePNG for a preview.

Info, NeedleColor, NeedleSequence and Time are JSON strings: parse each non-empty string a second time. Example (formatted and shortened):

{
	"Info": "{ \"widthMm\": ..., \"heightMm\": ..., ..., \"numberOfStitches\": ..., ... }",
	"NeedleColor": "[ { \"NeedleNumber\": 1, \"Red\": ..., \"Green\": ..., \"Blue\": ..., ... }, ... ]",
	"NeedleSequence": "[ 1, 2, ... ]",
	"PreviewData": "",
	"RequestData": "base64 encoded TBF data",
	"Success": true,
	"Time": "{ ... }"
}

On error, Success is false and RequestData holds the error message.

Errors

HTTPRequestDataCause
200Error: unknown command!RequestType is not exactly CreateTBF.
400No licence token found. / Invalid licence token.WebApiLicense is missing, empty or rejected.
400Only one line of text per monogram ... / A maximum of 9 lines ... / The text length is longer ...More than one Text entry, more than 9 monograms, or more than 200 characters.
400Invalid needle color listText without a Needle list, or too few Needle entries for the highest UsedNeedle.
400Invalid monogram text. Found empty textNo design, and Monograms is missing or empty or a monogram text is blank.
400Invalid font size. ... / Invalid font name(s). ... / The text contains not supported character(s): ...FontSizeMM outside 5 to 50, FontFamily not listed by GetFontList, or characters the font does not support.
400embroideryData.Length == 0DST or DSZ input without a valid SeqAssignmentJson.
500Error messageUnexpected error, for example invalid Base64 in EmbroideryBase64.
503Error messageThe stitch data could not be created; retry later.

Parameters

Parameter Type Description Required
RequestType string Must be exactly "CreateTBF" (case-sensitive). Yes
ServerVersion int API version. Send 3. Yes
WebApiLicense string License key, see ZSK Web API License. Yes
EmbroideryType string "TC" (Z00), "TBF", "DST" or "DSZ" (case-sensitive): type of the design in EmbroideryBase64. Required with every design; DST and DSZ also need SeqAssignmentJson. No
EmbroideryBase64 string Base64-encoded design file. Required for design only and design + text; omit it for text only. No
Monograms array Text lines: up to 9 monograms, one line each, 200 characters in total, non-blank without a design; UsedNeedle starts at 1 (see Monograms). Omit it or send an empty list for design only. No
Needle array Needle colors by position (first entry = needle 1), required with text and covering the highest UsedNeedle, unless UseEmbroideryColors is 1 with a TC or TBF design. Red, Green, Blue: int 0..255, the other fields strings; only Red, Green, Blue and ColorName affect the TBF file. No
UseEmbroideryColors int 1 = build the Needle list from a TC or TBF design, replacing a Needle list in the request; UsedNeedle then selects an entry by position. No effect for text only or DST/DSZ input. No
SeqAssignmentJson string Needle assignment (NeedleAssignment, UsedConeDefs) as a JSON string, required for DST and DSZ input (see NeedleAssignment). No
TextAlignment object Places the text relative to the design when Mode is set (design + text only): Mode (Top, Bottom, Left, Right, Manual; not case-sensitive), Alignment, DistanceMM (int), and xPosMM/yPosMM for Mode Manual (see TextAlignment to Design). No
LineSpacing array Extra spacing in mm between consecutive text lines, one double per gap, e.g. [5.0]; used with two or more monograms (see Linespacing). No
Rotation int Rotation of the whole output in degrees, 0..359 (see Rotation). No

Example

{
	"RequestType": "CreateTBF",
	"EmbroideryType": "TBF",
	"EmbroideryBase64": "base64 encoded embroidery data",
	"Monograms": [
		{
			"Text": [
				"Monogram"
			],
			"FontFamily": "Arial",
			"FontSizeMM": 10.0,
			"UsedNeedle": 2,
			"TextStitchParameter": "Premium"
		}
	],
	"Needle": [
		{
			"Red": 196,
			"Green": 30,
			"Blue": 58,
			"ColorName": "radiant red"
		},
		{
			"Red": 0,
			"Green": 0,
			"Blue": 0,
			"ColorName": "Black"
		}
	],
	"Rotation": 0,
	"TextAlignment": {
		"Mode": "Bottom",
		"Alignment": 1,
		"DistanceMM": 2
	},
	"ServerVersion": 3,
	"WebApiLicense": "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
}