Wikimedia attribution
The Wikimedia Attribution Framework guides reusers on how to fairly credit Wikimedia content in external contexts — search results, AI assistants, blogs, apps, and more.
This skill covers what to show and how to fetch it. For general API etiquette and non-attribution endpoints, see wiki-apis. For the broader signal catalogue (pageviews, backlinks, etc.), see wiki-signals.
Principles
- Keep Wikimedia content recognizable — audiences must know where information comes from.
- Clear pathways back to the source — link to the original page.
- Trustworthy, verifiable content — surface quality and recency cues where appropriate.
- Made by humans — highlight volunteer community authorship when contextually appropriate.
Signal categories
| Category |
Purpose |
Reference |
| Essential |
Source, credit, link, title, license, brand mark, modification disclaimer |
references/signals.md |
| Trust & relevance |
Reference count, contributor count, page views, trending, last update |
references/signals.md |
| Ecosystem growth |
Participation and donation CTAs |
references/signals.md |
Attribution levels
Based on how many signals you surface and how visible they are:
- Basic — essential signals present; path to source; modifications disclosed if any.
- Approaching — all essential signals visible in context with the reused content.
- Ideal — approaching + at least one trust/relevance signal + at least one participation CTA.
See references/levels.md for the full ladder and contributing-back impact tiers.
Reuse scenarios
Six documented scenarios with required/recommended signals per context:
| Scenario |
Typical surface |
| Search |
Result snippets with inline source |
| AI assistants |
Answer + expandable sources panel |
| Social media |
Shared cards, embeds |
| Games & rich media |
In-world knowledge panels |
| Media & publications |
Blog posts, news articles |
| Audio |
Voice assistants (under review) |
See references/scenarios.md.
Fetching attribution data
Recommended: Wikimedia Attribution API (beta) — one endpoint for most signals.
GET https://{host}/w/rest.php/attribution/v0-beta/pages/{title}/signals?expand=trust_and_relevance,calls_to_action
Full technical details, alternative pathways, beta known issues, and wprov provenance guidance: references/api.md.
Quick example
const res = await fetch(
`https://en.wikipedia.org/w/rest.php/attribution/v0-beta/pages/${encodeURIComponent('Aurora')}/signals?expand=trust_and_relevance,calls_to_action`,
{ headers: { 'Api-User-Agent': 'MyApp/1.0 (https://example.org; you@example.org)' } },
)
const signals = await res.json()
// signals.essential.title, .link, .license, .default_brand_marks, .source_wiki
// signals.trust_and_relevance.page_views, .reference_count, .last_updated, …
// signals.calls_to_action.participation_ctas, .donation_ctas
Beta gaps (Jul 2026 — not client bugs)
| Field |
Status |
Workaround |
contributor_counts |
Returns null by design until ~July 2026 |
Core REST /w/rest.php/v1/page/{title}/history/counts/editors |
trending.relative.* |
Hardcoded false until ~Sept 2026 |
Use trending.top.* only |
| CTAs |
Static demo values via expand=calls_to_action |
Use cautiously in production |
| Commons media |
essential.credit present; sparse trust signals |
Expect partial trust_and_relevance |
See also
Inside ProtoWiki
ProtoWiki ships a reusable attribution stack:
src/components/attribution/ — AttributionCard, fetchAttributionSignals, fetchContributorCount (backfill), useAttributionSignals
- Templates:
example-attribution-search (Search scenario — hybrid wiki search + REST page/summary snippets)
Component contract: protowiki-components/references/attribution.md.
Fetch uses wikimediaApiFetchHeaders('attribution') from src/config.ts. CORS is * — works from the static GitHub Pages SPA.
1---2name: wiki-attribution3description: The Wikimedia Attribution Framework and Attribution API (beta) — principles, attribution levels (Basic / Approaching / Ideal), reuse scenarios (search, AI assistants, media, social, games, audio), all attribution signals (essential, trust/relevance, ecosystem growth), and how to fetch them via the Attribution API and alternative Wikimedia API pathways. Use when building off-wiki surfaces that credit Wikipedia or other Wikimedia content, picking which signals to show, or implementing attribution cards, source panels, or license notices.4---56# Wikimedia attribution78The [Wikimedia Attribution Framework](https://wikimedia-attribution.toolforge.org/) guides reusers on how to fairly credit Wikimedia content in external contexts — search results, AI assistants, blogs, apps, and more.910This skill covers **what** to show and **how** to fetch it. For general API etiquette and non-attribution endpoints, see [`wiki-apis`](../wiki-apis/SKILL.md). For the broader signal catalogue (pageviews, backlinks, etc.), see [`wiki-signals`](../wiki-signals/SKILL.md).1112## Principles13141. **Keep Wikimedia content recognizable** — audiences must know where information comes from.152. **Clear pathways back to the source** — link to the original page.163. **Trustworthy, verifiable content** — surface quality and recency cues where appropriate.174. **Made by humans** — highlight volunteer community authorship when contextually appropriate.1819## Signal categories2021| Category | Purpose | Reference |22| --- | --- | --- |23| Essential | Source, credit, link, title, license, brand mark, modification disclaimer | [`references/signals.md`](references/signals.md) |24| Trust & relevance | Reference count, contributor count, page views, trending, last update | [`references/signals.md`](references/signals.md) |25| Ecosystem growth | Participation and donation CTAs | [`references/signals.md`](references/signals.md) |2627## Attribution levels2829Based on how many signals you surface and how visible they are:3031- **Basic** — essential signals present; path to source; modifications disclosed if any.32- **Approaching** — all essential signals visible in context with the reused content.33- **Ideal** — approaching + at least one trust/relevance signal + at least one participation CTA.3435See [`references/levels.md`](references/levels.md) for the full ladder and contributing-back impact tiers.3637## Reuse scenarios3839Six documented scenarios with required/recommended signals per context:4041| Scenario | Typical surface |42| --- | --- |43| Search | Result snippets with inline source |44| AI assistants | Answer + expandable sources panel |45| Social media | Shared cards, embeds |46| Games & rich media | In-world knowledge panels |47| Media & publications | Blog posts, news articles |48| Audio | Voice assistants (under review) |4950See [`references/scenarios.md`](references/scenarios.md).5152## Fetching attribution data5354**Recommended:** [Wikimedia Attribution API](https://www.mediawiki.org/wiki/Attribution_API) (beta) — one endpoint for most signals.5556```57GET https://{host}/w/rest.php/attribution/v0-beta/pages/{title}/signals?expand=trust_and_relevance,calls_to_action58```5960Full technical details, alternative pathways, beta known issues, and `wprov` provenance guidance: [`references/api.md`](references/api.md).6162### Quick example6364```ts65const res = await fetch(66 `https://en.wikipedia.org/w/rest.php/attribution/v0-beta/pages/${encodeURIComponent('Aurora')}/signals?expand=trust_and_relevance,calls_to_action`,67 { headers: { 'Api-User-Agent': 'MyApp/1.0 (https://example.org; you@example.org)' } },68)69const signals = await res.json()70// signals.essential.title, .link, .license, .default_brand_marks, .source_wiki71// signals.trust_and_relevance.page_views, .reference_count, .last_updated, …72// signals.calls_to_action.participation_ctas, .donation_ctas73```7475### Beta gaps (Jul 2026 — not client bugs)7677| Field | Status | Workaround |78| --- | --- | --- |79| `contributor_counts` | Returns `null` by design until ~July 2026 | Core REST `/w/rest.php/v1/page/{title}/history/counts/editors` |80| `trending.relative.*` | Hardcoded `false` until ~Sept 2026 | Use `trending.top.*` only |81| CTAs | Static demo values via `expand=calls_to_action` | Use cautiously in production |82| Commons media | `essential.credit` present; sparse trust signals | Expect partial `trust_and_relevance` |8384## See also8586- [Attribution framework site](https://wikimedia-attribution.toolforge.org/)87- [Attribution API on MediaWiki.org](https://www.mediawiki.org/wiki/Attribution_API) — known issues table88- [`wiki-apis`](../wiki-apis/SKILL.md) — REST vs Action API, etiquette89- [`wiki-signals`](../wiki-signals/SKILL.md) — broader signal catalogue9091## Inside ProtoWiki9293ProtoWiki ships a reusable attribution stack:9495- **`src/components/attribution/`** — `AttributionCard`, `fetchAttributionSignals`, `fetchContributorCount` (backfill), `useAttributionSignals`96- **Templates:** `example-attribution-search` (Search scenario — hybrid wiki search + REST page/summary snippets)9798Component contract: [`protowiki-components/references/attribution.md`](../protowiki-components/references/attribution.md).99100Fetch uses `wikimediaApiFetchHeaders('attribution')` from `src/config.ts`. CORS is `*` — works from the static GitHub Pages SPA.