{"openapi":"3.1.0","info":{"title":"CPAN API","version":"1.0.0","description":"The Perl package ecosystem — CPAN, the Comprehensive Perl Archive Network — as an API. Look up any distribution for its abstract, latest version, author, license, homepage / repository / bug-tracker links, runtime dependencies and download URL; find which distribution provides a given Perl module (e.g. JSON::PP, LWP::UserAgent); read a distribution's full release history with dates; and search the entire CPAN registry by keyword. Covers the Perl ecosystem from Mojolicious, Moose, DBI and Catalyst to JSON, Plack and the Dancer framework. Live from the official MetaCPAN API. Ideal for package dashboards, dependency and supply-chain tooling, Perl developer portals and CPAN ecosystem analytics. Open data from CPAN.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/cpan-api","description":"oanor gateway"}],"tags":[{"name":"CPAN"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/distribution":{"get":{"operationId":"get_v1_distribution","tags":["CPAN"],"summary":"Distribution metadata + dependencies","description":"","parameters":[{"name":"name","in":"query","required":true,"description":"Distribution name, e.g. Mojolicious","schema":{"type":"string"},"example":"Mojolicious"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"distribution":{"date":"2026-05-05T18:34:01","name":"Mojolicious","author":"SRI","status":"latest","license":["artistic_2"],"version":"9.45","abstract":"Real-time web framework","maturity":"released","resources":{"homepage":"https://mojolicious.org","bugtracker":"https://github.com/mojolicious/mojo/issues","repository":"https://github.com/mojolicious/mojo.git"},"download_url":"https://cpan.metacpan.org/authors/id/S/SR/SRI/Mojolicious-9.45.tar.gz","metacpan_url":"https://metacpan.org/release/Mojolicious","dependency_count":5,"runtime_dependencies":[{"module":"Sub::Util","version":"1.41"},{"module":"perl","version":"5.016"},{"module":"IO::Socket::IP","version":"0.37"}]}},"meta":{"timestamp":"2026-05-31T12:54:31.576Z","request_id":"6a4c6d37-b02e-489a-9036-fda6aa23060b"},"status":"ok","message":"Distribution retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/module":{"get":{"operationId":"get_v1_module","tags":["CPAN"],"summary":"Which distribution provides a module","description":"","parameters":[{"name":"name","in":"query","required":true,"description":"Perl module name, e.g. Moose or JSON::PP","schema":{"type":"string"},"example":"Moose"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"module":{"date":"2025-07-04T21:24:15","name":"Moose","author":"ETHER","release":"Moose-2.4000","version":"2.4000","abstract":"A postmodern object system for Perl 5","distribution":"Moose","metacpan_url":"https://metacpan.org/pod/Moose"}},"meta":{"timestamp":"2026-05-31T12:54:31.769Z","request_id":"cdd6d3c4-c9fa-4b73-baaf-efe1ab2a74e2"},"status":"ok","message":"Module retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/releases":{"get":{"operationId":"get_v1_releases","tags":["CPAN"],"summary":"Release history of a distribution","description":"","parameters":[{"name":"name","in":"query","required":true,"description":"Distribution name, e.g. Mojolicious","schema":{"type":"string"},"example":"Mojolicious"},{"name":"limit","in":"query","required":false,"description":"Max releases (1-100, default 25)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":25,"total":755,"releases":[{"date":"2026-05-05T18:34:01","author":"SRI","status":"latest","version":"9.45"},{"date":"2026-05-05T18:10:38","author":"SRI","status":"cpan","version":"9.44"},{"date":"2026-05-04T17:44:08","author":"SRI","status":"cpan","version":"9.43"},{"date":"2025-10-01T14:47:16","author":"SRI","status":"cpan","version":"9.42"},{"date":"2025-07-03T12:27:43","author":"SRI","status":"cpan","version":"9.41"},{"date":"2025-05-12T13:09:01","author":"SRI","status":"cpan","version":"9.40"},{"date":"2024-11-23T14:16:18","author":"SRI","status":"cpan","version":"9.39"},{"date":"2024-08-17T14:52:48","author":"SRI","status":"cpan","version":"9.38"},{"date":"2024-05-13T17:48:56","author":"SRI","status":"cpan","version":"9.37"},{"date":"2024-03-08T22:16:38","author":"SRI","status":"cpan","version":"9.36"},{"date":"2023-10-27T17:11:42","author":"SRI","status":"cpan","version":"9.35"},{"date":"2023-09-11T18:34:53","author":"SRI","status":"cpan","version":"9.34"},{"date":"2023-06-14T19:25:48","author":"SRI","status":"cpan","version":"9.33"},{"date":"2023-05-08T22:09:51","author":"SRI","status":"cpan","version":"9.32"},{"date":"2022-12-21T00:36:31","author":"SRI","status":"cpan","version":"9.31"},{"date":"2022-11-23T11:52:17","author":"SRI","status":"cpan","version":"9.30"},{"date":"2022-11-11T10:15:54","author":"SRI","status":"cpan","version":"9.29"},{"date":"2022-10-14T18:55:13","author":"SRI","status":"cpan","version":"9.28"},{"date":"2022-09-12T11:10:27","author":"SRI","status":"cpan","version":"9.27"},{"date":"2022-05-23T15:17:22","author":"SRI","status":"cpan","version":"9.26"},{"date":"2022-04-28T15:21:32","author":"SRI","status":"cpan","version":"9.25"},{"date":"2022-04-18T18:28:00","author":"SRI","status":"cpan","version":"9.24"},{"date":"2022-03-25T11:37:40","author":"SRI","status":"cpan","version":"9.23"},{"date":"2021-10-21T11:53:53","author":"SRI","status":"cpan","version":"9.22"},{"date":"2021-08-13T19:14:43","author":"SRI","status":"cpan","version":"9.21"}],"distribution":"Mojolicious"},"meta":{"timestamp":"2026-05-31T12:54:31.956Z","request_id":"eedd3e8e-ddce-482b-b05b-5aa262071465"},"status":"ok","message":"Releases retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/search":{"get":{"operationId":"get_v1_search","tags":["CPAN"],"summary":"Search the CPAN registry","description":"","parameters":[{"name":"q","in":"query","required":true,"description":"Search term","schema":{"type":"string"},"example":"JSON"},{"name":"limit","in":"query","required":false,"description":"Results (1-100, default 20)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":20,"query":"JSON","results":[{"name":"JSON","score":15.940096,"author":"ISHIGAKI","version":"4.11","abstract":"JSON (JavaScript Object Notation) encoder/decoder","metacpan_url":"https://metacpan.org/release/JSON"},{"name":"SPVM-JSON","score":12.457367,"author":"KIMOTO","version":"1.003","abstract":"JSON","metacpan_url":"https://metacpan.org/release/SPVM-JSON"},{"name":"JSON-TinyValidatorV4","score":8.84754,"author":"MILA","version":"0.003","abstract":"JSON Validator for v4 JSON Schema","metacpan_url":"https://metacpan.org/release/JSON-TinyValidatorV4"},{"name":"JSON-Create","score":8.7672205,"author":"BKB","version":"0.36","abstract":"Create JSON","metacpan_url":"https://metacpan.org/release/JSON-Create"},{"name":"App-jt","score":8.7672205,"author":"GUGOD","version":"0.43","abstract":"JSON transformer","metacpan_url":"https://metacpan.org/release/App-jt"},{"name":"JSON-Parse","score":8.7672205,"author":"BKB","version":"0.62","abstract":"Parse JSON","metacpan_url":"https://metacpan.org/release/JSON-Parse"},{"name":"App-jl","score":8.574889,"author":"BAYASHI","version":"0.20","abstract":"Show the \"JSON in JSON\" Log Nicely","metacpan_url":"https://metacpan.org/release/App-jl"},{"name":"App-JYJ","score":8.574889,"author":"INGY","version":"0.0.2","abstract":"Convert JSON to YAML to JSON to...","metacpan_url":"https://metacpan.org/release/App-JYJ"},{"name":"Mojo-Response-JSON-Path","score":8.574889,"author":"SCESANO","version":"0.004","abstract":"use JSON::Path for searching JSON responses","metacpan_url":"https://metacpan.org/release/Mojo-Response-JSON-Path"},{"name":"JSON-MaybeXS","score":8.346705,"author":"ETHER","version":"1.004008","abstract":"Use Cpanel::JSON::XS with a fallback to JSON::XS and JSON::PP","metacpan_url":"https://metacpan.org/release/JSON-MaybeXS"},{"name":"MojoX-JSON-XS","score":8.323601,"author":"CHGOVUK","version":"0.01","abstract":"A JSON::XS backend replacement for Mojo::JSON","metacpan_url":"https://metacpan.org/release/MojoX-JSON-XS"},{"name":"JSON-Schema-ToJSON","score":8.323601,"author":"LEEJO","version":"0.20","abstract":"Generate example JSON structures from JSON Schema definitions","metacpan_url":"https://metacpan.org/release/JSON-Schema-ToJSON"},{"name":"Template-Plugin-JSON-Escape","score":8.323601,"author":"NANTO","version":"0.02","abstract":"Adds a .json vmethod and a json filter.","metacpan_url":"https://metacpan.org/release/Template-Plugin-JSON-Escape"},{"name":"Data-Properties-JSON","score":8.255309,"author":"JOHND","version":"0.004","abstract":"JSON test fixtures.","metacpan_url":"https://metacpan.org/release/Data-Properties-JSON"},{"name":"HTML-Formhandler-Role-ToJSON","score":8.255309,"author":"JJNAPIORK","version":"0.002","abstract":"JSON serialization support","metacpan_url":"https://metacpan.org/release/HTML-Formhandler-Role-ToJSON"},{"name":"Mojo-Log-JSON","score":8.255309,"author":"MJEMMESON","version":"0.04","abstract":"Simple JSON logger","metacpan_url":"https://metacpan.org/release/Mojo-Log-JSON"},{"name":"jsonpretty","score":8.255309,"author":"MSTROUT","version":"1","abstract":"JSON prettification script","metacpan_url":"https://metacpan.org/release/jsonpretty"},{"name":"JSYNC","score":8.255309,"author":"INGY","version":"0.25","abstract":"JSon Yaml eNCoding","metacpan_url":"https://metacpan.org/release/JSYNC"},{"name":"JSON-SchemaValidator","score":8.255309,"author":"VTI","version":"1.04","abstract":"JSON Schema Validator","metacpan_url":"https://metacpan.org/release/JSON-SchemaValidator"},{"name":"JSON-Server","score":8.255309,"author":"BKB","version":"0.03","abstract":"JSON-only server","metacpan_url":"https://metacpan.org/release/JSON-Server"}]},"meta":{"timestamp":"2026-05-31T12:54:32.131Z","request_id":"d6b41e64-0403-4d72-ac3d-ff90c4d86a0b"},"status":"ok","message":"Distributions searched","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Source & options","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Live CPAN registry data. /v1/distribution = latest release metadata (abstract, author, license, resources, runtime dependencies, download URL); /v1/module = which distribution provides a Perl module; /v1/releases = release history of a distribution; /v1/search = search the registry. Distribution names use hyphens (Mojolicious, libwww-perl); module names use :: (Moose, JSON::PP).","source":"CPAN — the Comprehensive Perl Archive Network (via the MetaCPAN API)","endpoints":["/v1/distribution","/v1/module","/v1/releases","/v1/search","/v1/meta"]},"meta":{"timestamp":"2026-05-31T12:54:32.201Z","request_id":"e0eb6340-dccd-4d2d-baac-227e8d5b82f7"},"status":"ok","message":"Meta retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":3520,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":425,"monthly_call_quota":48200,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1285,"monthly_call_quota":237000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3375,"monthly_call_quota":1190000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/cpan-api"}