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
| Operation | Method / path |
|---|---|
| Get a published embedded template | GET /api/v1/integrations/templates/{name} |
| Get embedded resource settings | GET /api/v1/integrations/resource-settings |
| Get resource reCAPTCHA settings | GET /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.
| Name | Location | Type | Requirement / default | Meaning and constraint |
|---|---|---|---|---|
resource | header | string | required context | Public resource key; not the secret. |
name | path | string | yes | Template slug: one or more digit/word/hyphen/underscore characters ([\d\w\-\_]+); trimmed. |
v | query | string | optional | Version 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 / projection | Type / presence | Meaning |
|---|---|---|
name, title, slug | stored strings / nullable | Template name, display title and resource-scoped slug. |
template, javascript, css | base64 strings | Minified HTML, JavaScript and CSS respectively. Decode before use; this read does not execute them. |
settings | template-defined value / dynamic object | Template-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 status | API code / response | Cause | Next action |
|---|---|---|---|
| 404 | resource_not_exists | Required resource is missing or unknown. | Check the resource public key and selected integration context with the administrator. |
| 404 | template_not_found | No 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.
| Name | Location | Type | Requirement / default | Meaning and constraint |
|---|---|---|---|---|
resource | header | string | required context | Public 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 / projection | Type / presence | Meaning |
|---|---|---|
| top-level settings | configuration-dependent map | Settings inherited from resource/partner/default configuration after selected internal keys are removed. This is not a closed allowlist or privacy guarantee. |
logo | URL string / null | Resource logo URL; null without a logo. |
default_subscription_id, default_guest_subscription_id | stored IDs / null; representative | Configured member/guest default Pricings. |
single_subscription | configured flag; representative | Single-subscription setting. |
default_autorenewal_subscription, default_autorenewal_teams_subscription | configured flags; representative | Default renewal choices for member/team subscriptions. |
delay_downgrade | configured value; representative | Downgrade-delay setting; unit/format not established by this read. |
default_paysystem | configured label; representative | Default payment system. |
payments_in_live_mode | configured flag; representative | Live-payment setting. |
firebase_auth, firebase_firestore | configuration-defined values; representative | Firebase 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 status | API code / response | Cause | Next action |
|---|---|---|---|
| 401 | empty 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.
| Name | Location | Type | Requirement / default | Meaning and constraint |
|---|---|---|---|---|
resource | header | string | required context | Public 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 / projection | Type / presence | Meaning |
|---|---|---|
active | boolean | Resource reCAPTCHA enablement; fallback false. A key can still be present when inactive. |
recaptcha_public_key | string / null | Configured 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 status | API code / response | Cause | Next action |
|---|---|---|---|
| 404 | resource_not_exists | Required 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.