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 faradayValidate 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
endValidate 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']}"