OpenAI Custom GPT Actions Integration
Connect your Custom GPT to JSON-LD Schema.org validation capabilities
Quick Start Guide
- Get an API Key: Register for an account to access the validation API
- Create a Custom GPT: Go to OpenAI GPT Builder
- Add Actions: Configure the actions using the schema and authentication below
- 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