Last updated: March 22, 2026

Overview

The foundational feature of ValidGraph. Submit any public URL and the engine extracts all JSON-LD blocks from the page, parses them against Schema.org specifications, and returns a detailed validation report with errors, warnings, and recommendations.

How It Works

1. User submits a URL via the dashboard or API
2. ValidGraph fetches the page and extracts all blocks
3. Each block is parsed and validated against Schema.org type definitions
4. A validation report is generated with:
– Detected schema types
– Required properties (present/missing)
– Recommended properties
– Syntax errors
– Nested entity validation

Tier Availability

| Tier | Limit |
|——|——-|
| Free | 5 validations/day |
| Pro | 1,000 validations/month |
| Agency | 10,000 validations/month |
| Enterprise | Unlimited |

API Reference

POST /api/v1/validate

Request:

{
  "url": "https://example.com/article"
}

Response:

{
  "success": true,
  "data": {
    "url": "https://example.com/article",
    "schemas_found": 2,
    "types": ["Article", "BreadcrumbList"],
    "score": 85,
    "errors": [],
    "warnings": [
      {
        "type": "Article",
        "property": "image",
        "message": "Recommended property 'image' is missing"
      }
    ]
  }
}

JSON-LD Paste Validation: Validate markup directly without a URL
Schema Completeness Score: Detailed scoring of property coverage
Validation History: Track all past validations (Pro+)

Quick Start: Validate Your First URL

Step 1: Submit a URL via the API

curl -X POST https://api.validgraph.io/wp-json/validgraph/v1/validate 
  -H "Authorization: Bearer YOUR_API_KEY" 
  -H "Content-Type: application/json" 
  -d '{"data_url": "https://example.com/article"}'

Step 2: Parse the validation response — You’ll receive:
types: All schema types detected (e.g., [“Article”, “BreadcrumbList”])
score: Overall completeness score (0-100)
errors: Critical syntax issues
warnings: Missing recommended properties

Step 3: Review the report in your dashboard at validgraph.io/validations

Real-world example:
A recipe blog submits https://recipes.example.com/chocolate-cake. The validator finds:
– 1 Recipe schema detected
– Score: 62/100 (missing image, prepTime, cookTime)
– Warning: Image is recommended but missing
– The dashboard suggests adding these properties to improve rich snippet eligibility

Technical Details

Validation Flow

The validation engine processes URLs as follows:

1. Fetch & Extract: Makes HTTP request to the URL and extracts all blocks using regex
2. Parse JSON: Parses each block as valid JSON (returns error if malformed)
3. Type Detection: Identifies @type field; matches against supported types list (Free: 5 types; Pro+: 25+ types)
4. Property Validation: For each detected type, validates:
– Required properties presence and value types (Article requires: headline, author, datePublished)
– Recommended properties (Article recommends: image, description, dateModified, publisher)
– Optional properties (Article optionals: url, mainEntityOfPage, keywords)
– RangeValidator checks value constraints (e.g., Date format, URL validity, Integer ranges)
5. Nested Entity Validation: Recursively validates nested objects (author, publisher, etc.)
6. Scoring: Calculates completeness score: (required_met×3 + recommended_met×2 + optional_met×1) / max_points × 100

Request/Response Example

Request:

{
  "data_url": "https://example.com/blog/article-123"
}

Response (Success):

{
  "success": true,
  "data": {
    "url": "https://example.com/blog/article-123",
    "validation_id": "val_abc123xyz",
    "schemas_found": 1,
    "types": ["Article"],
    "score": 78,
    "completeness": {
      "Article": {
        "required": {"headline": true, "author": true, "datePublished": true},
        "recommended": {"image": false, "description": false, "dateModified": true, "publisher": false},
        "optional": {"url": true, "keywords": false}
      }
    },
    "errors": [],
    "warnings": [
      {
        "type": "Article",
        "property": "image",
        "severity": "medium",
        "message": "Recommended property 'image' is missing. Including an image significantly improves rich snippet eligibility."
      },
      {
        "type": "Article",
        "property": "publisher",
        "severity": "low",
        "message": "Optional property 'publisher' is missing."
      }
    ],
    "extraction_method": "json_ld"
  }
}

Response (Invalid JSON):

{
  "success": false,
  "error": {
    "code": "INVALID_JSON",
    "message": "Malformed JSON-LD in script block: Unexpected token } at line 15"
  }
}

Tier Behavior

Free tier: Validates only Article, FAQPage, BreadcrumbList, Organization, WebSite; limited to 5/day
Pro tier: Validates 25 curated types; 1,000/month allowance
Agency/Enterprise: Full vocabulary fallback (validates any schema.org type); higher rate limits

References

Schema.org Article Type: https://schema.org/Article
Google Rich Results Requirements: https://developers.google.com/search/docs/appearance/structured-data/article
JSON-LD Specification: https://json-ld.org/
Schema.org Core Vocabulary: https://schema.org/
Structured Data Testing Tool: https://search.google.com/test/rich-results