Frame Builder
Uri: https://api.finerworks.com/v3/frame_builder
Method: POST

This allows you to submit details to validate a framing option, get pricing and info as well as return base64 data you can use to display your frame package.


Body

NameDescriptionTypeAdditional information
product_code

Optional - this will override the config paramter.

text

None.

config

Optional - if a product code is not provided, you build your own frame using these options

frame_config

None.

render

Optional - can be used to return a base 64 data string which can be used to dislay a frame in your app. Note this will slow down the return response so should only be used if needed for your application.

frame_render_config

None.

Example JSON Body

application/json, text/json

{
  "product_code": null,
  "config": {
    "frame_id": 458,
    "width": 18.0,
    "height": 20.0,
    "mats": [
      {
        "id": 1,
        "windows": [
          {
            "width": 10.0,
            "height": 12.0,
            "window_x": 0.0,
            "window_y": 0.0,
            "mat_image_to_display_url": null
          }
        ]
      },
      {
        "id": 2,
        "windows": [
          {
            "width": 12.0,
            "height": 14.0,
            "window_x": 0.0,
            "window_y": 0.0,
            "mat_image_to_display_url": null
          }
        ]
      }
    ],
    "glazing": {
      "id": 1
    },
    "units": 0
  },
  "render": {
    "content_type": 0,
    "render_size": 500,
    "squared": false,
    "shadow_inner": false,
    "prompt_image": false,
    "frame_image_to_display_url": null
  }
}

Sample Code Library


                        
curl --location --request sample_method 'https://api.finerworks.comsample_endpoint' \
--header 'Content-Type: application/json' \
--header 'web_api_key: my-web-api-key-goes-here' \
--header 'app_key: my-app-key-goes-here' \
--data-raw '{
  "product_code": null,
  "config": {
    "frame_id": 458,
    "width": 18.0,
    "height": 20.0,
    "mats": [
      {
        "id": 1,
        "windows": [
          {
            "width": 10.0,
            "height": 12.0,
            "window_x": 0.0,
            "window_y": 0.0,
            "mat_image_to_display_url": null
          }
        ]
      },
      {
        "id": 2,
        "windows": [
          {
            "width": 12.0,
            "height": 14.0,
            "window_x": 0.0,
            "window_y": 0.0,
            "mat_image_to_display_url": null
          }
        ]
      }
    ],
    "glazing": {
      "id": 1
    },
    "units": 0
  },
  "render": {
    "content_type": 0,
    "render_size": 500,
    "squared": false,
    "shadow_inner": false,
    "prompt_image": false,
    "frame_image_to_display_url": null
  }
}'
                            
                        


require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.finerworks.comsample_endpoint');
$request->setMethod(HTTP_Request2::METHOD_sample_method);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'web_api_key' => 'my-web-api-key-goes-here',
'app_key' => 'my-app-key-goes-here'
));
$request->setBody('{
  'product_code': null,
  'config': {
    'frame_id': 458,
    'width': 18.0,
    'height': 20.0,
    'mats': [
      {
        'id': 1,
        'windows': [
          {
            'width': 10.0,
            'height': 12.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      },
      {
        'id': 2,
        'windows': [
          {
            'width': 12.0,
            'height': 14.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      }
    ],
    'glazing': {
      'id': 1
    },
    'units': 0
  },
  'render': {
    'content_type': 0,
    'render_size': 500,
    'squared': false,
    'shadow_inner': false,
    'prompt_image': false,
    'frame_image_to_display_url': null
  }
}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}

                        


var client = new RestClient("https://api.finerworks.comsample_endpoint");
client.Timeout = -1;
var request = new RestRequest(Method.sample_method);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("web_api_key", "my-web-api-key-goes-here");
request.AddHeader("app_key", "my-app-key-goes-here");
request.AddParameter("application/json", "{
  'product_code': null,
  'config': {
    'frame_id': 458,
    'width': 18.0,
    'height': 20.0,
    'mats': [
      {
        'id': 1,
        'windows': [
          {
            'width': 10.0,
            'height': 12.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      },
      {
        'id': 2,
        'windows': [
          {
            'width': 12.0,
            'height': 14.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      }
    ],
    'glazing': {
      'id': 1
    },
    'units': 0
  },
  'render': {
    'content_type': 0,
    'render_size': 500,
    'squared': false,
    'shadow_inner': false,
    'prompt_image': false,
    'frame_image_to_display_url': null
  }
},  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

                        


var settings = {
"url": "https://api.finerworks.comsample_endpoint",
"method": "sample_method",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"web_api_key": "my-web-api-key-goes-here",
"app_key": "my-app-key-goes-here"
},
"data": JSON.stringify({
  'product_code': null,
  'config': {
    'frame_id': 458,
    'width': 18.0,
    'height': 20.0,
    'mats': [
      {
        'id': 1,
        'windows': [
          {
            'width': 10.0,
            'height': 12.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      },
      {
        'id': 2,
        'windows': [
          {
            'width': 12.0,
            'height': 14.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      }
    ],
    'glazing': {
      'id': 1
    },
    'units': 0
  },
  'render': {
    'content_type': 0,
    'render_size': 500,
    'squared': false,
    'shadow_inner': false,
    'prompt_image': false,
    'frame_image_to_display_url': null
  }
}),
};

$.ajax(settings).done(function (response) {
console.log(response);
});

                        

                        
var https = require('follow-redirects').https;
var fs = require('fs');

var options = {
'method': 'sample_method',
'hostname': 'api.finerworks.com',
'path': 'sample_endpoint',
'headers': {
'Content-Type': 'application/json',
'web_api_key': 'my-web-api-key-goes-here',
'app_key': 'my-app-key-goes-here'
},
'maxRedirects': 20
};

var req = https.request(options, function (res) {
var chunks = [];

res.on("data", function (chunk) {
chunks.push(chunk);
});

res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});

res.on("error", function (error) {
console.error(error);
});
});

var postData = JSON.stringify({
  "product_code": null,
  "config": {
    "frame_id": 458,
    "width": 18.0,
    "height": 20.0,
    "mats": [
      {
        "id": 1,
        "windows": [
          {
            "width": 10.0,
            "height": 12.0,
            "window_x": 0.0,
            "window_y": 0.0,
            "mat_image_to_display_url": null
          }
        ]
      },
      {
        "id": 2,
        "windows": [
          {
            "width": 12.0,
            "height": 14.0,
            "window_x": 0.0,
            "window_y": 0.0,
            "mat_image_to_display_url": null
          }
        ]
      }
    ],
    "glazing": {
      "id": 1
    },
    "units": 0
  },
  "render": {
    "content_type": 0,
    "render_size": 500,
    "squared": false,
    "shadow_inner": false,
    "prompt_image": false,
    "frame_image_to_display_url": null
  }
});

req.write(postData);

req.end();
                            
                        

                        
    require "uri"
    require "net/http"

    url = URI("https://api.finerworks.comsample_endpoint")

    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true

    request = Net::HTTP::sample_method.new(url)
    request["Content-Type"] = "application/json"
    request["web_api_key"] = "my-web-api-key-goes-here"
    request["app_key"] = "my-app-key-goes-here"
    request.body = "{
  'product_code': null,
  'config': {
    'frame_id': 458,
    'width': 18.0,
    'height': 20.0,
    'mats': [
      {
        'id': 1,
        'windows': [
          {
            'width': 10.0,
            'height': 12.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      },
      {
        'id': 2,
        'windows': [
          {
            'width': 12.0,
            'height': 14.0,
            'window_x': 0.0,
            'window_y': 0.0,
            'mat_image_to_display_url': null
          }
        ]
      }
    ],
    'glazing': {
      'id': 1
    },
    'units': 0
  },
  'render': {
    'content_type': 0,
    'render_size': 500,
    'squared': false,
    'shadow_inner': false,
    'prompt_image': false,
    'frame_image_to_display_url': null
  }
}"

    response = https.request(request)
    puts response.read_body


                        

NameDescriptionTypeAdditional information
status

response_status

None.

base64data

Byte data used to convert to a base64 string.

text

None.

frame

Details surrounding the frame choice.

frame

None.

mats

Details surrounding the matting choice

array (mat)

None.

glazing

Details surrounding the glazing choice

glazing

None.

total_price

Returned cost of frame package.

decimal

None.

Example JSON Response

application/json, text/json

{
  "status": {
    "success": true,
    "status_code": 100,
    "message": "sample string 2",
    "debug": {}
  },
  "base64data": "sample string 1",
  "frame": {
    "id": 1,
    "name": "sample string 2",
    "thickness": 3.0,
    "depth": 4.0,
    "float_offset": 5.0,
    "rabbet": 6.0,
    "lip": 7.0,
    "profile_svg_url": "sample string 8",
    "sample_image_url_1": "sample string 9",
    "sample_image_url_2": "sample string 10",
    "sample_image_url_3": "sample string 11",
    "min_width": 12.0,
    "min_height": 13.0,
    "max_width": 14.0,
    "max_height": 15.0,
    "price_level": 16,
    "allow_glazing": true,
    "allow_matting": true,
    "color": "sample string 19",
    "composite": "sample string 20",
    "segment_url": "sample string 21",
    "sample_length": 22.0,
    "class_alias": "sample string 23",
    "starting_price": 24.1
  },
  "mats": [
    {
      "id": 1,
      "name": "sample string 2",
      "color": "sample string 3",
      "min_width": 4.0,
      "min_height": 5.0,
      "max_width": 6.0,
      "max_height": 7.0,
      "composite": "sample string 8",
      "starting_price": 9.1
    },
    {
      "id": 1,
      "name": "sample string 2",
      "color": "sample string 3",
      "min_width": 4.0,
      "min_height": 5.0,
      "max_width": 6.0,
      "max_height": 7.0,
      "composite": "sample string 8",
      "starting_price": 9.1
    }
  ],
  "glazing": {
    "id": 1,
    "name": "sample string 2",
    "description": "sample string 3",
    "composite": 0,
    "image_1": "sample string 8",
    "starting_price": 9.1
  },
  "total_price": 2.0
}