openapi: 3.0.3
info:
title: 'OpenMetaAPI Documentation'
description: 'Fast, stateless API for URL meta extraction and DNS lookups.'
version: 1.0.0
servers:
-
url: 'https://openmetaapi.syofyanzuhad.dev'
tags:
-
name: 'DNS Resolution'
description: ''
-
name: Endpoints
description: ''
-
name: 'Metadata Extraction'
description: ''
components:
securitySchemes:
default:
type: apiKey
name: X-API-Key
in: header
description: 'You can retrieve your API key from your dashboard.'
security:
-
default: []
paths:
/api/v1/dns:
get:
summary: 'Resolve DNS'
operationId: resolveDNS
description: "Resolve DNS records for a given domain. Supported types for all users: A, AAAA, MX, CNAME, TXT, NS.\nPro users can also resolve: SOA, PTR, SRV, CAA, ANY."
parameters:
-
in: query
name: domain
description: 'The domain name to resolve.'
example: laravel.com
required: true
schema:
type: string
description: 'The domain name to resolve.'
example: laravel.com
-
in: query
name: type
description: 'The record type.
SOA, PTR, SRV, CAA, ANY are Pro Only. Default: A.'
example: MX
required: false
schema:
type: string
description: 'The record type.
SOA, PTR, SRV, CAA, ANY are Pro Only. Default: A.'
example: MX
-
in: header
name: X-API-Key
description: ''
example: '{YOUR_API_KEY}'
schema:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
data:
domain: laravel.com
type: MX
records:
-
host: laravel.com
class: IN
ttl: 300
type: MX
pri: 1
target: aspmx.l.google.com
properties:
success:
type: boolean
example: true
data:
type: object
properties:
domain:
type: string
example: laravel.com
type:
type: string
example: MX
records:
type: array
example:
-
host: laravel.com
class: IN
ttl: 300
type: MX
pri: 1
target: aspmx.l.google.com
items:
type: object
properties:
host:
type: string
example: laravel.com
class:
type: string
example: IN
ttl:
type: integer
example: 300
type:
type: string
example: MX
pri:
type: integer
example: 1
target:
type: string
example: aspmx.l.google.com
tags:
- 'DNS Resolution'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
domain:
type: string
description: 'Must match the regex /^(?!:\/\/)(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/.'
example: '!://):8hE.):EkR.)k{2,}'
type:
type: string
description: ''
example: PTR
enum:
- A
- AAAA
- CNAME
- MX
- TXT
- NS
- SOA
- PTR
- SRV
- CAA
- ANY
nullable: true
required:
- domain
/api/v1/internal/benchmark:
get:
summary: 'Handle the incoming request for stress testing.'
operationId: handleTheIncomingRequestForStressTesting
description: 'This endpoint is optimized for high-throughput testing.'
parameters:
-
in: header
name: X-API-Key
description: ''
example: '{YOUR_API_KEY}'
schema:
type: string
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized: Invalid API Key Format'
properties:
message:
type: string
example: 'Unauthorized: Invalid API Key Format'
tags:
- Endpoints
/api/v1/meta:
get:
summary: 'Extract Metadata'
operationId: extractMetadata
description: "Extract comprehensive metadata from any public URL, including Title, Description, Favicon, Open Graph, and Twitter Cards.\nPro users also receive JSON-LD, Keywords, Author, Canonical URL, Language, and Performance Metrics."
parameters:
-
in: query
name: url
description: 'The URL to extract metadata from.'
example: 'https://laravel.com'
required: true
schema:
type: string
description: 'The URL to extract metadata from.'
example: 'https://laravel.com'
-
in: query
name: force
description: 'Bypass cache and force a fresh extraction.
Pro Only'
example: false
required: false
schema:
type: boolean
description: 'Bypass cache and force a fresh extraction.
Pro Only'
example: false
-
in: header
name: X-API-Key
description: ''
example: '{YOUR_API_KEY}'
schema:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
oneOf:
-
description: ''
type: object
example:
success: true
data:
url: 'https://laravel.com'
meta:
title: 'Laravel - The PHP Framework For Web Artisans'
description: 'Laravel is a web application framework with expressive, elegant syntax...'
favicon: 'https://laravel.com/favicon.ico'
open_graph:
'og:title': Laravel
'og:description': ...
twitter_card:
'twitter:card': summary_large_image
properties:
success:
type: boolean
example: true
data:
type: object
properties:
url:
type: string
example: 'https://laravel.com'
meta:
type: object
properties:
title:
type: string
example: 'Laravel - The PHP Framework For Web Artisans'
description:
type: string
example: 'Laravel is a web application framework with expressive, elegant syntax...'
favicon:
type: string
example: 'https://laravel.com/favicon.ico'
open_graph:
type: object
properties:
'og:title':
type: string
example: Laravel
'og:description':
type: string
example: ...
twitter_card:
type: object
properties:
'twitter:card':
type: string
example: summary_large_image
-
description: 'Pro User'
type: object
example:
success: true
data:
url: 'https://laravel.com'
meta:
title: Laravel
description: ...
favicon: ...
open_graph: { }
twitter_card: { }
author: 'Taylor Otwell'
keywords:
- php
- framework
canonical: 'https://laravel.com/'
lang: en
robots: 'index, follow'
json_ld: []
metrics:
fetch_duration_ms: 150.5
http_status: 200
properties:
success:
type: boolean
example: true
data:
type: object
properties:
url:
type: string
example: 'https://laravel.com'
meta:
type: object
properties:
title:
type: string
example: Laravel
description:
type: string
example: ...
favicon:
type: string
example: ...
open_graph:
type: object
properties: { }
twitter_card:
type: object
properties: { }
author:
type: string
example: 'Taylor Otwell'
keywords:
type: array
example:
- php
- framework
items:
type: string
canonical:
type: string
example: 'https://laravel.com/'
lang:
type: string
example: en
robots:
type: string
example: 'index, follow'
json_ld:
type: array
example: []
metrics:
type: object
properties:
fetch_duration_ms:
type: number
example: 150.5
http_status:
type: integer
example: 200
tags:
- 'Metadata Extraction'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
force:
type: boolean
description: ''
example: false
nullable: true
required:
- url