Template gallery / certificate

certificate

Landscape Letter certificate in three variants selected by `kind`: course completion, completion of work, and product/workmanship warranty. Bordered, with seal, credential ID and signature lines.

chromium default PDF 15 top-level fields 1 unit per page

Rendered preview of the certificate template
Rendered by Galley from the example payload below, at 1056px wide , scale 2.

Fields

The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.

Field Type Required Description
kind "course" | "completion" | "warranty" required course = training/CEU certificate; completion = work finished on a job; warranty = workmanship or product warranty.
title string optional Overrides the heading implied by `kind`.
lede string optional The short line above the recipient name.
eyebrow string optional Small spaced line at the top. Defaults to the issuer name.
statement string optional The body paragraph.
issued_on string (date) optional
expires_on string (date) optional Warranty expiry, or the date a credential lapses.
credential_id string optional Printed in the footer so the certificate can be verified.
accent string optional Border and rule colour.
paper string optional Sheet background colour.
recipient object { name, detail } required
issuer object { name, license_number, website, logo_url } required
facts array of object { label, value } optional Label/value pairs in the row under the body: hours and CEUs for a course, scope and warranty term for work.
signatures array of object { name, role, signature } optional
seal object { top, center, bottom } optional Round seal at the end of the signature row.

Default render options

Applied unless you override them. Options are part of the cache key.

page_size "Letter"
landscape true
margin "0.35in"
print_background true

Example payload

This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.

example.jsonjson
{
  "kind": "completion",
  "statement": "The hall bathroom remodel at 412 Ash Street was completed in accordance with the signed contract dated July 8, 2026, inc… [283 characters, shortened for display]",
  "issued_on": "2026-09-16",
  "expires_on": "2027-09-16",
  "credential_id": "HR-2026-118-C",
  "accent": "#0f4c5c",
  "recipient": {
    "name": "Dana and Marcus Reyes",
    "detail": "412 Ash Street, Fernandina Beach, FL 32034"
  },
  "issuer": {
    "name": "Halyard Remodeling LLC",
    "license_number": "CBC1259847",
    "website": "halyardremodel.test"
  },
  "facts": [
    {
      "label": "Contract",
      "value": "HR-2026-118"
    },
    {
      "label": "Scope",
      "value": "Hall bathroom remodel"
    },
    {
      "label": "Final inspection",
      "value": "Sep 14, 2026"
    }
  ],
  "signatures": [
    {
      "name": "Priya Raman",
      "role": "Owner, Halyard Remodeling",
      "signature": "Priya Raman"
    },
    {
      "name": "Dana Reyes",
      "role": "Homeowner",
      "signature": "Dana Reyes"
    }
  ],
  "seal": {
    "top": "Completed",
    "center": "2026",
    "bottom": "Nassau Co."
  }
}

Values longer than 240 characters — data URIs, inline SVG — are shortened here so the shape of the payload stays readable, and the replacement says how much was left out. get_template and GET /v1/templates/:ref return them in full.

Render it

With an API keyshell
curl -sS https://api.galleyrender.com/v1/render \
  -H "Authorization: Bearer $GALLEY_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
  "template": "certificate@1",
  "format": "pdf",
  "data": {
    "kind": "completion",
    "statement": "The hall bathroom remodel at 412 Ash Street was completed in accordance with the signed contract dated July 8, 2026, including all authorized change orders, and passed final inspection by Nassau County on September 14, 2026. Workmanship is warranted for one year from the date below.",
    "issued_on": "2026-09-16",
    "expires_on": "2027-09-16",
    "credential_id": "HR-2026-118-C",
    "accent": "#0f4c5c",
    "recipient": {
      "name": "Dana and Marcus Reyes",
      "detail": "412 Ash Street, Fernandina Beach, FL 32034"
    },
    "issuer": {
      "name": "Halyard Remodeling LLC",
      "license_number": "CBC1259847",
      "website": "halyardremodel.test"
    },
    "facts": [
      {
        "label": "Contract",
        "value": "HR-2026-118"
      },
      {
        "label": "Scope",
        "value": "Hall bathroom remodel"
      },
      {
        "label": "Final inspection",
        "value": "Sep 14, 2026"
      }
    ],
    "signatures": [
      {
        "name": "Priya Raman",
        "role": "Owner, Halyard Remodeling",
        "signature": "Priya Raman"
      },
      {
        "name": "Dana Reyes",
        "role": "Homeowner",
        "signature": "Dana Reyes"
      }
    ],
    "seal": {
      "top": "Completed",
      "center": "2026",
      "bottom": "Nassau Co."
    }
  }
}'
With no API key, over MCPshell
# No API key. The first call mints a 50-render trial.
curl -sS https://mcp.galleyrender.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "render",
      "arguments": {
        "template": "certificate",
        "format": "pdf",
        "data": { … see the example payload above … }
      }
    }
  }'

Pin the version — certificate@1 — in anything you ship. Publishing a new version never changes an old one. Render endpoint reference →

Try a free tool

Renders the example payload on the production service. No account, no key.

JSON Schema

schema.json (15 top-level properties)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Certificate",
  "description": "One certificate template with three variants. `kind` picks the default heading and wording: course, completion (of work), or warranty.",
  "type": "object",
  "required": [
    "kind",
    "recipient",
    "issuer"
  ],
  "additionalProperties": true,
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "course",
        "completion",
        "warranty"
      ],
      "default": "course",
      "description": "course = training/CEU certificate; completion = work finished on a job; warranty = workmanship or product warranty.",
      "examples": [
        "completion"
      ]
    },
    "title": {
      "type": "string",
      "description": "Overrides the heading implied by `kind`.",
      "examples": [
        "Certificate of Completion"
      ]
    },
    "lede": {
      "type": "string",
      "description": "The short line above the recipient name.",
      "examples": [
        "This certifies that the work described below has been completed"
      ]
    },
    "eyebrow": {
      "type": "string",
      "description": "Small spaced line at the top. Defaults to the issuer name.",
      "examples": [
        "Halyard Remodeling LLC"
      ]
    },
    "statement": {
      "type": "string",
      "description": "The body paragraph.",
      "examples": [
        "The hall bathroom remodel at 412 Ash Street was completed in accordance with the signed contract and passed final inspection by Nassau County on September 14, 2026."
      ]
    },
    "issued_on": {
      "type": "string",
      "format": "date",
      "examples": [
        "2026-09-16"
      ]
    },
    "expires_on": {
      "type": "string",
      "format": "date",
      "description": "Warranty expiry, or the date a credential lapses.",
      "examples": [
        "2027-09-16"
      ]
    },
    "credential_id": {
      "type": "string",
      "description": "Printed in the footer so the certificate can be verified.",
      "examples": [
        "HR-2026-118-C"
      ]
    },
    "accent": {
      "type": "string",
      "description": "Border and rule colour.",
      "examples": [
        "#0f4c5c"
      ]
    },
    "paper": {
      "type": "string",
      "description": "Sheet background colour.",
      "examples": [
        "#fffdf8"
      ]
    },
    "recipient": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Printed large, in serif.",
          "examples": [
            "Dana and Marcus Reyes"
          ]
        },
        "detail": {
          "type": "string",
          "description": "Line under the recipient name, e.g. the project address.",
          "examples": [
            "412 Ash Street, Fernandina Beach, FL 32034"
          ]
        }
      }
    },
    "issuer": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Halyard Remodeling LLC"
          ]
        },
        "license_number": {
          "type": "string",
          "description": "Printed in the footer.",
          "examples": [
            "CBC1259847"
          ]
        },
        "website": {
          "type": "string",
          "examples": [
            "halyardremodel.test"
          ]
        },
        "logo_url": {
          "type": "string",
          "format": "uri",
          "examples": [
            "https://example.com/logo.png"
          ]
        }
      }
    },
    "facts": {
      "type": "array",
      "description": "Label/value pairs in the row under the body: hours and CEUs for a course, scope and warranty term for work.",
      "items": {
        "type": "object",
        "required": [
          "label",
          "value"
        ],
        "properties": {
          "label": {
            "type": "string",
            "examples": [
              "Contract"
            ]
          },
          "value": {
            "type": "string",
            "examples": [
              "HR-2026-118"
            ]
          }
        }
      }
    },
    "signatures": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "examples": [
              "Priya Raman"
            ]
          },
          "role": {
            "type": "string",
            "examples": [
              "Owner, Halyard Remodeling"
            ]
          },
          "signature": {
            "type": "string",
            "description": "Text drawn in italic serif above the rule. Defaults to the name.",
            "examples": [
              "Priya Raman"
            ]
          }
        }
      }
    },
    "seal": {
      "type": "object",
      "description": "Round seal at the end of the signature row.",
      "properties": {
        "top": {
          "type": "string",
          "examples": [
            "Completed"
          ]
        },
        "center": {
          "type": "string",
          "examples": [
            "2026"
          ]
        },
        "bottom": {
          "type": "string",
          "examples": [
            "Nassau Co."
          ]
        }
      }
    }
  }
}