OpenAI Custom GPT Actions Integration

Connect your Custom GPT to JSON-LD Schema.org validation capabilities

Quick Start Guide
  1. Get an API Key: Register for an account to access the validation API
  2. Create a Custom GPT: Go to OpenAI GPT Builder
  3. Add Actions: Configure the actions using the schema and authentication below
  4. Test Integration: Validate JSON-LD data directly through your Custom GPT
OpenAPI Schema for Custom GPT Actions

Copy and paste this simplified OpenAPI schema into your Custom GPT Actions configuration:

Updated: This schema supports direct JSON-LD input (no wrapper required) for easier Custom GPT integration.
{
  "openapi": "3.1.0",
  "info": {
    "title": "JSON-LD Schema.org Validation API",
    "description": "Validate JSON-LD data against Schema.org vocabulary with version awareness and custom context support",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://validator.georefit.com"
    }
  ],
  "paths": {
    "/api/validate": {
      "post": {
        "summary": "Validate JSON-LD data",
        "description": "Validates JSON-LD data against Schema.org vocabulary",
        "operationId": "validateJsonLd",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Send JSON-LD data directly for validation",
                "properties": {
                  "@context": {
                    "description": "JSON-LD context (string URL or object)",
                    "example": "https://schema.org"
                  },
                  "@type": {
                    "type": "string",
                    "description": "Schema.org type",
                    "example": "Person"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name property (example)",
                    "example": "John Doe"
                  }
                },
                "required": ["@type"],
                "additionalProperties": true
              },
              "examples": {
                "person": {
                  "summary": "Person Example",
                  "description": "Basic person schema validation",
                  "value": {
                    "@context": "https://schema.org",
                    "@type": "Person",
                    "name": "John Doe",
                    "email": "john@example.com",
                    "jobTitle": "Software Engineer"
                  }
                },
                "organization": {
                  "summary": "Organization Example", 
                  "description": "Company or organization schema validation",
                  "value": {
                    "@context": "https://schema.org",
                    "@type": "Organization",
                    "name": "Example Corp",
                    "url": "https://example.com",
                    "description": "A technology company"
                  }
                },
                "article": {
                  "summary": "Article Example",
                  "description": "Blog post or article schema validation",
                  "value": {
                    "@context": "https://schema.org",
                    "@type": "Article",
                    "headline": "How to Use JSON-LD",
                    "description": "A comprehensive guide to structured data",
                    "author": {
                      "@type": "Person",
                      "name": "Jane Smith"
                    },
                    "datePublished": "2025-09-01"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Validation successful",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "description": "Whether the JSON-LD is valid"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Error type"
                          },
                          "message": {
                            "type": "string",
                            "description": "Error message"
                          },
                          "property": {
                            "type": "string",
                            "description": "Property that caused the error"
                          }
                        }
                      }
                    },
                    "schema_version": {
                      "type": "string",
                      "description": "Schema.org version used for validation"
                    },
                    "suggestions": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Suggestions to fix errors"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/validate-url": {
      "post": {
        "summary": "Validate JSON-LD from a URL",
        "description": "Fetches and validates JSON-LD data from a webpage",
        "operationId": "validateJsonLdFromUrl",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL containing JSON-LD to validate"
                  },
                  "schema_version": {
                    "type": "string",
                    "default": "latest",
                    "enum": ["latest", "29.2", "29.1", "29.0", "28.1"],
                    "description": "Schema.org version to validate against"
                  }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Validation result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "description": "Whether the JSON-LD is valid"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Error type"
                          },
                          "message": {
                            "type": "string",
                            "description": "Error message"
                          },
                          "property": {
                            "type": "string",
                            "description": "Property that caused the error"
                          }
                        }
                      }
                    },
                    "schema_version": {
                      "type": "string",
                      "description": "Schema.org version used for validation"
                    },
                    "suggestions": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Suggestions to fix errors"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/schema-versions": {
      "get": {
        "summary": "Get available Schema.org versions",
        "description": "Returns list of supported Schema.org versions",
        "operationId": "getSchemaVersions",
        "responses": {
          "200": {
            "description": "Available schema versions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "versions": {
                      "type": "object",
                      "description": "Available Schema.org versions"
                    },
                    "default": {
                      "type": "string",
                      "description": "Default version"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {},
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ]
}
Authentication Configuration
Step 1: Get Your API Key

Register for an account and create an API key from your dashboard.

Step 2: Configure Authentication in Custom GPT

In your Custom GPT Actions settings, configure authentication as follows:

Authentication Type:
API Key
API Key:
Your API key from dashboard
Auth Type:
Custom
Custom Header Name:
X-API-Key
Note: Your API key has a monthly limit of 1,000 requests. Monitor usage in your dashboard.
Example Custom GPT Instructions

Add these instructions to your Custom GPT to enable JSON-LD validation:

Custom Instructions:
You are a JSON-LD Schema.org validation assistant. You can help users:

1. Validate JSON-LD data against Schema.org vocabulary
2. Check JSON-LD data from URLs/websites
3. Provide suggestions for fixing validation errors
4. Explain Schema.org types and properties

When users provide JSON-LD data or ask you to validate a website, use the available actions:
- Use validateJsonLd for direct JSON-LD validation
- Use validateJsonLdFromUrl for validating websites
- Use getSchemaVersions to show supported Schema.org versions

Always explain validation results in a clear, helpful way and provide actionable suggestions for fixing any errors found.
Example Conversations:
User:

"Validate this JSON-LD for a restaurant"

GPT Response:

GPT will use the validateJsonLd action and provide validation results with suggestions.

User:

"Check the structured data on example.com"

GPT Response:

GPT will use validateJsonLdFromUrl to analyze the website's JSON-LD.

API Request Examples:
✅ Direct JSON-LD (Custom GPT sends this):
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Example Restaurant",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St"
  }
}
📋 API Response:
{
  "valid": true,
  "errors": [],
  "schema_version": "29.2",
  "suggestions": []
}
Common Use Cases
SEO Optimization
  • Validate website structured data
  • Check Schema.org compliance
  • Fix SEO-related markup issues
Development Support
  • Validate JSON-LD during development
  • Test different Schema.org versions
  • Debug markup integration
Client Services
  • Audit client websites
  • Generate validation reports
  • Provide improvement recommendations
Troubleshooting
Common Issues:

  • Check that your API key is correctly entered
  • Ensure the header name is set to X-API-Key
  • Verify your API key is active in your dashboard

  • Check your usage in the dashboard
  • Wait until the next month for limit reset
  • Create additional API keys if needed (up to 5 per account)

  • Copy the entire OpenAPI schema from above
  • Ensure JSON formatting is valid
  • Check that the server URL matches your deployment