CANOA — Corpus Apertum Nummorum Orbis Antiqui | Open catalog of ancient world coins Skip to content

gold coin of Vespasian

RIC II, Part 1 (second edition) Vespasian 22

Obv.: Head of Vespasian, laureate, right
Rev.: Mars, helmeted, naked except for cloak round waist, advancing right, holding spear in right hand and aquila over left shoulder in left

View coin Browse the catalog Create your collection

Image: © British Museum · licence

RIC II, Part 1 (second edition) Vespasian 22 obv

About the project

home intro

Coin images belong to the museums holding the collections and are used in accordance with each museum's open-access policy (many collections permit non-commercial use only, with attribution). The licence of every collection is listed on the About page. Data on coin types — types, legends, metrology — is open under the Open Database License (ODbL).

Data of individual sources is available under the original licences, including restrictions on commercial use.

For schools: Canoa // edu turns the catalog into ready-to-grade LTI 1.3 assignments for Canvas, Schoology and Moodle — unique coins per student, auto-grading, FERPA-safe.

about · data · most common coin · skills on github · DOI (Zenodo) · skills.sh

Agent skills: canoa-api (API usage) and canoa-hoard-analysis (regional hoard analysis → coin distribution by emperors/periods → charts → PDF article). Install: npx skills add canoa-dev/canoa-skills

API for LLMs

Endpoint Description
GET /api/search?q=<text> search rulers, mints, denominations and coins; returns JSON with type/label/uri/count/url
GET /api/coin/<id>/ coin card by numeric id
GET /api/coins/<slug>/ coin card by slug (stable URL from /api/coins)
GET /api/coins?q=<…>&authority=<uri>&mint=<id> JSON list of coins with filters (q, authority, mint, denomination, material, dataset, has_image, date_from, date_to, sort, page, per_page); mint — numeric id from /api/filter-options?field=mint; sort=specimens/-specimens — by museum specimen count (most collected first / rarest first); every item has specimen_count
GET /api/filter-options?field=<…> filter values (mint, authority, denomination, material) with counts
GET /api/mints.geojson mints as GeoJSON for the map
GET /api/hoards?lat_min=&lat_max=&lon_min=&lon_max= hoards in a region (bounding box by findspot coordinates); + q, dataset, page, per_page
GET /api/hoards/<id>/ hoard detail with its coin types (authority, mint, dates)
GET /api/authorities full list of rulers/emperors with type counts; + q, has_types, page, per_page
GET /api/authorities/<id>/ ruler detail + his coin types (paged)
GET /api/mints full list of mints with coordinates and type counts
GET /api/regions regions/civilizations with type counts
GET /api/dies coin dies (Republican Die Project); + q, die_type
GET /api/denominations, /api/materials full reference lists with type counts
GET /api/stats catalog statistics (types, specimens, hoards, mints, authorities…)
GET /api/coins/<id>/specimens museum specimens of a coin with metrics (weight, diameter, axis, collection) and specimen_url per item
GET /api/specimens/<id>/ individual specimen card — direct mirror of an external collection record (finds.org.uk, British Museum, …)
GET /api/coins?hoard_id=<id> coin types of a specific hoard
GET /api/crawlers?days=<n> crawler/bot traffic stats for a period: categories, HTTP codes, top paths/IPs/user agents; days (1–14, default 7) or from/to (YYYY-MM-DD)
GET /llms.txt short site map for LLM crawlers
GET /llms-full.txt full documentation for LLMs: data model and complete API reference
GET /agents.md instructions for autonomous agents and crawlers: workflow, citation, constraints
GET /hermes.md instructions for Hermes Agent (Nous Research)

human pages: /search/ · /coins/<slug>/ · /data/

Why the API

The API returns the same data as the catalog pages, but as JSON — no HTML parsing needed. LLM agents, crawlers and researchers get structured coin lists, coin cards and filter values, ready for summaries and tables.

Example: coins of Nero struck in Rome

  1. Find the ruler: /api/search?q=Nero → ruler result with uri=http://nomisma.org/id/nero
  2. Filter values: /api/filter-options?field=mint → Rome id (Rome = 36)
  3. Coin list: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100 → JSON with label, catalogue number, dates and url of each coin

Example: most collected coin types

  1. Sort by the number of museum specimens, most collected first:
    curl "https://canoanumis.org/api/coins?sort=specimens&per_page=5"
  2. Each item of results contains: ocre_id (catalogue number, e.g. ric.1(2).ner.1), mint/mint_id, authority/authority_uri (nomisma.org), date_from/date_to (years, negative = BC), image (URL, empty if the file is lost), specimen_count (museum specimens of the type)

API functions

  • search, filter-options — find rulers, mints, denominations and filter values (nomisma.org URIs, mint numeric ids)
  • coins — filtered lists; coin card — /api/coin/<id>/ or /api/coins/<slug>/
  • coins/<id>/specimens — metrology of a type: weight, diameter, axis per museum specimen
  • hoards, hoards/<id>/ — regional analysis by findspots (bbox), coin composition of each hoard
  • authorities, mints, regions, dies, denominations, materials — reference lists with type counts
  • stats — catalog totals; mints.geojson — mint map; crawlers — bot traffic for a period

Machine files: llms.txt — site map for crawlers; llms-full.txt — full API documentation; agents.md — rules for autonomous agents; hermes.md — guide for Hermes Agent.

Full instructions for crawlers (llms.txt + llms-full.txt)
# CANOA — Corpus Apertum Nummorum Orbis Antiqui
> CANOA is an open corpus (catalog) of ancient world coinage: Greece, Rome, Persia, Carthage and other civilizations. Open data, images and scholarly coin descriptions.

Main site: https://canoanumis.org/.

Contacts: suggestions — info@canoanumis.org; complaints — abuse@canoanumis.org.

Cookies/tracking: for humans, consent is confirmed by the banner button (cookie canoa_consent) or by continuing to use the site; for bots and crawlers, consent to cookies and anonymized analytics (Yandex.Metrika) is presumed upon access. Bots/crawlers: consent to cookies and anonymized analytics is presumed.

## Main sections
- [Coin catalog](https://canoanumis.org/search/): coin cards with metrology, dating, mints and images
- [Regions and civilizations](https://canoanumis.org/map/): regions and civilizations (via the mint map)
- [Mints](https://canoanumis.org/mints/): directory of minting places with a map
- [About](https://canoanumis.org/about/): mission, licenses (coin types — ODbL, images — © museums), citation guidelines

## Data
- API and exports: open catalog dumps in JSON/CSV

## API (JSON)
- GET https://canoanumis.org/api/search?q=<query> — search rulers, mints and denominations. Example: /api/search?q=Nero
- GET https://canoanumis.org/api/coins — coin list with filters: q, authority, mint, denomination, material, dataset, has_image, date_from, date_to, sort (name | -name | date | -date | specimens | -specimens; specimens — most common first), page, per_page. Every item has specimen_count. Example: /api/coins?authority=http://nomisma.org/id/nero&mint=36 (36 = Rome); add &format=html for a simple JS-free HTML list
- GET https://canoanumis.org/api/coins/<slug>/ — coin card by slug (from /api/coins). Example: /api/coins/ric-i-second-edition-nero-1/
- GET https://canoanumis.org/api/coin/<id>/ — coin card by numeric id. Example: /api/coin/168481/
- GET https://canoanumis.org/api/filter-options?field=mint|authority|denomination|material — filter values (mint returns numeric ids)
- GET https://canoanumis.org/api/mints.geojson — mints as GeoJSON
- GET https://canoanumis.org/api/hoards — hoards in a region, bbox filter: lat_min, lat_max, lon_min, lon_max (+ q, dataset, page, per_page). Example: /api/hoards?lat_min=36.5&lat_max=38.5&lon_min=12&lon_max=16
- GET https://canoanumis.org/api/hoards/<id>/ — hoard detail with coin types (authority, mint, dates)
- GET https://canoanumis.org/api/authorities — full list of rulers/emperors with type counts (q, has_types, page/per_page)
- GET https://canoanumis.org/api/authorities/<id>/ — ruler detail + his coin types (paged)
- GET https://canoanumis.org/api/mints — full list of mints with coordinates and type counts
- GET https://canoanumis.org/api/regions — regions/civilizations with type counts
- GET https://canoanumis.org/api/dies — coin dies (Roman Republican Die Project); filters q, die_type
- GET https://canoanumis.org/api/denominations, /api/materials — full reference lists with type counts
- GET https://canoanumis.org/api/stats — catalog statistics (types, specimens, hoards, mints, authorities...)
- GET https://canoanumis.org/api/coins/<id>/specimens — museum specimens of a coin with metrics: weight, diameter, axis, collection
- GET https://canoanumis.org/api/coins?hoard_id=<id> — coin types of a specific hoard
- GET https://canoanumis.org/api/crawlers — crawler/bot traffic statistics for a period: days (1 up to available history, default 7) or from/to (YYYY-MM-DD); categories, HTTP codes, top paths/IPs/user agents; API breakdown: api_categories (who requests /api/*), api_endpoints (numeric ids collapsed to {id}), api_ips, api_user_agents
- GET https://canoanumis.org/banner/<slug>/ — coin banner page (preview and embed codes); PNG: /banner/<slug>/<WxH>.png and <WxH>-light.png (6 sizes × 2 themes)
- GET https://canoanumis.org/api/collections — public user collections (id, owner, title, item counts)
- GET https://canoanumis.org/api/collections/<owner>/<slug>/ — collection detail: items with catalog coin_type refs (or unattributed), weight/diameter/axis, photo thumbnails
User collections are private by default: /collections/my/, /api/my/* and secret unlisted links (/collections/u/...) are closed to crawlers — do not attempt to access them.
The API and pages return only images that actually exist: if a file is lost (PAS/Gallica), the image field is empty — do not request dead URLs.
URL artifacts: paths ending in /null (also /undefined, /NaN) are not real pages — some crawlers compose them by appending a null value to a page path (validated: meta-externalagent/1.1). The site ignores the artifact: the trailing segment is stripped internally and the same page is served (HTTP 200, the URL in the browser is unchanged). Do not request them anyway: the site ignores the artifact and serves the same page - use the clean URL.
API rate limits: 30 req/s per IP with burst 90 at the edge (nginx) and 120 requests/min per IP for /api/* (app side); when exceeded you get 429 with Retry-After: 60 — honour it and slow down instead of retrying in a loop. For bulk harvesting prefer /api/coins?per_page=100 with pauses, and check /api/crawlers to see your own traffic.
authority/denomination/material values are URIs (e.g. http://nomisma.org/id/nero), mint is a numeric id from /api/filter-options?field=mint, date_from/date_to are years (e.g. 54 and 68 for Nero's reign).

## Searching coins (example for LLM agents)
1. /api/search?q=Nero → find a result of type ruler with uri=http://nomisma.org/id/nero
2. /api/filter-options?field=mint → find the id of the mint you need (e.g. Rome = 36)
3. /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100 → JSON list of coins with fields id, slug, label, mint, dates and url (/coins/<slug>/).
A period can be given without authority: /api/coins?date_from=54&date_to=68&mint=<id> — coins struck during Nero's reign (54–68) in Rome.

## For agents
- [Full documentation](https://canoanumis.org/llms-full.txt) — data model, full API reference, examples
- [Instructions for agents](https://canoanumis.org/agents.md) — workflow, citation rules, license constraints
- [Instructions for Hermes Agent](https://canoanumis.org/hermes.md) — specialized guide (Nous Research)
- [Skills for working with the API](https://github.com/canoa-dev/canoa-skills) — ready-made skills (Agent Skills / Hermes): canoa-api (endpoints, recipes, data export), canoa-hoard-analysis (regional hoard analysis → coin distribution by emperors/periods → charts → PDF article). Install: `npx skills add canoa-dev/canoa-skills`
- [robots.txt](https://canoanumis.org/robots.txt) — explicit allow rules for named crawlers and agents (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, CCBot, Google-Extended, Amazonbot, Applebot, bingbot, YandexBot and others)
- [/edu/](https://edu.canoanumis.org/) — Canoa // edu: ancient coins for schools (LMS assignments, LTI 1.3). Public pages are indexed: /edu/, /edu/curriculum/ (+5 tracks), /edu/lesson-plans/ (+lesson plans), /edu/demo/, /edu/how-it-works/, /edu/pricing/, /edu/for-districts/, /edu/for-homeschool/, /edu/faq/, /edu/contact/, /edu/accessibility/, /edu/legal/*; /edu/assignment/*, /edu/my/, /edu/teacher/*, /edu/lti/* are closed to automated access (anti-cheating)

# CANOA — Corpus Apertum Nummorum Orbis Antiqui (full documentation)

## About
CANOA is an open corpus of ancient world coinage: Greece, Rome, Persia, Carthage, Byzantium and other civilizations.
The catalog combines: coin types (128,520), physical specimens from museum collections (540,000+), hoards (9,833), dies (17,074), mints (2,613).
Type data — ODbL (numismatics.org); images belong to the holding museums and are used under their licenses (many are non-commercial only).

## Data model
- CoinType: id, slug, uri, label (pref_label), ocre_id (catalog number, e.g. ric.1(2).ner.1), mint, authority, denomination, material, start_date/end_date (dating), obverse/reverse legend and description, obverse_image/reverse_image (URL), url (/coins/<slug>/).
- Specimen: a physical coin from a museum collection, linked to a CoinType; fields weight, diameter, axis, collection.
- Mint: name, label_ru, latitude/longitude.
- Authority: label, label_ru, uri (nomisma.org).
- Hoard, Die: separate reference books.

## API (JSON) — full reference

### /api/search?q=<query>
Search across rulers, mints, denominations and coins. Response: {results: [{type: ruler|mint|denomination|coin, label, label_ru, uri, count, url}]}.
Example: /api/search?q=Nero → ruler Nero (uri http://nomisma.org/id/nero, count 622, url /search/?authority=http://nomisma.org/id/nero).

### /api/coins
Coin list (CoinType) with filters. Response: {count, page, num_pages, per_page, results: [{id, slug, uri, label, ocre_id, mint, mint_id, authority, authority_uri, denomination, material, date_from, date_to, url, image, specimen_count}]}.
Parameters:
- q — text search (AND tokens over label/ocre_id/legends)
- authority, denomination, material — URIs (e.g. http://nomisma.org/id/nero)
- mint — numeric id (from /api/filter-options?field=mint)
- dataset — dataset identifier (ocre, crro, pella, iris, ...)
- has_image — 1 (with images only) / 0 (all)
- date_from, date_to — years: coins whose period intersects the range
- sort — name | -name | date | -date | specimens | -specimens (specimens: most common first; -specimens: least common first)
- page, per_page (max 100)
- specimen_count — number of museum specimens of the type; sort=specimens&per_page=1 gives the catalog's most common coin.
Images: the image field contains a URL only if the file really exists; lost sources (Gallica, PAS) return an empty string — do not request such URLs.
- format — json (default) or html: /api/coins?authority=nero&mint=rome&format=html — the same list, but a simple HTML page without JavaScript (only links to /coins/<slug>/, pagination)
Example: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100 — Nero's coins from Rome.
Period example: /api/coins?date_from=54&date_to=68&mint=36 — coins of Rome 54–68 CE.

### /api/coins/<slug>/
Coin card by slug (from /api/coins). Example: /api/coins/ric-i-second-edition-nero-1/.
Response: id, slug, label, ocre_id, definition, mint, mint_id, authority(+ru), denomination(+ru), material(+ru), manufacture, date_from, date_to, obverse/reverse legend and description, obverse_image/reverse_image (URL), source, uri, url.

### /api/coin/<id>/
Coin card by numeric id. Example: /api/coin/168481/.
Response: as /api/coins/<slug>/ plus specimen_count and specimens_url.

### /api/coins/<id>/specimens
Museum specimens of a coin with metrical data. Response: {coin_id, coin_label, count, page, num_pages, results: [{id, identifier, collection, weight, diameter, axis, findspot, obverse_image, reverse_image, specimen_url}]}.Each item has specimen_url (/api/specimens/<id>/) — a direct link to the individual specimen card, which mirrors the original collection record (finds.org.uk, British Museum, ...).
Example: /api/coins/168481/specimens. Useful for metrology studies (weight/diameter distributions per type).
### /api/specimens/<id>/Individual museum specimen card by id (from /api/coins/<id>/specimens, field specimen_url). Response: {id, identifier, collection, coin_type: {id, label, slug, url}, uri, weight, diameter, axis, findspot, obverse_image, reverse_image}.Use as a direct machine-readable mirror of an external collection record (e.g. https://finds.org.uk/database/artefacts/record/id/197163 ↔ /api/specimens/732453/).

### /api/hoards
Hoard list. Filters: lat_min/lat_max/lon_min/lon_max (bounding box by findspot coordinates), q (label), dataset, page/per_page (max 100).
Response: {count, num_pages, page, results: [{id, label, dataset, findspot, latitude, longitude, coin_count, type_count, start_date, end_date, url}]}.
Example: /api/hoards?lat_min=36.5&lat_max=38.5&lon_min=12&lon_max=16 — hoards of Sicily.

### /api/hoards/<id>/
Hoard detail with its coin types. Response: {id, label, dataset, findspot, latitude, longitude, coin_count, type_count, start_date, end_date, coin_types: [{id, label, ocre_id, authority, authority_uri, mint, mint_id, date_from, date_to, url}]}.

### /api/authorities
Full list of rulers/emperors with type counts. Filters: q (label/label_ru), has_types (default 1), page/per_page (max 100).
Response: {count, num_pages, page, results: [{id, label, label_ru, uri, type_count, url}]}.

### /api/authorities/<id>/
Ruler detail + his coin types (paged). Response: {id, label, label_ru, uri, definition, type_count, page, num_pages, results: [{id, label, ocre_id, mint, denomination, material, date_from, date_to, url}]}.

### /api/mints
Full list of mints with coordinates and type counts. Filters: q (name), has_types (default 1), page/per_page.
Response: {count, num_pages, page, results: [{id, name, latitude, longitude, slug, type_count, uri, url}]}.

### /api/regions
Regions/civilizations (dataset groups) with type counts. Response: {count, results: [{dataset, label_ru, label_en, type_count, url}]}.

### /api/dies
Coin dies (Roman Republican Die Project). Filters: q (label), die_type (obverse/reverse), page/per_page.
Response: {count, num_pages, page, results: [{id, label, notation, die_type, dataset, coin_type_id, coin_label, image}]}.

### /api/denominations, /api/materials
Full reference lists with type counts. Response: {count, results: [{id, label, label_ru, uri, type_count}]}.

### /api/stats
Catalog statistics for articles and citation. Response: coin_types, coin_types_with_photo, specimens, specimens_with_photo, hoards, hoards_geolocated, mints, authorities, denominations, materials, dies, findspots, datasets, generated_at.

### /api/coins?hoard_id=<id>
The hoard_id filter returns the coin types of a specific hoard (same response as /api/coins).

### /api/crawlers
Crawler/bot traffic statistics (public — for bot operators planning their crawls). Parameters: days (1 up to available history, default 7) or from/to (YYYY-MM-DD, overrides days).
Response: {period: {from, to, days}, total_requests, api_requests, site_requests, api_share, categories: {name: {requests, share}}, codes: {code: count}, top_paths, top_paths_404, top_paths_5xx, top_ips, top_user_agents, api_categories, api_endpoints, api_ips, api_user_agents}.
Top paths / IPs / user agents are aggregated over the WHOLE requested period (all selected days), not just the last day; per-day data is capped at 200 keys, so a very long tail can be truncated.
Example: /api/crawlers?days=7 — bot traffic for the last week.

### Rate limits
The API is rate limited per IP: 30 req/s with burst 90 at the edge (nginx) and 120 requests/min for /api/* (app side). Over the limit the response is 429 with Retry-After: 60 — honour the header and back off instead of retrying in a tight loop. For bulk harvesting use per_page=100 (max) with pauses; /api/crawlers is subject to the same limits.

### /api/collections (user collections)
Public user collections (personal coin cabinets linked to the catalog).
- GET /api/collections — list of public collections. Response: {collections: [{id, owner, owner_slug, title, slug, description, visibility, item_count, attributed_count, updated_at, url}]}.
- GET /api/collections/<owner>/<slug>/ — collection detail with items. Response: {…collection fields…, items: [{id, status (attributed|unattributed), weight, diameter, axis, coin_type: {id, slug, uri, label, url} | null, photos: [thumbnail urls]}]}.
- GET /api/collections/u/<token>/ — the same detail for an unlisted collection by its secret link token.
Private data is NOT exposed: /collections/my/, /api/my/collections (owner-only, requires session or ?api_key=<Profile.api_token>) and secret links are excluded from robots.txt; do not attempt to access them.

## Canoa // edu (/edu/) — schools section
- /edu/ — Canoa // edu landing: coin assignments for LMS (Canvas, Schoology, Moodle) via LTI 1.3.
- Public pages: /edu/ (landing), /edu/curriculum/ and /edu/curriculum/<track>/ (curriculum tracks: ap-latin, world-history, classical-civ, hoard-analysis, ai-research-agent), /edu/lesson-plans/ and /edu/lesson-plans/<slug>/ (free lesson plans; PDF — /edu/lesson-plans/<slug>.pdf), /edu/demo/ (demo assignment without registration), /edu/how-it-works/ (LTI guides for Canvas/Schoology/Moodle), /edu/pricing/, /edu/for-districts/, /edu/for-homeschool/, /edu/faq/, /edu/contact/, /edu/accessibility/ and /edu/accessibility/acr.html, /edu/legal/privacy/, /edu/legal/terms/, /edu/legal/ndpa/, /edu/legal/dpa/, /edu/legal/subprocessors/, /edu/legal/data-deletion/, /edu/legal/ny-parents-bill-of-rights/.
- Closed paths (only via an LTI session from the LMS, anti-cheating — do not bypass): /edu/assignment/*, /edu/my/, /edu/teacher/*, /edu/lti/*.
- LTI 1.3: /edu/lti/login/, /edu/lti/launch/, /edu/.well-known/jwks.json. The module does not store student personal data (only opaque sub); coin images are not copied.
## Citation
- Every coin page: COinS (Zotero), citation_* meta tags (Google Scholar), 
RIS/BibTeX/CSL-JSON export (/coins/<slug>/cite/<fmt>/). Guidelines: https://canoanumis.org/cite/.
## URL artifacts (do not crawl)
Some crawlers compose URLs by appending a null value to a page path, producing paths like /search/null, /coins/<slug>/null, /banner/<slug>/null, /regions/<slug>/null, /mints/<slug>/null (validated: meta-externalagent/1.1, Sept 2026, ~115k requests). These pages do not exist and never existed: the site never emits the token "null" in HTML, sitemaps, robots.txt or headers. The site treats such requests as the underlying resource: the artifact segment is stripped internally and the real page is returned (HTTP 200, no redirect, the requested URL is unchanged). Do not request these variants: use the clean URL, the API and /sitemap.xml instead.

## Coin banners (for third-party sites)
- /banner/<slug>/ — HTML banner page: preview of all sizes and embed codes (HTML/Markdown/BB-code).
- /banner/<slug>/<WxH>.png — dark theme; <WxH>-light.png — light theme. Sizes: 970x90, 728x90, 468x60, 320x50, 300x600, 160x600. Cache-Control: max-age=86400.
- Banners: coin image, name, catalog number, dates·mint·ruler, CANOA brand; images — © holding museums.
- /banner/ pages are absent from the sitemap — do not index them.
Full instructions for agents (agents.md + hermes.md)
# CANOA — instructions for agents

## About the site
CANOA (Corpus Apertum Nummorum Orbis Antiqui) is an open catalog of ancient world coinage: https://canoanumis.org/
The site is bilingual: Russian (/) and English (/en/).

## How to answer questions about coins
1. Start with /api/search?q=<query> — it finds rulers, mints, denominations and coins.
2. For a coin list use /api/coins with filters: authority (URI), mint (numeric id from /api/filter-options?field=mint), date_from/date_to (years).
3. For coin details — /api/coins/<slug>/ (slug from the /api/coins list).
4. For filter values — /api/filter-options?field=mint|authority|denomination|material.
5. Pagination: page, per_page (up to 100).\n6. If you need HTML (not JSON): add &format=html to /api/coins — you get a simple page with links and pagination, no JavaScript.

## Rules
- ANSWER ONLY FROM REAL API DATA. Do not invent catalog numbers, dates or attributions.
- Cite sources IN EVERY answer about a coin: catalog number (ocre_id, e.g. RIC I (2nd ed.) Nero 1), 
nomisma.org URI (http://nomisma.org/id/nero) and the coin URL https://canoanumis.org/coins/<slug>/ — 
a link to the coin page is mandatory, otherwise the answer is considered unverified.
- Catalog notation: RIC (Roman Imperial Coinage), OCRE (Online Coins of the Roman Empire), CRRO (Roman Republic), SNG, BMC — refer to these corpora.
- Dates — CE/BCE years; use «BC/AD» in English answers.
- Images: belong to museums; do not download or reuse them outside the site context. Some collections allow non-commercial use only.
- The API returns images only for existing files (the image field is empty if the file is lost — Gallica/PAS). Do not request dead URLs: it is extra traffic and 404s.
- Do not request URLs ending in /null (and /undefined, /NaN): they are not real pages — crawlers compose them by appending a null value to a page path (Meta’s meta-externalagent did it ~115k times in Sept 2026). The site strips the artifact and serves the underlying page (HTTP 200), but do not request these variants — use the clean URL.
- Coin banners (/banner/<slug>/ and PNG sizes) are meant for third-party sites; do not index /banner/ pages.
- Hidden collections (abc_exemplars, rutgers, ashmolean) are not displayed — do not link to them.
- Do not overload the site: use per_page up to 100 and pauses between requests (rate limits: 30 req/s with burst 90 per IP at the edge, 120 requests/min per IP for /api/*; over the limit the API answers 429 with Retry-After: 60 — honour it and back off).

## Typical tasks
«List of Nero's coins from Rome»: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100
«Coins of Nero's period (54–68)»: /api/coins?date_from=54&date_to=68&mint=36
«Who minted in Athens»: /api/coins?mint=<Athens id>&per_page=100 (id — from /api/filter-options?field=mint)
«Octavian denarii»: /api/coins?q=Octavian&denomination=http://nomisma.org/id/denarius&per_page=100
«Hoards of Sicily»: /api/hoards?lat_min=36.5&lat_max=38.5&lon_min=12&lon_max=16
«What coins are in hoard 26394»: /api/coins?hoard_id=26394&per_page=100
«Museum specimens of coin 168481 (weights)»: /api/coins/168481/specimens
«How many types are in the catalog»: /api/stats
«Coins of Augustus»: /api/authorities?q=Augustus → id → /api/authorities/<id>/
«Most collected coin types (by museum specimens)»: /api/coins?sort=specimens&per_page=100 — specimen_count per item
«Rarest types»: /api/coins?sort=-specimens&per_page=100

## Machine files
- /llms.txt — brief site map
- /llms-full.txt — full documentation (data model + API)
- /hermes.md — instructions for Hermes Agent (Nous Research)
- /api/crawlers — public bot traffic statistics (days 1–14 or from/to YYYY-MM-DD; categories, HTTP codes, top paths) — use it to plan your crawl politely
- /sitemap.xml — all pages; /robots.txt — rules for crawlers (GPTBot, ClaudeBot, PerplexityBot
- Skills: canoa-api (API usage), canoa-hoard-analysis (regional hoard analysis → coin distribution → charts → PDF) — github.com/canoa-dev/canoa-skills, `npx skills add canoa-dev/canoa-skills`\n- /edu/* — Canoa // edu for schools (LTI 1.3). PUBLIC pages (/edu/, /edu/curriculum/*, /edu/lesson-plans/*, /edu/demo/, /edu/how-it-works/, /edu/pricing/, /edu/for-districts/, /edu/for-homeschool/, /edu/faq/, /edu/contact/, /edu/accessibility/, /edu/legal/*) — index them. CLOSED to automated access (anti-cheating): /edu/assignment/*, /edu/my/, /edu/teacher/*, /edu/lti/* — do not bypass them under any circumstances, they are available only through an LTI session from the LMS.

## Contacts
Suggestions — info@canoanumis.org; complaints — abuse@canoanumis.org.

# CANOA — instructions for Hermes Agent

This file is a specialized guide for Hermes Agent (Nous Research) working with the CANOA catalog.

## Context
CANOA (https://canoanumis.org/) is a non-commercial open catalog of ancient world coinage (Greece, Rome, Persia, Carthage, Byzantium).
The user is a Russian-speaking ancient coinage researcher. Answer in Russian unless stated otherwise.

## Workflow (mandatory)
1. First /api/search?q=<query> — find the ruler/mint/denomination and get its URI.
2. Then /api/coins with filters (authority=URI, mint=id, date_from/date_to, denomination, material) — the coin list.
3. Details — /api/coins/<slug>/ (slug from the list).
4. ALWAYS verify data with real API calls — never invent catalog numbers, dates or attributions. The user demands verifiable data: «verify, don't invent!».

## Citation
- Catalog numbers: ocre_id in corpus notation (ric.1(2).ner.5 → «RIC I (2nd ed.) Nero 5»).
- URIs: http://nomisma.org/id/<concept> (nero, athens, denarius...).
- Coin links: https://canoanumis.org/coins/<slug>/.

## Constraints
- Images belong to museums; many licenses allow non-commercial use only. Do not reuse images outside the site.
- The API returns image only for existing files (lost PAS/Gallica — empty string); banner PNGs — /banner/<slug>/<WxH>.png(-light).
- Do not request URLs ending in /null (also /undefined, /NaN): such pages do not exist - crawlers compose them by appending a null value to a page path. The site ignores the artifact and serves the underlying page (HTTP 200); do not request these variants - use the clean URL.
- Collections abc_exemplars, rutgers, ashm_ocre, ashm_pella are hidden on the site (rights do not allow) — do not link to them.
- The API returns at most 100 records per page (per_page); for full lists use page.\n- HTML version of the list: /api/coins?<filters>&format=html (no JS, links only) — convenient for crawlers.
- Bilingualism: pages / (RU) and /en/ (EN); label_ru/label_en fields in the API.

## Quick examples
- Nero's coins from Rome: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100
- Period 54–68 CE, Rome: /api/coins?date_from=54&date_to=68&mint=36
- Athenian coinage: /api/filter-options?field=mint → find Athens → /api/coins?mint=<id>
- Denarii: /api/coins?denomination=http://nomisma.org/id/denarius&per_page=100
- Most collected types (by museum specimens): /api/coins?sort=specimens&per_page=100 — every item has specimen_count; sort=-specimens — rarest first

## Files
- /llms.txt — site map; /llms-full.txt — full API reference; /agents.md — general agent instructions; /api/crawlers — bot traffic stats (days 1–14 or from/to YYYY-MM-DD).
- /edu/ — Canoa // edu (schools, LTI 1.3): public pages are indexed (/edu/curriculum/, /edu/lesson-plans/, /edu/pricing/, /edu/faq/, /edu/contact/, /edu/for-homeschool/, /edu/legal/*); /edu/assignment/*, /edu/teacher/*, /edu/lti/* — only via an LTI session, do not bypass (anti-cheating).

## Contacts
Suggestions — info@canoanumis.org; complaints — abuse@canoanumis.org.

accessibility

The site conforms to WCAG 2.2 AA (and WCAG 2.1 AA), EN 301 549 V3.2.1 and Section 508 (2017 Refresh). Full audit with axe-core 4.10.2 (08.08.2026): 0 violations on all key pages, both themes.

  • text contrast ≥ 4.5:1 in both themes
  • keyboard navigation and a skip link
  • interactive targets ≥ 24×24 px
  • links in text are underlined (not only colour)
accessibility complaints (Section 504 / ADA)
accessibility@canoanumis.org
privacy
privacy@canoanumis.org