Developers & Agents

Public API

Unauthenticated JSON endpoints for reading published site content and submitting a project inquiry. All bilingual fields are exposed as *Ar/*En pairs.

Discovery

Endpoints

GET/api/settingsCompany name, tagline, phone, email, WhatsApp, address
GET/api/statsHeadline stats (years active, projects, clients, engineers)
GET/api/servicesServices offered
GET/api/sectorsSectors served
GET/api/projectsPublished projects. Query: page, limit, category, featured
GET/api/projects/{slug}Project detail: gallery, scope, challenge/solution, results, related
GET/api/postsPublished blog posts. Query: page, limit, category, search, featured
GET/api/posts/{slug}Blog post detail with prev/next/related
GET/api/reviewsPublished client testimonials
GET/api/healthService status
POST/api/contactSubmit a project inquiry

Submitting a project inquiry

POST /api/contact with a JSON body:

{
  "name": "string, required",
  "phone": "string, required",
  "email": "string, required, valid email",
  "service": "string, required — one of the titles from GET /api/services",
  "message": "string, required, minimum 10 characters",
  "locale": "ar" | "en",
  "website": ""
}
  • website is a honeypot spam field — always send it empty.
  • This endpoint is rate-limited; a 429 response means retry later.

Agent-friendly rendering

Send Accept: text/markdown on any of these pages to receive a compact markdown rendering instead of HTML: /, /works, /projects/{slug}, /blog, /blog/{slug}, /docs/api.