Templates

Publish template

Promotes a draft to published: the source is normalized, compiled against the default fixture suite, and frozen as a new version that the latest channel points at. Calling it again on a published template ships the current draft the same way, so edits made since the last publish (in the embedded editor, for example) reach renders; with no edits since, latest stays on the newest version and no duplicate is frozen. Published templates are visible to the whole organization and renderable over the API. The caller must own the template or be an organization admin/owner. Enforces the plan's published-template limit.

post/v2/organizations/{organizationId}/templates/{externalId}/publish

Request

  • Base URL: https://api.pdfs.build
  • URL: https://api.pdfs.build/v2/organizations/{organizationId}/templates/{externalId}/publish
  • Auth: HTTP bearer

Request body

namestring

Rename on publish.

descriptionstring

Update the description on publish.

Response

The published template, with the version latest now serves.

internalIdstring required

Generated, immutable. What v1 URLs and the embedded SDK address.

externalIdstring required

Organization-scoped template id you control. 1–128 ASCII letters, digits, ., _, ~ or -; . and .. are reserved. Case-sensitive.

namestring required
descriptionstring nullable
status'draft' | 'published' required
scopePathstring required

Tenant scope for delegated agent access: zero or more segments, each 1–128 chars from the external-id charset and each ending in /, e.g. acct_9f3/entity_dubai/. Empty means unscoped — invisible to every delegated grant.

createdAtstring required

UTC, ISO 8601 without a timezone suffix.

updatedAtstring required

UTC, ISO 8601 without a timezone suffix.

schemaobject nullable

JSON Schema of the render data payload.

schemaLockedboolean required

When true the data contract is frozen: embedded editing can restyle the document but cannot add, remove or retype a field.

sampleDataobject nullable

Example data satisfying schema.

baseTemplateIdstring nullable

Internal id of the base template this one layers on, if any.

versioninteger nullable

Present when version was given: the frozen version schema and sampleData come from, or null for the working copy.

channelstring nullable

Present when version was given: the channel the selector resolved through, if any.

publishedVersioninteger required

The version latest now points at: the one this publish froze, or the newest existing one when nothing changed since it. Pin renders to it with version.

Example response

{
  "scopePath": "acct_9f3/entity_dubai/",
  "createdAt": "2026-08-30T12:00:00.123456",
  "updatedAt": "2026-08-30T12:00:00.123456"
}

Changes

No recorded changes to this operation across all 1 revision of this API.