Embedded integration settings

Choose templates for presentation assets, resource settings for configuration, and reCAPTCHA settings for its enablement/public key. These guest-readable calls do not require a member token. Resource context explains how the resource key selects the integration.

Embedded resource context

Use the API base and resource public key supplied for the embedded integration. These operations permit guest access without a member token. Shared context checks still apply where enabled; the request and recovery sections preserve each operation’s missing-resource behavior and error envelope.

Settings and template assets are data, not proof that a provider is available or a script has run. Follow the sample conventions.

Operations

OperationMethod / path
Get a published embedded templateGET /api/v1/integrations/templates/{name}
Get embedded resource settingsGET /api/v1/integrations/resource-settings
Get resource reCAPTCHA settingsGET /api/v1/integrations/resource/recaptcha-settings

Get a published embedded template

GET /api/v1/integrations/templates/{name}

Read a published template for the selected resource by slug, optionally considering a version. This returns assets/settings as JSON; it does not execute them.

Before you call

Use the resource public key and a template slug supplied by the existing integration configuration. The template must be published and undeleted. No member token is required. See embedded resource context for supplied configuration and shared checks.

Request

GET with no request body or request Content-Type requirement. Response media type is JSON. Permits guest access with the context described above. See credential transport.

NameLocationTypeRequirement / defaultMeaning and constraint
resourceheaderstringrequired contextPublic resource key; not the secret.
namepathstringyesTemplate slug: one or more digit/word/hyphen/underscore characters ([\d\w\-\_]+); trimmed.
vquerystringoptionalVersion selector, trimmed; default null. Active published templates remain eligible even when v is supplied.

Selection accepts an active published template OR a published template matching v (even if inactive). Version input does not exclusively pin an active template to that version; no tie-break/order is specified when several match.

Result

HTTP 200 JSON.

Field / projectionType / presenceMeaning
name, title, slugstored strings / nullableTemplate name, display title and resource-scoped slug.
template, javascript, cssbase64 stringsMinified HTML, JavaScript and CSS respectively. Decode before use; this read does not execute them.
settingstemplate-defined value / dynamic objectTemplate-specific settings; no universal fixed schema.

Example: get a published embedded template

Read published reader-popup assets. The base64 HTML represents a small Hello paragraph; the response itself runs no script. Supply the sample configuration and runtimes. These three requests are equivalent.

cURL

curl "${WALLKIT_API_BASE}/api/v1/integrations/templates/reader-popup?v=1" \
  -H "resource: ${RESOURCE_KEY}"

JavaScript

// Node.js 18+; built-in fetch. Supply existing integration configuration.
async function main() {
  const url = new URL("/api/v1/integrations/templates/reader-popup", process.env.WALLKIT_API_BASE);
  url.searchParams.set("v", "1");
  const headers = { resource: process.env.RESOURCE_KEY };
  const response = await fetch(url, { method: "GET", headers });
  const body = await response.json();
  console.log(response.status, body);
}
main().catch(console.error);

Python

# Python 3; standard library only.
import json
import os
from urllib.error import HTTPError
from urllib.parse import urlencode, urljoin
from urllib.request import Request, urlopen

url = urljoin(os.environ["WALLKIT_API_BASE"], "/api/v1/integrations/templates/reader-popup")
url += "?" + urlencode({'v': '1'})
headers = {"resource": os.environ["RESOURCE_KEY"]}
request = Request(url, headers=headers, method="GET")
try:
    with urlopen(request) as response:
        print(response.status, json.load(response))
except HTTPError as error:
    print(error.code, json.load(error))

HTTP 200 response excerpt:

{
  "name": "Reader popup",
  "title": "Subscribe",
  "slug": "reader-popup",
  "template": "PHA+SGVsbG88L3A+",
  "javascript": "",
  "css": "",
  "settings": {}
}

Alternate result

HTTP 404: Check the resource and configured template slug; ask the administrator to confirm publication/version settings.

Response excerpt:

{
  "error": "template_not_found",
  "error_description": "Template not found"
}

Recovery

HTTP statusAPI code / responseCauseNext action
404resource_not_existsRequired resource is missing or unknown.Check the resource public key and selected integration context with the administrator.
404template_not_foundNo published, undeleted template matches the slug/resource and active-or-version selection. This error body has error and error_description, without the ordinary req_guid envelope.Check the resource/template slug and ask the administrator to confirm publication/version settings.

See embedded resource context for applicable shared checks; follow the local error table above.

Next task

Read resource settings to pair the template assets with this resource’s configuration.

Get embedded resource settings

GET /api/v1/integrations/resource-settings

Read settings used by an embedded integration plus the resource logo. No user token is required; supply resource to obtain a settings result.

Before you call

Use the resource public key supplied for the embedded integration. No member token is required. Resource configuration controls which setting values are available. See embedded resource context for supplied configuration and shared checks.

Request

GET with no request body or request Content-Type requirement. Response media type is JSON. Permits guest access with the context described above. See credential transport.

NameLocationTypeRequirement / defaultMeaning and constraint
resourceheaderstringrequired contextPublic resource key; not the secret.

No query fields, filters, sort, pagination or writes are added by the operation. The returned fields depend on configuration; do not treat them as a complete list of every possible setting. Use the separate reCAPTCHA read for its public key and active flag.

Result

HTTP 200 JSON.

Field / projectionType / presenceMeaning
top-level settingsconfiguration-dependent mapSettings inherited from resource/partner/default configuration after selected internal keys are removed. This is not a closed allowlist or privacy guarantee.
logoURL string / nullResource logo URL; null without a logo.
default_subscription_id, default_guest_subscription_idstored IDs / null; representativeConfigured member/guest default Pricings.
single_subscriptionconfigured flag; representativeSingle-subscription setting.
default_autorenewal_subscription, default_autorenewal_teams_subscriptionconfigured flags; representativeDefault renewal choices for member/team subscriptions.
delay_downgradeconfigured value; representativeDowngrade-delay setting; unit/format not established by this read.
default_paysystemconfigured label; representativeDefault payment system.
payments_in_live_modeconfigured flag; representativeLive-payment setting.
firebase_auth, firebase_firestoreconfiguration-defined values; representativeFirebase feature/account settings; no universal nested schema.

Example: get embedded resource settings

Read representative subscription/payment settings and a logo for Example publication. Other configuration-dependent settings may be returned. Supply the sample configuration and runtimes. These three requests are equivalent.

cURL

curl "${WALLKIT_API_BASE}/api/v1/integrations/resource-settings" \
  -H "resource: ${RESOURCE_KEY}"

JavaScript

// Node.js 18+; built-in fetch. Supply existing integration configuration.
async function main() {
  const url = new URL("/api/v1/integrations/resource-settings", process.env.WALLKIT_API_BASE);
  const headers = { resource: process.env.RESOURCE_KEY };
  const response = await fetch(url, { method: "GET", headers });
  const body = await response.json();
  console.log(response.status, body);
}
main().catch(console.error);

Python

# Python 3; standard library only.
import json
import os
from urllib.error import HTTPError
from urllib.parse import urlencode, urljoin
from urllib.request import Request, urlopen

url = urljoin(os.environ["WALLKIT_API_BASE"], "/api/v1/integrations/resource-settings")
headers = {"resource": os.environ["RESOURCE_KEY"]}
request = Request(url, headers=headers, method="GET")
try:
    with urlopen(request) as response:
        print(response.status, json.load(response))
except HTTPError as error:
    print(error.code, json.load(error))

HTTP 200 response excerpt:

{
  "single_subscription": true,
  "default_subscription_id": null,
  "default_guest_subscription_id": null,
  "default_paysystem": "stripe",
  "logo": "https://example.com/logo.png"
}

Alternate result

HTTP 401 when no resource context resolves. Supply the resource public key; this shape has no named API error.

Response excerpt:

[]

Recovery

HTTP statusAPI code / responseCauseNext action
401empty JSON array []No resolved resource context.Check the supplied public resource key and selected integration context. This response contains no request reference.

See embedded resource context for applicable shared checks; follow the local error table above.

Next task

Read reCAPTCHA settings when the integration needs its public key and explicit active flag.

Get resource reCAPTCHA settings

GET /api/v1/integrations/resource/recaptcha-settings

Read whether reCAPTCHA is enabled for the resource and which public key to use. This read does not validate a challenge or call a provider.

Before you call

Use the resource public key. No member token is required. A usable key depends on resource or global reCAPTCHA configuration. See embedded resource context for supplied configuration and shared checks.

Request

GET with no request body or request Content-Type requirement. Response media type is JSON. Permits guest access with the context described above. See credential transport.

NameLocationTypeRequirement / defaultMeaning and constraint
resourceheaderstringrequired contextPublic resource key; not the secret.

No query fields, filter, sort or pagination are read. An inactive resource setting can still accompany a public key; do not infer active from key presence.

Result

HTTP 200 JSON.

Field / projectionType / presenceMeaning
activebooleanResource reCAPTCHA enablement; fallback false. A key can still be present when inactive.
recaptcha_public_keystring / nullConfigured public key, with global fallback when resource key is empty. Does not expose the secret key or validate a challenge.

Example: get resource recaptcha settings

Read a public key while active is false. The application must honor the flag rather than infer activation from the key. Supply the sample configuration and runtimes. These three requests are equivalent.

cURL

curl "${WALLKIT_API_BASE}/api/v1/integrations/resource/recaptcha-settings" \
  -H "resource: ${RESOURCE_KEY}"

JavaScript

// Node.js 18+; built-in fetch. Supply existing integration configuration.
async function main() {
  const url = new URL("/api/v1/integrations/resource/recaptcha-settings", process.env.WALLKIT_API_BASE);
  const headers = { resource: process.env.RESOURCE_KEY };
  const response = await fetch(url, { method: "GET", headers });
  const body = await response.json();
  console.log(response.status, body);
}
main().catch(console.error);

Python

# Python 3; standard library only.
import json
import os
from urllib.error import HTTPError
from urllib.parse import urlencode, urljoin
from urllib.request import Request, urlopen

url = urljoin(os.environ["WALLKIT_API_BASE"], "/api/v1/integrations/resource/recaptcha-settings")
headers = {"resource": os.environ["RESOURCE_KEY"]}
request = Request(url, headers=headers, method="GET")
try:
    with urlopen(request) as response:
        print(response.status, json.load(response))
except HTTPError as error:
    print(error.code, json.load(error))

HTTP 200 response excerpt:

{
  "active": false,
  "recaptcha_public_key": "EXAMPLE_RECAPTCHA_PUBLIC_KEY"
}

Alternate result

No key is available from resource/global configuration. Leave the disabled feature inactive and ask the administrator to configure it if needed.

Response excerpt:

{
  "active": false,
  "recaptcha_public_key": null
}

Recovery

HTTP statusAPI code / responseCauseNext action
404resource_not_existsRequired resource is missing or unknown.Check the resource public key and selected integration context with the administrator.

See embedded resource context for applicable shared checks; follow the local error table above.

Next task

Read remaining embedded settings to configure the rest of the integration; challenge validation is outside this read.

Full diagram

Use the arrow keys to scroll. Escape closes this view.

Search documentation

Enter at least 2 characters.

    ↑ ↓ move through results · Enter opens · Escape closes