oEmbed (auto-embed)
Paste an Ardent link and have it render as a rich card automatically.
Ardent is an oEmbed provider. When you paste a link to a campaign, petition, event, job, reviewed entity, profile, blog post, or marketplace listing into a tool that supports oEmbed (Notion, Discord, Slack, and others), it renders as a live, sandboxed card instead of a plain link, the same widgets described in Widgets, with no code to copy.
Endpoint
https://ardent.africa/api/oembed?url=<encoded-ardent-url>&format=jsonEach canonical page also advertises this endpoint with a discovery tag, so most consumers find it on their own:
<link rel="alternate" type="application/json+oembed"
href="https://ardent.africa/api/oembed?url=...&format=json" />Supported URLs
| Paste a link like | Renders as |
|---|---|
https://ardent.africa/campaign/<slug> | campaign or petition card |
https://ardent.africa/events/<slug> | event card |
https://ardent.africa/jobs/<slug> | job card |
https://ardent.africa/polls/<slug> | poll or survey card |
https://ardent.africa/durbar/<slug> | durbar card (live audio room) |
https://ardent.africa/safety/case/<caseNumber> | community hazard report card |
https://ardent.africa/reviews/<slug> | reviewed-entity TrustScore card |
https://ardent.africa/supporter/<username> | supporter impact badge |
https://ardent.africa/blog/<slug> | blog post card |
https://ardent.africa/marketplace/<id> | listing card |
https://ardent.africa/post/<id> | post card |
https://ardent.africa/@<handle> | profile card (person, organisation or listing) |
A durbar card renders whatever state the room is in, because a scheduled room is the one people most want to share: announcing it before it happens is the entire point of scheduling it. The card never plays audio. Listening to a live room needs a sign-in and, for a recorded room, agreeing to be recorded first, and an embed on somebody else's page can deliver neither.
A hazard card's title is prefixed with how checked the report is, so an unfurl reads "Community report: road flooded at the junction" rather than stating it as fact. Many clients render only the title and never load the iframe, which makes that prefix the whole of what most people will see. The full verification sentence is returned as the author line for the same reason.
Only /safety/case/<caseNumber> unfurls. The hub, the hazard list and the emergency directory are
pages rather than resources, and a card about a page would say nothing.
A post card renders only if its author chose a public audience. A post limited to followers, to connections, or to a group is not embeddable, for the same reason it is not readable through the public API. A profile card renders only for a discoverable profile, so turning discoverability off removes it from every site that embedded it, not just from Ardent.
Any other URL returns 404. The provider only resolves Ardent content URLs.
Example
curl "https://ardent.africa/api/oembed?url=https%3A%2F%2Fardent.africa%2Fcampaign%2Fclean-water-for-tamale"{
"version": "1.0",
"type": "rich",
"provider_name": "Ardent Africa",
"provider_url": "https://ardent.africa",
"title": "Clean water for Tamale",
"thumbnail_url": "https://.../image.jpg",
"width": 420,
"height": 340,
"html": "<iframe src=\"https://docs.ardent.africa/embed/campaign/clean-water-for-tamale\" ... sandbox=\"allow-scripts allow-popups\"></iframe>",
"cache_age": 60
}Pass maxwidth / maxheight to cap the dimensions.
WordPress
WordPress only auto-embeds providers it knows about. The official Ardent Africa WordPress plugin (coming soon) registers Ardent as a provider so pasted links just work; until then, use the iframe or script embed on WordPress. Discovery-based consumers (Notion, Discord, etc.) work today.
Safety
The response is always type: rich with a sandboxed iframe (no allow-same-origin). It cannot
read the host page, takes no payments, and only deep-links back to ardent.africa for any action.
The provider never fetches the URL you pass; it resolves the resource through the public API.
Last updated: 24 August 2026
