Update SEO settings
Changed on<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
Saves SEO settings for the app and returns the settings as they now stand.
This is a partial update. Keys you leave out of settings keep their saved values. The same is true one level deeper for pages. A page absent from your pages object keeps its existing overrides, and within a page you do include, any field you leave out keeps its saved value. For example, sending only a page's title changes that field alone. Its description and every other page stay as they were. To hide or show a single page, Update page SEO settings changes just its noindex without sending the rest of the settings.
You can't remove a page or a page override through this endpoint. An empty pages object changes nothing, and a null page entry is rejected. To stop a page overriding a tag, send an empty string as that field's value instead.
A successful call means the settings are saved. The live site can take a little while to catch up, so confirm with Get SEO settings rather than treating the published pages as proof.
<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time. Send only the fields documented here. Other request fields are not supported and their behavior can change.</Warning>
Request
- Base URL: https://app.base44.com
- URL: https://app.base44.com/api/apps/{app_id}/seo/settings
- Auth: HTTP bearer
Path parameters
ID of the app whose SEO settings you want.
Request body
Example request
{
"settings": {
"platform_meta_injection_enabled": true,
"platform_jsonld_injection_enabled": true,
"robots_txt_enabled": true,
"sitemap_xml_enabled": true,
"ai_crawlers_enabled": true,
"synthesized_breadcrumb_enabled": true,
"canonical_url": "https://acme.com",
"content_query_params": [
"article"
],
"custom_json_ld": [
{
"confidence": "0.85",
"entity_name": "Product",
"field_mapping": {
"name": "title"
},
"json_ld_template": {
"@context": "https://schema.org",
"@type": "Product",
"name": "Acme CRM"
},
"schema_type": "Product"
}
],
"website_schema": {
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Acme CRM",
"url": "https://acme.com"
},
"organization_schema": {
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme",
"url": "https://acme.com"
},
"breadcrumb_schema": {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": []
},
"faq_schema": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": []
},
"pages": {
"Home": {
"description": "Track leads and deals in one place.",
"og_image": "https://cdn.example.com/acme-og.png",
"title": "Acme CRM"
}
}
}
}Response
The settings as they stand after the merge.
Example response
{
"result": {
"platform_meta_injection_enabled": true,
"platform_jsonld_injection_enabled": true,
"robots_txt_enabled": true,
"sitemap_xml_enabled": true,
"ai_crawlers_enabled": true,
"synthesized_breadcrumb_enabled": true,
"canonical_url": "https://acme.com",
"content_query_params": [
"article"
],
"custom_json_ld": [
{
"confidence": "0.85",
"entity_name": "Product",
"field_mapping": {
"name": "title"
},
"json_ld_template": {
"@context": "https://schema.org",
"@type": "Product",
"name": "Acme CRM"
},
"schema_type": "Product"
}
],
"website_schema": {
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Acme CRM",
"url": "https://acme.com"
},
"organization_schema": {
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme",
"url": "https://acme.com"
},
"breadcrumb_schema": {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": []
},
"faq_schema": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": []
},
"pages": {
"Home": {
"description": "Track leads and deals in one place.",
"og_image": "https://cdn.example.com/acme-og.png",
"title": "Acme CRM"
}
}
}
}Changes
- info
the endpoint scheme security
PersonalAccessTokenAuthwas added to the API
- info
- info
added the new optional request property
/// - info
added the optional property
///to the response with the status
- info