SchemaCheck/ DocsDashboard

SDK Examples

Ruby

Uses Ruby's built-in Net::HTTP library or Faraday for a cleaner interface. Works with Rails, Sinatra, or plain scripts.

Installation

bash
# Net::HTTP is built into Ruby — no gems required
# To use Faraday instead:
gem install faraday

Validate a URL

ruby
require 'net/http'
require 'uri'
require 'json'

API_KEY = ENV.fetch('SCHEMACHECK_API_KEY')
BASE_URL = 'https://schemacheck.dev/api/v1'

def validate_url(url)
  uri = URI("#{BASE_URL}/validate")
  uri.query = URI.encode_www_form(url: url, access_key: API_KEY)

  response = Net::HTTP.get_response(uri)
  data = JSON.parse(response.body)

  unless response.is_a?(Net::HTTPSuccess) && data['success']
    error = data.fetch('error', {})
    raise "[#{error['code']}] #{error['message']}"
  end

  data
end

result = validate_url('https://stripe.com')

puts "Score: #{result['summary']['score']}/100"
puts "Schemas found: #{result['schemas_found']}"

result['schemas'].each do |schema|
  puts "\n[#{schema['type']}] valid=#{schema['valid']} rich_result=#{schema['rich_result_eligible']}"

  schema['errors'].each do |error|
    puts "  ✗ #{error['property']}: #{error['message']}"
    puts "    Fix: #{error['fix']}"
  end

  schema['warnings'].each do |warning|
    puts "  ⚠ #{warning['property']}: #{warning['message']}"
  end
end

Validate raw JSON-LD

ruby
require 'net/http'
require 'uri'
require 'json'

API_KEY = ENV.fetch('SCHEMACHECK_API_KEY')

def validate_jsonld(jsonld)
  uri = URI('https://schemacheck.dev/api/v1/validate')
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(uri)
  request['Content-Type'] = 'application/json'
  request['x-api-key'] = API_KEY
  request.body = JSON.generate({ jsonld: jsonld })

  response = http.request(request)
  data = JSON.parse(response.body)

  unless response.is_a?(Net::HTTPSuccess) && data['success']
    error = data.fetch('error', {})
    raise "[#{error['code']}] #{error['message']}"
  end

  data
end

result = validate_jsonld({
  '@context'      => 'https://schema.org',
  '@type'         => 'Article',
  'headline'      => 'How to validate Schema.org structured data',
  'author'        => { '@type' => 'Person', 'name' => 'Jane Doe' },
  'datePublished' => '2026-03-18',
  'image'         => 'https://example.com/photo.jpg'
})

schema = result['schemas'].first
if !schema['valid']
  schema['errors'].each { |e| puts "Error: #{e['property']}: #{e['fix']}" }
  exit 1
end

puts "Valid! Rich result eligible: #{schema['rich_result_eligible']}"

Using Faraday

ruby
require 'faraday'
require 'json'

API_KEY = ENV.fetch('SCHEMACHECK_API_KEY')

conn = Faraday.new(url: 'https://schemacheck.dev/api/v1') do |f|
  f.response :raise_error
end

# GET request with access_key query param
response = conn.get('validate') do |req|
  req.params['url']        = 'https://stripe.com'
  req.params['access_key'] = API_KEY
end

data = JSON.parse(response.body)
puts "Score: #{data['summary']['score']}/100"
puts "Cached: #{data['meta']['cached']}"

Next steps