{
  "info": {
    "_postman_id": "stackfill-public-api",
    "name": "StackFill Public API",
    "description": "Generated from docs/api/openapi.yaml. Replace variables before sending requests.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.stackfill.com/v1"
    },
    {
      "key": "stackfill_secret_key",
      "value": "stackfill_live_sk_REPLACE_ME"
    },
    {
      "key": "stackfill_publishable_key",
      "value": "stackfill_live_pk_REPLACE_ME"
    },
    {
      "key": "template_id",
      "value": "tpl_123"
    },
    {
      "key": "render_id",
      "value": "rnd_123"
    },
    {
      "key": "product_mapping_id",
      "value": "pm_123"
    },
    {
      "key": "embed_application_id",
      "value": "embapp_123"
    },
    {
      "key": "embed_session_id",
      "value": "es_123"
    },
    {
      "key": "webhook_endpoint_id",
      "value": "we_123"
    }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{stackfill_secret_key}}",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "templates",
      "item": [
        {
          "name": "List templates",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/templates",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "templates"
              ]
            }
          }
        },
        {
          "name": "Upload and ingest a PDF template",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/templates",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "templates"
              ]
            }
          }
        },
        {
          "name": "Retrieve a template",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/templates/{{template_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "templates",
                "{{template_id}}"
              ]
            }
          }
        },
        {
          "name": "List the fillable fields for a template",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/templates/{{template_id}}/fields",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "templates",
                "{{template_id}}",
                "fields"
              ]
            }
          }
        },
        {
          "name": "Publish a template (draft → live)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/templates/{{template_id}}/publish",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "templates",
                "{{template_id}}",
                "publish"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "renders",
      "item": [
        {
          "name": "List renders",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/renders",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "renders"
              ]
            }
          }
        },
        {
          "name": "Create a final PDF render",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/renders",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "renders"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"template_id\": \"tpl_123\",\n  \"scene_revision\": 1,\n  \"kind\": \"final\",\n  \"values\": {\n    \"Name\": \"Jordan Tate\",\n    \"Title\": \"Program Director\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a render",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/renders/{{render_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "renders",
                "{{render_id}}"
              ]
            }
          }
        },
        {
          "name": "Stream the rendered PDF",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/renders/{{render_id}}/download",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "renders",
                "{{render_id}}",
                "download"
              ]
            }
          }
        },
        {
          "name": "Retry a stuck or failed render",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/renders/{{render_id}}/retry",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "renders",
                "{{render_id}}",
                "retry"
              ]
            }
          }
        },
        {
          "name": "Rasterize a template to a PNG",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/previews",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "previews"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "fills",
      "item": [
        {
          "name": "List fills",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/fills",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "fills"
              ]
            }
          }
        },
        {
          "name": "Retrieve a fill",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/fills/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "fills",
                "{{id}}"
              ]
            }
          }
        },
        {
          "name": "Finalize a fill and trigger the print render",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/fills/{{id}}/finalize",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "fills",
                "{{id}}",
                "finalize"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "product_mappings",
      "item": [
        {
          "name": "List product mappings",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/product_mappings",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "product_mappings"
              ]
            }
          }
        },
        {
          "name": "Create a product mapping",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/product_mappings",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "product_mappings"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"template_id\": \"tpl_123\",\n  \"embed_application_id\": \"embapp_123\",\n  \"external_product_id\": \"business-card\",\n  \"external_variant_id\": \"standard\",\n  \"title\": \"Business card\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a product mapping",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/product_mappings/{{product_mapping_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "product_mappings",
                "{{product_mapping_id}}"
              ]
            }
          }
        },
        {
          "name": "Update a product mapping",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/product_mappings/{{product_mapping_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "product_mappings",
                "{{product_mapping_id}}"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"active\",\n  \"title\": \"Business card\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Archive a product mapping",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/product_mappings/{{product_mapping_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "product_mappings",
                "{{product_mapping_id}}"
              ]
            }
          }
        },
        {
          "name": "Resolve a product mapping from a publishable key",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-StackFill-Publishable-Key",
                "value": "{{stackfill_publishable_key}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/product_mappings/resolve",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "product_mappings",
                "resolve"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"publishable_key\": \"{{stackfill_publishable_key}}\",\n  \"external_product_id\": \"business-card\",\n  \"external_variant_id\": \"standard\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "embed_applications",
      "item": [
        {
          "name": "List embed applications",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/applications",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "applications"
              ]
            }
          }
        },
        {
          "name": "Create an embed application",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/applications",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "applications"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Shop storefront\",\n  \"mode\": \"live\",\n  \"allowed_origins\": [\n    \"https://shop.example.com\"\n  ],\n  \"create_publishable_key\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve an embed application",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/applications/{{embed_application_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "applications",
                "{{embed_application_id}}"
              ]
            }
          }
        },
        {
          "name": "Update an embed application",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/applications/{{embed_application_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "applications",
                "{{embed_application_id}}"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"allowed_origins\": [\n    \"https://shop.example.com\"\n  ],\n  \"status\": \"active\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Archive an embed application",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/applications/{{embed_application_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "applications",
                "{{embed_application_id}}"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "embed_sessions",
      "item": [
        {
          "name": "List embed sessions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/sessions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "sessions"
              ]
            }
          }
        },
        {
          "name": "Create a server-minted embed session",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/sessions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "sessions"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_product_id\": \"business-card\",\n  \"external_variant_id\": \"standard\",\n  \"external_cart_id\": \"cart_123\",\n  \"customer\": {\n    \"email\": \"customer@example.com\",\n    \"name\": \"Jordan Tate\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create a browser guest embed session",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-StackFill-Publishable-Key",
                "value": "{{stackfill_publishable_key}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/sessions/guest",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "sessions",
                "guest"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"publishable_key\": \"{{stackfill_publishable_key}}\",\n  \"external_product_id\": \"business-card\",\n  \"external_variant_id\": \"standard\",\n  \"external_cart_id\": \"cart_123\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve an embed session",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/sessions/{{embed_session_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "sessions",
                "{{embed_session_id}}"
              ]
            }
          }
        },
        {
          "name": "Cancel or expire an embed session",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/sessions/{{embed_session_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "sessions",
                "{{embed_session_id}}"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"canceled\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Cancel an embed session",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/embed/sessions/{{embed_session_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "embed",
                "sessions",
                "{{embed_session_id}}"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "webhooks",
      "item": [
        {
          "name": "List webhook endpoints",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints"
              ]
            }
          }
        },
        {
          "name": "Create a webhook endpoint",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://example.com/webhooks/stackfill\",\n  \"events\": [\n    \"embed_session.saved\",\n    \"render.succeeded\"\n  ],\n  \"mode\": \"live\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a webhook endpoint",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}"
              ]
            }
          }
        },
        {
          "name": "Update or rotate a webhook endpoint",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"enabled\",\n  \"events\": [\n    \"embed_session.saved\",\n    \"render.succeeded\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Disable a webhook endpoint",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}"
              ]
            }
          }
        },
        {
          "name": "List webhook delivery attempts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}/deliveries",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}",
                "deliveries"
              ]
            }
          }
        },
        {
          "name": "Retrieve a single webhook delivery attempt",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}/deliveries/{{delivery_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}",
                "deliveries",
                "{{delivery_id}}"
              ]
            }
          }
        },
        {
          "name": "Re-deliver a specific recorded webhook attempt",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}/deliveries/{{delivery_id}}/retry",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}",
                "deliveries",
                "{{delivery_id}}",
                "retry"
              ]
            }
          }
        },
        {
          "name": "Send a stackfill.test event to an endpoint",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhook_endpoints/{{webhook_endpoint_id}}/test",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook_endpoints",
                "{{webhook_endpoint_id}}",
                "test"
              ]
            }
          }
        }
      ]
    }
  ]
}
