Know of an official OpenAPI document? Contribute it →
For Agents
Search openly-licensed images and audio across hundreds of millions of works, fetch details, related items, thumbnails, and licence metadata.
Use for: Find Creative Commons images of golden retrievers, Search for public domain audio recordings of bird songs, Get detailed licence information for a specific image, Retrieve related images to a given identifier
Not supported: Does not handle video search, image generation, or paid stock photo libraries - use for openly-licensed image and audio search only.
Openverse is a search engine for openly-licensed media - images and audio in the public domain or under Creative Commons licences. The REST API exposes search, detail, related items, thumbnails, oEmbed metadata, and source statistics for both images and audio, plus an OAuth2 application registration flow that grants higher rate limits via bearer tokens. Originally the Creative Commons Catalog API, Openverse aggregates more than 600 million openly-licensed works from sources like Wikimedia Commons, Flickr, and Smithsonian, and is maintained by the WordPress project.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Openverse API (Creative Commons Catalog), or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fopenverse.org%2Fopenverse" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fopenverse.org%2Fopenverse" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Openverse API (Creative Commons Catalog) API.
Search public domain and Creative Commons images via /images with licence, source, and category filters
Search openly-licensed audio via /audio with similar filters
Retrieve detailed metadata for an image or audio item by identifier
Get related items for a given image or audio identifier
Pull thumbnails or audio waveform data via dedicated /thumb and /waveform endpoints
Register an OAuth2 application via /auth_tokens/register and exchange credentials for a bearer token at /auth_tokens/token
Inspect remaining rate-limit headroom via /rate_limit
Patterns agents use Openverse API (Creative Commons Catalog) API for, with concrete tasks.
★ License-Safe Image Search for Editorial Tools
Editorial CMS plugins and content tools can call /images with a query string and licence filter to surface only commercially-usable, share-alike, or attribution-only images. Each returned record includes the licence URL, attribution string, and source so the editor can drop a properly attributed asset into a draft. The /images/{identifier} endpoint then exposes the full metadata including original filename and creator.
GET /images?q=mountain+sunset&license=cc0,by&page_size=20 and return each image's url, attribution, and license fields
Open Audio Library for Podcasts and Apps
Podcast tools, education apps, and game studios needing freely-licensed background audio can search /audio with filters for licence, category (music, sound_effect), and length. Detail and waveform endpoints provide the data needed to render a usable preview before download. Aggregating across Wikimedia Commons, Jamendo, and other sources, Openverse covers material no single host catalogues alone.
GET /audio?q=ambient+forest&license=cc0&category=music&page_size=10 and return each track's url, attribution, and waveform_url
OAuth2 Application for Higher Rate Limits
Production integrations should register an OAuth2 application via POST /auth_tokens/register, then exchange the client_id and client_secret at POST /auth_tokens/token for a bearer token. Bearer tokens unlock higher rate limits than anonymous calls. /rate_limit returns the remaining quota in the current window so the integration can throttle before hitting the cap.
POST /auth_tokens/register with name, description, and email, then POST /auth_tokens/token with client_credentials to obtain a bearer token
AI Agent Open Media Discovery
An AI agent helping a user find license-safe imagery for a presentation can use Openverse through Jentic to filter by licence, attribution requirement, and source without managing OAuth flow. Jentic registers and refreshes tokens, dispatches /images or /audio searches, and returns structured JSON the agent can render with proper attribution.
Through Jentic, search 'find creative commons images', resolve to GET /images, and execute with q='climate change'&license=cc0
17 endpoints — openverse is a search engine for openly-licensed media - images and audio in the public domain or under creative commons licences.
METHOD
PATH
DESCRIPTION
/images
Search openly-licensed images
/images/{identifier}
Get image details by identifier
/images/{identifier}/thumb
Fetch the image thumbnail
/audio
Search openly-licensed audio
/audio/{identifier}
Get audio details by identifier
/audio/{identifier}/waveform
Get the audio waveform data
/auth_tokens/register
Register an OAuth2 application
/auth_tokens/token
Obtain a bearer token
/images
Search openly-licensed images
/images/{identifier}
Get image details by identifier
/images/{identifier}/thumb
Fetch the image thumbnail
/audio
Search openly-licensed audio
/audio/{identifier}
Get audio details by identifier
/audio/{identifier}/waveform
Get the audio waveform data
/auth_tokens/register
Register an OAuth2 application
/auth_tokens/token
Obtain a bearer token
What agents get from Jentic-routed access to this vendor.
Setup
Wiring the Openverse API by hand means registering an application, exchanging your client credentials for a bearer token at /auth_tokens/token, and refreshing it before it expires. Through Jentic you install once, import the Openverse API from the API Directory, store the client credentials once, and your agent calls it while token refresh is handled for you.
Permission scoping
Openverse search targets travel as request parameters rather than resource ids in the path, so scoping is by operation: you limit the agent to the operations it needs, such as image search or audio search, and leave the token-registration endpoints out unless you want them. Every operation the agent can call is one you chose to allow.
Credential isolation
Your Openverse client credentials are stored once, encrypted, by your own Jentic One instance and injected at execution time. The bearer token never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'find creative commons images' or 'search openly licensed audio', and Jentic returns the matching Openverse operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using Openverse API (Creative Commons Catalog) API through Jentic.
What authentication does the Openverse API use?
Openverse supports unauthenticated access at lower rate limits and OAuth2 bearer tokens for elevated limits. Tokens are obtained by registering an application at /auth_tokens/register and exchanging credentials at /auth_tokens/token. Through Jentic, client credentials are stored encrypted in the vault and the bearer token is refreshed automatically.
Can I filter Openverse search results by license type?
Yes - both /images and /audio accept a license query parameter (e.g. cc0, by, by-sa) and a license_type parameter (commercial, modification). Each returned record includes the license, license_url, and attribution fields so downstream consumers can comply with the licence terms.
What are the rate limits for the Openverse API?
Anonymous requests are limited to a smaller per-IP window; OAuth2 bearer tokens raise the limit substantially. /rate_limit returns the remaining quota for the current window so an integration can throttle proactively rather than reacting to 429 responses.
How do I search for Creative Commons images through Jentic?
Search Jentic for 'search creative commons images', load the GET /images schema, and execute with q, license, and page_size parameters. Jentic returns structured JSON including licence and attribution fields per result.
Does the Openverse API include video search?
Not in the current spec - Openverse covers images and audio. Video is on the project roadmap but is not exposed by this v1 API. For video, look at YouTube Data API or Vimeo's API depending on your licensing needs.
How do I get a thumbnail for an Openverse image?
Call GET /images/{identifier}/thumb with the image's identifier. The response is the thumbnail bytes (an image), suitable for direct rendering in a UI without re-fetching the original full-resolution file.
Can I limit what my agent is allowed to do with the Openverse API?
Yes. Because Openverse search targets travel as request parameters rather than ids in the path, your self-hosted Jentic One instance scopes access by operation, and your own rules decide which endpoints the agent may call. You can allow just the operations it needs, such as image search on GET /images or audio search on GET /audio, and leave the OAuth2 registration endpoints POST /auth_tokens/register and POST /auth_tokens/token out unless the agent must obtain its own token. Every operation the agent can reach is one you chose to permit, and the stored client credentials are injected at execution time rather than exposed to the agent.
GET STARTED