> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Preview JSON-LD

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the Schema.org markup Base44 generates from the app's entities, so you can see it before publishing it.

Base44 matches each entity to the Schema.org type its fields look most like, and leaves out any entity it can't match with reasonable confidence, so an app whose entities are all app-specific returns an empty list. Each entry carries the markup as a template: `{field}` placeholders name the entity fields, and Base44 injects the template into the page as it stands rather than filling it in per record.

Nothing here publishes the markup. Save the entries you want as `custom_json_ld` with [Update SEO settings](/api-reference/update-seo-settings), and note that saving is not enough on its own. Base44 injects saved markup only into a page of a search-eligible app, with `seo_disabled` off and `platform_jsonld_injection_enabled` on. Base44 counts an app as search-eligible when it's public. A private or workspace app never is, and an app that requires a login qualifies only where Base44 has turned search indexing on for it. Check all three when markup you saved isn't on the page.

<Warning>Send `confidence` as a string, or leave it out, if you save these entries. The number this endpoint returns is stored as-is, and the copy of your settings that serves the live site can't hold a fractional number, so saving it that way stops that copy updating. Base44's own generator writes `confidence` as a string for the same reason.</Warning>

This endpoint is limited to 30 requests per minute per app, and that budget is shared with the app's other SEO endpoints.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/seo/preview/json-ld
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/seo/preview/json-ld:
    get:
      summary: Preview JSON-LD
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns the Schema.org markup Base44 generates from the app's entities,
        so you can see it before publishing it.


        Base44 matches each entity to the Schema.org type its fields look most
        like, and leaves out any entity it can't match with reasonable
        confidence, so an app whose entities are all app-specific returns an
        empty list. Each entry carries the markup as a template: `{field}`
        placeholders name the entity fields, and Base44 injects the template
        into the page as it stands rather than filling it in per record.


        Nothing here publishes the markup. Save the entries you want as
        `custom_json_ld` with [Update SEO
        settings](/api-reference/update-seo-settings), and note that saving is
        not enough on its own. Base44 injects saved markup only into a page of a
        search-eligible app, with `seo_disabled` off and
        `platform_jsonld_injection_enabled` on. Base44 counts an app as
        search-eligible when it's public. A private or workspace app never is,
        and an app that requires a login qualifies only where Base44 has turned
        search indexing on for it. Check all three when markup you saved isn't
        on the page.


        <Warning>Send `confidence` as a string, or leave it out, if you save
        these entries. The number this endpoint returns is stored as-is, and the
        copy of your settings that serves the live site can't hold a fractional
        number, so saving it that way stops that copy updating. Base44's own
        generator writes `confidence` as a string for the same reason.</Warning>


        This endpoint is limited to 30 requests per minute per app, and that
        budget is shared with the app's other SEO endpoints.


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: preview_json_ld_api_apps__app_id__seo_preview_json_ld_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app.
            title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: The generated Schema.org markup.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonLdPreviewResponse'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, or you used a workspace API key.
            These endpoints accept a user's credentials only.
        '404':
          description: App not found.
        '429':
          description: Rate limit exceeded (30 requests per minute).
components:
  schemas:
    JsonLdPreviewResponse:
      properties:
        result:
          $ref: '#/components/schemas/JsonLdPreview'
          description: The generated markup.
      type: object
      required:
        - result
      title: JsonLdPreviewResponse
      description: The preview, wrapped in the field the endpoint returns it under.
    JsonLdPreview:
      properties:
        entities:
          items:
            $ref: '#/components/schemas/JsonLdEntity'
          type: array
          title: Entities
          description: >-
            One entry per entity Base44 could match to a Schema.org type. Empty
            when none of the app's entities match one confidently.
          example:
            - confidence: 0.85
              entity_name: Product
              field_mapping:
                name: title
              json_ld_template:
                '@context': https://schema.org
                '@type': Product
                name: '{title}'
              schema_type: Product
      type: object
      title: JsonLdPreview
      description: The Schema.org markup Base44 would publish for this app.
    JsonLdEntity:
      properties:
        entity_name:
          type: string
          title: Entity Name
          description: Name of the app entity this markup describes.
          example: Product
        schema_type:
          type: string
          title: Schema Type
          description: The Schema.org type Base44 matched the entity to.
          example: Product
        confidence:
          type: number
          title: Confidence
          description: >-
            How sure the match is, 0 to 1. Base44 leaves out any entity below
            0.2.
          example: 0.85
        json_ld_template:
          additionalProperties: true
          type: object
          title: Json Ld Template
          description: >-
            The JSON-LD Base44 would inject, with `{field}` placeholders naming
            the entity fields that fill it. Written verbatim into the page, so
            the placeholders are not substituted per record.
          example:
            '@context': https://schema.org
            '@type': Product
            description: '{summary}'
            name: '{title}'
        field_mapping:
          additionalProperties: true
          type: object
          title: Field Mapping
          description: >-
            Which entity field fills each Schema.org property, keyed by
            property.
          example:
            description: summary
            name: title
      type: object
      required:
        - entity_name
        - schema_type
        - confidence
        - json_ld_template
        - field_mapping
      title: JsonLdEntity
      description: One entity Base44 can describe with Schema.org markup.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````