مستندات توسعهدهندگان — Armani English Developer API
Armani English (مرکز زبان آرمانی) publishes a free, read-only, unauthenticated HTTP API that lists every course and discount package it sells, with live prices and availability.
Base URL
https://armanienglish.com
Discovery
| Resource | URL |
|---|---|
| API index | https://armanienglish.com/api |
| OpenAPI 3.1 description | https://armanienglish.com/openapi.json |
| RFC 9727 API catalog | https://armanienglish.com/.well-known/api-catalog |
| Agent guide | https://armanienglish.com/llms.txt |
| Agent instructions | https://armanienglish.com/agents.md |
| Sitemap | https://armanienglish.com/sitemap.xml |
Authentication
None. Every endpoint below is public.
Endpoints
GET /api/v1/courses — listCourses
Returns the full catalog of IELTS, TOEFL and general English courses and discount packages, with prices in Iranian Toman (IRT). Names and descriptions are in Persian.
curl -s https://armanienglish.com/api/v1/courses
{
"currency": "IRT",
"language": "fa",
"partial": false,
"count": 12,
"courses": [
{
"id": 1234,
"name": "دورهٔ آنلاین آیلتس",
"slug": "ielts-online",
"type": "course",
"section": "ielts",
"url": "https://armanienglish.com/ielts/course/ielts-online",
"price": 4900000,
"regular_price": 5900000,
"on_sale": true,
"available": true,
"description": "…",
"image": "…",
"duration_hours": 60,
"session_count": 30,
"duration_months": 3
}
]
}
The catalog is rebuilt at most once a day. Cache it rather than polling.
GET /api/v1/health — getHealth
Liveness check. Returns {"status":"ok"} and is never cached.
curl -s https://armanienglish.com/api/v1/health
Versioning
Version v1 is current and lives under /api/v1/.
- Additive changes (new fields, new endpoints) ship without a version bump. Clients must ignore fields they do not recognise.
- Breaking changes only ever ship as a new major version under a new path prefix.
- The unversioned paths
/api/coursesand/api/healthare permanent aliases that trackv1.
Deprecation policy
A version scheduled for removal answers with the RFC 8594 Deprecation and
Sunset headers, plus Link: <…>; rel="deprecation" pointing at the
migration notes, for at least
180 days before it is switched
off. Nothing is removed without those headers appearing first, so a client that
watches for Sunset always gets notice.
Rate limits
300 requests per 60 seconds per client address. Every response carries:
| Header | Meaning |
|---|---|
RateLimit-Limit | Requests allowed per window |
RateLimit-Remaining | Requests left in this window |
RateLimit-Reset | Seconds until the window resets |
RateLimit-Policy | default;q=300;w=60 |
Retry-After | Seconds to wait — on 429 only |
Errors
Every 4xx and 5xx response is application/problem+json (RFC 9457):
{
"type": "https://armanienglish.com/developers#error-not-found",
"title": "No such endpoint",
"status": 404,
"detail": "/api/v1/nope is not a public API endpoint.",
"code": "not_found",
"resolution": "Fetch /api for the list of available endpoints.",
"instance": "/api/v1/nope",
"documentation": "https://armanienglish.com/developers"
}
Branch on code, never on title or detail.
code | Status | What to do |
|---|---|---|
not_found | 404 | Check the path against /api or /openapi.json. |
method_not_allowed | 405 | The API is read-only. Use GET. |
not_acceptable | 406 | Request text/html, text/markdown or */*. |
rate_limited | 429 | Wait Retry-After seconds, then retry. |
upstream_unavailable | 503 | Retry after 60s; serve your cached catalog meanwhile. |
New codes may be added over time. Treat an unrecognised code as a generic failure of its HTTP status.
Markdown content negotiation
Key pages serve Markdown from the same URL when asked, per acceptmarkdown.com:
curl -H 'Accept: text/markdown' https://armanienglish.com/about
Responses carry Content-Type: text/markdown; charset=utf-8 and
Vary: Accept. Appending .md to such a page works too
(https://armanienglish.com/about.md).
Terms
The API is free to use, including in AI assistants and comparison tools, with
attribution to Armani English and a link back to the course page in the
url field. Do not present cached prices as current for longer than 24
hours. The site's robots.txt declares ai-input=yes, ai-train=no: grounding
answers in this content is welcome, training models on it is not.
Contact
Questions and integration support: support@armanienglish.com — 021-44675912 (شنبه تا چهارشنبه ۹:۰۰ الی ۱۵:۰۰)