> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getqr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# رموز QR

> أنشئ رموز QR واعرضها وحدّثها وأوقفها مؤقتًا وكرّرها واحذفها ونزّلها.

> [!NOTE]
>
> GetQR API في مرحلة تجريبية (beta) ومتاحة لمساحات عمل مختارة. قد تتغير التفاصيل قبل الإصدار العام.

رمز QR في GetQR هو الصورة مع رابط قصير يعمل من خلاله. إنشاء رمز QR يُنشئ رابطه القصير أيضًا، فيمكنك تغيير الوجهة لاحقًا دون إعادة طباعة الرمز.

| الطريقة | المسار | الوصف |
| - | - | - |
| `GET` | `/api/v1/qrs` | [عرض قائمة رموز QR](#عرض-قائمة-رموز-qr) |
| `POST` | `/api/v1/qrs` | [إنشاء رمز QR](#إنشاء-رمز-qr) |
| `GET` | `/api/v1/qrs/{qrId}` | [الحصول على رمز QR](#الحصول-على-رمز-qr) |
| `PATCH` | `/api/v1/qrs/{qrId}` | [تحديث رمز QR](#تحديث-رمز-qr) |
| `PUT` | `/api/v1/qrs/{qrId}` | [ضبط حالة الإيقاف المؤقت](#ضبط-حالة-الإيقاف-المؤقت) |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [إيقاف رمز QR مؤقتًا](#إيقاف-رمز-qr-مؤقتًا) |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [إعادة تفعيل رمز QR](#إعادة-تفعيل-رمز-qr) |
| `POST` | `/api/v1/qrs/{qrId}/duplicate` | [تكرار رمز QR](#تكرار-رمز-qr) |
| `DELETE` | `/api/v1/qrs/{qrId}` | [حذف رمز QR](#حذف-رمز-qr) |
| `GET` | `/api/v1/qrs/{qrId}/download` | [تنزيل صورة رمز QR](#تنزيل-صورة-رمز-qr) |

> [card] [بيانات رمز QR حسب النوع](https://docs.getqr.com/ar/api/guides/qr-types.md)
>
> صيغة `data` لكل نوع من الأنواع الستة عشر.

> [card] [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md)
>
> أنماط النقاط والألوان والإطارات والشعارات.

> [card] [قواعد الوصول](https://docs.getqr.com/ar/api/guides/access-rules.md)
>
> الجدول الزمني وحد المسح وكلمة المرور.

لإحصائيات المسح الخاصة برمز QR، راجع [التحليلات](https://docs.getqr.com/ar/api/endpoints/analytics.md).

## كائن رمز QR

تُرجع كل نقطة نهاية لرموز QR هذا الكائن، باستثناء [الحذف](#حذف-رمز-qr) و[التنزيل](#تنزيل-صورة-رمز-qr). وتُرجع القائمة مصفوفة منها.

**id** `string`

المعرّف الفريد لرمز QR، مثل `qr_1EPcVfeHZAY2iNoVLsgW2Aqf`.

**qrType** `string`

نوع رمز QR، مثل `website`. راجع [بيانات رمز QR حسب النوع](https://docs.getqr.com/ar/api/guides/qr-types.md) للاطلاع على القيم الست عشرة كلها.

**title** `string | null`

اسم رمز QR، المعروض في لوحة التحكم.

**description** `string | null`

ملاحظة نصية حرة عن رمز QR.

**data** `string`

الحمولة المحفوظة. في `wifi` و`vcard` و`social` و`multilink` و`event` و`sms` هي الحمولة التي أرسلتها. وفي كل الأنواع الأخرى هي الرابط القصير، لذا اقرأ الوجهة من `url`.

**archived** `boolean`

`true` عندما يكون رمز QR موقوفًا مؤقتًا.

**isStatic** `boolean`

`true` لرمز QR ثابت أُنشئ في لوحة التحكم ولا رابط قصيرًا له. تُنشئ API دائمًا رموز QR ديناميكية.

**shortLink** `string | null`

الرابط القصير الكامل، مثل `https://getqr.sh/x7Kd2p1`.

**domain** `string | null`

نطاق الرابط القصير.

**key** `string | null`

المعرّف النصي (slug) للرابط القصير.

**keyIsCustom** `boolean`

`true` عندما يكون المعرّف النصي قد اختير بدلًا من توليده.

**url** `string | null`

الوجهة التي يعيد الرابط القصير التوجيه إليها.

**ios** `string | null`

الوجهة لزوار iOS، في رموز QR من نوع `app`.

**android** `string | null`

الوجهة لزوار Android، في رموز QR من نوع `app`.

**scans** `integer`

إجمالي عدد عمليات المسح.

**access** `object`

قواعد الوصول. لا تُرجع كلمة المرور نفسها أبدًا. راجع [قواعد الوصول](https://docs.getqr.com/ar/api/guides/access-rules.md).

**properties**

**passwordProtected** `boolean`

ما إذا كان على الزوار إدخال كلمة مرور.

**activeAt** `string | null`

البداية المجدولة، بصيغة ISO 8601.

**pauseAt** `string | null`

النهاية المجدولة، بصيغة ISO 8601.

**scanLimit** `integer | null`

الحد الأقصى لعدد عمليات المسح.

**designKind** `string`

للقراءة فقط. `custom` تصميم يمكن لـ API تعديله بالكامل. `branded` و`ai` تصميم بعلامة تجارية أو تصميم بالذكاء الاصطناعي أُنشئ في لوحة التحكم. لا تستطيع API تعديل صورته، لكنها تحتفظ بها عند تغيير الحقول الأخرى.

**design** `object`

التصميم المحفوظ: `styles` و`frameOptions` و`logoOptions`، وكل منها كائن أو `null`. لها البنية نفسها لحقول الطلب، فيمكنك إرسالها مرة أخرى. راجع [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md).

**file** `object | null`

ملف رمز QR من نوع `pdf` أو `image` أو `video`: `id` و`name` و`size` بالبايت.

**appName** `string | null`

للقراءة فقط. الاسم المعروض لرمز QR من نوع `app` أُنشئ في لوحة التحكم.

**pdfBundle** `object | null`

للقراءة فقط. رمز QR من نوع `pdf` يضم عدة ملفات، أُنشئ في لوحة التحكم: `title` و`layout` و`files`.

**imageGallery** `object | null`

للقراءة فقط. رمز QR من نوع `image` يضم عدة صور، أُنشئ في لوحة التحكم: `title` و`layout` و`files`.

**createdAt** `string`

تاريخ الإنشاء، بصيغة ISO 8601.

**updatedAt** `string`

تاريخ آخر تحديث، بصيغة ISO 8601.

لا تُرجع البيانات السرية والمعرّفات الداخلية (`password`، `userId`، `workspaceId`، `projectId`) أبدًا.

```json theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "qrType": "website",
  "title": "Landing page",
  "description": null,
  "data": "https://getqr.sh/x7Kd2p1",
  "archived": false,
  "isStatic": false,
  "shortLink": "https://getqr.sh/x7Kd2p1",
  "domain": "getqr.sh",
  "key": "x7Kd2p1",
  "keyIsCustom": false,
  "url": "https://example.com",
  "ios": null,
  "android": null,
  "scans": 128,
  "access": {
    "passwordProtected": false,
    "activeAt": null,
    "pauseAt": null,
    "scanLimit": null
  },
  "designKind": "custom",
  "design": {
    "styles": { "dotsOptions": { "type": "rounded", "color": "#1E40AF" }, … },
    "frameOptions": { "id": "card", "text": "Scan me!", … },
    "logoOptions": { "type": "suggested", "id": "logo-website-3", "scalePercent": 25 }
  },
  "file": null,
  "appName": null,
  "pdfBundle": null,
  "imageGallery": null,
  "createdAt": "2026-08-01T10:00:00.000Z",
  "updatedAt": "2026-08-01T10:00:00.000Z"
}
```

## عرض قائمة رموز QR

`GET /api/v1/qrs`

يُرجع رموز QR في مساحة عملك، صفحة تلو الأخرى.

**page** `integer` (default: 1)

الصفحة التي تُعاد، 1 أو أكثر.

**pageSize** `integer` (default: 100)

رموز QR في كل صفحة، من 1 إلى 100. تُرفض القيمة الأكبر.

**search** `string`

يطابق عنوان رمز QR. الاستعلامات التي تزيد على حرفين تطابق أيضًا `data` المحفوظة. في أنواع الروابط تكون `data` المحفوظة هي الرابط القصير، لذا لا يمكن البحث في روابط الوجهة.

**sortBy** `string` (default: createdAt)

حقل الترتيب: `createdAt` أو `updatedAt` أو `clicks` (إجمالي عمليات المسح) أو `lastClicked` (أحدث عملية مسح) أو `type`. يرتّب `type` دائمًا تنازليًا ويتجاهل `sortOrder`.

**sortOrder** `string` (default: desc)

اتجاه الترتيب: `asc` أو `desc`.

**showArchived** `boolean` (default: false)

تضمين رموز QR الموقوفة مؤقتًا.

**onlyArchived** `boolean` (default: false)

إرجاع رموز QR الموقوفة مؤقتًا فقط. يتجاوز `showArchived`.

تأخذ المعاملات المنطقية السلسلتين `true` أو `false`. اطلب الصفحة التالية ما دام `pagination.hasMore` يساوي `true`. راجع [ترقيم الصفحات](https://docs.getqr.com/ar/api/introduction.md#ترقيم-الصفحات).

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs?page=1&pageSize=100" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "data": [
    {
      "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
      "qrType": "website",
      "title": "Landing page",
      "shortLink": "https://getqr.sh/x7Kd2p1",
      "url": "https://example.com",
      "scans": 128,
      "…": "…"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## إنشاء رمز QR

`POST /api/v1/qrs`

يُنشئ رمز QR ورابطه القصير معًا. يُرجع `201 Created` مع [رمز QR](#كائن-رمز-qr) الجديد.

**Idempotency-Key** `string`

رمز إعادة المحاولة الخاص بك. تكرار الطلب بالمفتاح نفسه خلال 24 ساعة يُرجع الاستجابة الأصلية بدلًا من إنشاء رمز QR ثانٍ. راجع [إعادة المحاولة والتكرار](#إعادة-المحاولة-والتكرار).

**qrType** `string` *required*

ما يرمّزه رمز QR. يحدد أيضًا الصيغة التي يجب أن تكون عليها `data`. إحدى القيم: `website`، `pdf`، `image`، `video`، `whatsapp`، `social`، `wifi`، `app`، `feedback`، `vcard`، `sms`، `payment`، `location`، `multilink`، `email`، `event`.

**data** `string` *required*

حمولة النوع، ويُتحقق منها وفق `qrType`. السلسلة الفارغة تتخطى الفحص. صيغة كل نوع موجودة في [بيانات رمز QR حسب النوع](https://docs.getqr.com/ar/api/guides/qr-types.md).

**link** `object`

الرابط القصير الذي يعمل رمز QR من خلاله. اختياري: إذا حُذف، يتبع `link.url` قيمة `data`.

**properties**

**url** `string`

الوجهة التي يعيد الرابط القصير التوجيه إليها. إذا حُذف أو كان فارغًا، تكون قيمته الافتراضية `data`. إذا أُرسلا كلاهما واختلفا، تكون الأولوية لـ `link.url`. تشير رموز QR من الأنواع `vcard` و`social` و`multilink` و`event` دائمًا إلى صفحتها المستضافة، وتشير رموز `pdf` و`image` و`video` التي تحتوي على `fileId` إلى الملف. المخططات المقبولة: `http:`، `https:`، `wifi:`، `mailto:`، `sms:`، `begin:`.

**domain** `string`

نطاق الرابط القصير. يجب أن يكون نطاقًا مفعّلًا في مساحة عملك: النطاق الآخر يحصل على `403`، والنطاق غير المفعّل بعد يحصل على `422`. القيمة الافتراضية النطاق الافتراضي لمساحة العمل.

**key** `string`

المعرّف النصي للرابط القصير، من 3 إلى 15 حرفًا، ويُحفظ بأحرف صغيرة. المعرّف غير المسموح يحصل على `422`، والمعرّف المستخدم يحصل على `409`. يُولَّد معرّف عشوائي من 7 أحرف عند حذفه.

**ios** `string | null`

رابط الوجهة لزوار iOS، في رموز QR من نوع `app`.

**android** `string | null`

رابط الوجهة لزوار Android، في رموز QR من نوع `app`.

**title** `string | null`

عنوان معاينة الرابط (`og:title`)، يُحفظ على الرابط القصير. يختلف عن `title` الخاص برمز QR نفسه. لا يعرضه شيء بعد.

**description** `string | null`

وصف معاينة الرابط (`og:description`)، يُحفظ على الرابط القصير. لا يعرضه شيء بعد.

**expiresAt, expiredUrl** `—`

غير متاحين في هذه الواجهة: إرسال أي منهما يحصل على `422`. استخدم `access.pauseAt` لإيقاف رمز QR في وقت محدد.

**title** `string`

اسم رمز QR، المعروض في لوحة التحكم. تُزال المسافات من طرفيه، من 1 إلى 40 حرفًا. إذا حُذف، يكون رمز QR بلا عنوان.

**description** `string`

ملاحظة نصية حرة عن رمز QR. حتى 280 حرفًا.

**fileId** `string`

ملف رمز QR من نوع `pdf` أو `image` أو `video`، مرفوع بالغرض المطابق. وفي `vcard` و`social` و`multilink`، صورة ملف شخصي اختيارية مرفوعة بالغرض `logo`. يقبله `event` أيضًا، لكن صفحته تقرأ صورة الغلاف من `data.fileId`. تحصل الأنواع الأخرى على `422`. ارفع الملف أولًا عبر [الملفات](https://docs.getqr.com/ar/api/endpoints/files.md). راجع [الملفات في رموز QR](https://docs.getqr.com/ar/api/guides/qr-types.md#الملفات-في-رموز-qr).

**templateId** `string`

[القالب](https://docs.getqr.com/ar/api/endpoints/templates.md) الذي يُطبَّق تصميمه على رمز QR الجديد. تُدمج حقول التصميم التي ترسلها فوقه. القالب ذو التصميم بعلامة تجارية أو بالذكاء الاصطناعي يحصل على `422` (`art_template_unsupported`). القالب غير المعروف، أو القالب من مساحة عمل أخرى، يحصل على `404`.

**styles** `object`

أشكال النقاط والزوايا وألوانها. راجع [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md).

**frameOptions** `object`

الإطار المرسوم حول رمز QR ونص الدعوة إلى الإجراء. راجع [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md).

**logoOptions** `object`

الشعار في الوسط: شعار مقترح أو ملفك الخاص المرفوع بالغرض `logo`. يُرفض الملف غير المعروف، أو الرفع غير المكتمل، أو الملف من غرض آخر. راجع [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md).

**access** `object`

الجدول الزمني وحد المسح وحماية كلمة المرور. راجع [قواعد الوصول](https://docs.getqr.com/ar/api/guides/access-rules.md).

**properties**

**activeAt** `string | null`

البداية المجدولة، بصيغة ISO 8601.

**pauseAt** `string | null`

النهاية المجدولة، بصيغة ISO 8601.

**scanLimit** `integer | null`

الحد الأقصى لعدد عمليات المسح، عدد صحيح موجب.

**password** `string | null`

كلمة المرور التي يجب على الزوار إدخالها. إرسالها يفعّل الحماية.

**passwordProtected** `boolean`

يوقف الحماية أو يعيد تفعيلها، مع الاحتفاظ بكلمة المرور المحفوظة.

**archived** `boolean`

ما إذا كان رمز QR موقوفًا مؤقتًا. `true` تُنشئه موقوفًا مؤقتًا: تعرض عمليات المسح صفحة الإيقاف المؤقت بدلًا من الوجهة.

تُحذف الحقول غير المعروفة دون خطأ. راجع [غير مدعوم عبر API](https://docs.getqr.com/ar/api/guides/qr-types.md#غير-مدعوم-عبر-api).

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: landing-page-2026-08" \
  -d '{
    "qrType": "website",
    "data": "https://example.com",
    "title": "Landing page",
    "access": { "scanLimit": 500 }
  }'
```

```json 201 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "qrType": "website",
  "title": "Landing page",
  "data": "https://getqr.sh/x7Kd2p1",
  "shortLink": "https://getqr.sh/x7Kd2p1",
  "url": "https://example.com",
  "scans": 0,
  "access": { "passwordProtected": false, "activeAt": null, "pauseAt": null, "scanLimit": 500 },
  "…": "…"
}
```

### إعادة المحاولة والتكرار

* **مع مفتاح.** مع الترويسة `Idempotency-Key`، تُعاد الاستجابة نفسها لمدة 24 ساعة.
* **دون مفتاح.** يُعامَل الجسم المطابق المُرسَل خلال 30 ثانية على أنه مكرر.
* **الإعادات.** تُرجع الإعادة الاستجابة المحفوظة مع `x-idempotent-replay: true`. ويُرجع رمز QR الجديد `false`.
* **قيد التنفيذ.** الطلب الثاني أثناء تنفيذ الأول يحصل على `409 conflict`.
* **الإخفاقات.** الإنشاء الفاشل يحرّر المفتاح فورًا، فيمكنك إعادة المحاولة بالمفتاح نفسه.
* **أفضل جهد.** إذا لم تكن آلية الحماية متاحة، تُنفَّذ عمليات الإنشاء دون حماية.

راجع أيضًا [عدم التكرار (Idempotency)](https://docs.getqr.com/ar/api/introduction.md#عدم-التكرار-idempotency).

## الحصول على رمز QR

`GET /api/v1/qrs/{qrId}`

يُرجع [رمز QR](#كائن-رمز-qr) مع رابطه القصير وقواعد الوصول والتصميم، وملفه في الأنواع المعتمدة على الملفات.

**qrId** `string` *required*

معرّف رمز QR، من استجابة القائمة أو الإنشاء.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

الاستجابة هي [كائن رمز QR](#كائن-رمز-qr) الكامل.

## تحديث رمز QR

`PATCH /api/v1/qrs/{qrId}`

يغيّر محتوى رمز QR أو وجهته أو تصميمه أو قواعد الوصول الخاصة به. أرسل فقط الحقول التي تريد تغييرها. يُرجع [رمز QR](#كائن-رمز-qr) المحدَّث.

**qrId** `string` *required*

معرّف رمز QR.

يأخذ الجسم الحقول نفسها التي يأخذها [إنشاء رمز QR](#إنشاء-رمز-qr)، وكلها اختيارية، مع هذه الاختلافات:

* **`templateId`.** غير مقبول.
* **`link`.** جزئي. تُحفظ الوجهة الحالية عند حذف `link.url`. يحصل `link.domain` و`link.key` على `422`: الرابط القصير هو ما يرمّزه الرمز المطبوع، لذا أنشئ رمز QR جديدًا لاستخدام رابط مختلف.
* **`data`.** يُتحقق منها وفق النوع الناتج فقط عند تغيّر `data` أو `qrType`. يُرفض تبديل `qrType` دون `data` مطابقة. راجع [تبديل النوع](https://docs.getqr.com/ar/api/guides/qr-types.md#تبديل-النوع).
* **التصميم.** تُدمج `styles` و`frameOptions` و`logoOptions` في التصميم المحفوظ، لذا لا يغيّر الكائن الجزئي إلا ما يذكره. اختيار شعار آخر يستبدله لكنه يحتفظ بحجمه.
* **`access`.** يُطبَّق كل مفتاح عند وجوده. `null` تمسح قاعدة. تنتمي قواعد الوصول إلى `access`: إرسالها ضمن `link` يحصل على `422`.
* **`archived`.** يوقف رمز QR ورابطه القصير مؤقتًا أو يعيد تفعيلهما معًا، مثل [الإيقاف المؤقت](#إيقاف-رمز-qr-مؤقتًا) و[إعادة التفعيل](#إعادة-تفعيل-رمز-qr).

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Autumn campaign",
    "access": { "password": "s3cr3t", "passwordProtected": true }
  }'
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "title": "Autumn campaign",
  "access": { "passwordProtected": true, "activeAt": null, "pauseAt": null, "scanLimit": null },
  "…": "…"
}
```

ما يتيح لك كل نوع تغييره بعد الطباعة مذكور في [بيانات رمز QR حسب النوع](https://docs.getqr.com/ar/api/guides/qr-types.md).

## ضبط حالة الإيقاف المؤقت

`PUT /api/v1/qrs/{qrId}`

يضبط حالة الإيقاف المؤقت مباشرة. يؤدي [الإيقاف المؤقت](#إيقاف-رمز-qr-مؤقتًا) و[إعادة التفعيل](#إعادة-تفعيل-رمز-qr) المهمة نفسها بصورة أوضح.

**qrId** `string` *required*

معرّف رمز QR.

**archived** `boolean` *required*

`true` لإيقاف رمز QR مؤقتًا، و`false` لإعادة تفعيله.

```bash cURL theme={null}
curl -X PUT "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "archived": true }'
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": true,
  "…": "…"
}
```

## إيقاف رمز QR مؤقتًا

`POST /api/v1/qrs/{qrId}/pause`

يمنع رمز QR من التوجيه إلى وجهته: تعرض عمليات المسح صفحة الإيقاف المؤقت بدلًا من ذلك. يظل الرمز المطبوع ورابطه القصير صالحين. لا يوجد جسم طلب.

**qrId** `string` *required*

معرّف رمز QR.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/pause" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": true,
  "…": "…"
}
```

## إعادة تفعيل رمز QR

`POST /api/v1/qrs/{qrId}/activate`

يجعل رمز QR الموقوف مؤقتًا يوجّه إلى وجهته مرة أخرى. يظل أي جدول زمني أو حد مسح ساريًا. لا يوجد جسم طلب.

**qrId** `string` *required*

معرّف رمز QR.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/activate" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": false,
  "…": "…"
}
```

## تكرار رمز QR

`POST /api/v1/qrs/{qrId}/duplicate`

يُنشئ نسخة بالمحتوى والتصميم نفسيهما. لا يوجد جسم طلب. يُرجع `201 Created` مع [رمز QR](#كائن-رمز-qr) الجديد.

**qrId** `string` *required*

معرّف رمز QR المراد نسخه.

* **الرابط القصير.** تحصل النسخة على رابط قصير خاص بها، بمعرّف نصي عشوائي على النطاق الافتراضي لمساحة العمل، لا على نطاق المصدر. تُحتسب عمليات مسحها بشكل منفصل.
* **العنوان.** يُضاف إلى العنوان اللاحقة ` (Copy)`. تبقى النتيجة ضمن 40 حرفًا: يُختصر العنوان الطويل أولًا. يبقى رمز QR الذي بلا عنوان بلا عنوان.
* **ما لا يُنسخ.** قواعد الوصول (كلمة المرور، الجدول الزمني، حد المسح) وحالة الإيقاف المؤقت. تكون النسخة نشطة دائمًا.
* **الملفات.** تُنسخ ملفات PDF والصور، بما فيها ملفات الحزم والمعارض، فتصبح النسخة مالكة لها. أما ملفات الفيديو وملفات التصميم، مثل الشعارات، فتُشارك مع المصدر.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/duplicate" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 201 theme={null}
{
  "id": "qr_7Hk2PqWmX9cTnV4sLbR8YdZe",
  "title": "Landing page (Copy)",
  "shortLink": "https://getqr.sh/p2Wq9dL",
  "url": "https://example.com",
  "archived": false,
  "scans": 0,
  "…": "…"
}
```

## حذف رمز QR

`DELETE /api/v1/qrs/{qrId}`

يحذف رمز QR ورابطه القصير. يُرجع المعرّف المحذوف.

> [!WARNING]
>
> الحذف نهائي. يتوقف الرمز المطبوع ورابطه القصير عن العمل، ولا يعود سجل المسح متاحًا. [أوقف](#إيقاف-رمز-qr-مؤقتًا) رمز QR مؤقتًا بدلًا من ذلك إذا كنت قد تحتاج إليه مجددًا.

**qrId** `string` *required*

معرّف رمز QR.

**id** `string`

معرّف رمز QR المحذوف.

**deleted** `boolean`

دائمًا `true`.

```bash cURL theme={null}
curl -X DELETE "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{ "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf", "deleted": true }
```

## تنزيل صورة رمز QR

`GET /api/v1/qrs/{qrId}/download`

يرسم رمز QR بتصميمه ويُرجع الملف.

**qrId** `string` *required*

معرّف رمز QR المراد رسمه، من استجابة القائمة أو الإنشاء.

**format** `string` (default: jpg)

صيغة الإخراج: `jpg` أو `png` أو `svg` أو `pdf` (صفحة A4) أو `eps`. يُنزَّل التصميم بعلامة تجارية أو بالذكاء الاصطناعي بصيغة `jpg` أو `png` أو `pdf` فقط.

**resolution** `integer` (default: 1024)

حجم الصورة بالبكسل: `1024` أو `2048` أو `4096`. يتجاهله `svg` و`pdf`. يُنزَّل التصميم بعلامة تجارية أو بالذكاء الاصطناعي بحجم `1024` فقط.

| `format` | `Content-Type` | اسم الملف |
| - | - | - |
| `jpg` | `image/jpeg` | `<title>-<resolution>px.jpg` |
| `png` | `image/png` | `<title>-<resolution>px.png` |
| `svg` | `image/svg+xml` | `<title>.svg` |
| `pdf` | `application/pdf` | `<title>.pdf` |
| `eps` | `application/postscript` | `<title>-<resolution>px.eps` |

* **الجسم.** جسم الاستجابة هو الملف نفسه. اسم الملف المقترح موجود في الترويسة `Content-Disposition`، ويُبنى من العنوان، أو `qr-code` لرمز QR بلا عنوان.
* **التخزين المؤقت.** تحمل الاستجابات `ETag` و`Cache-Control: private, max-age=3600, must-revalidate`. أرسل `ETag` مرة أخرى في `If-None-Match` للحصول على `304 Not Modified` عندما لا يتغير رمز QR.
* **الأخطاء.** الصيغة أو الدقة غير المدعومة تحصل على `400 bad_request`. تذكر رسالة الخطأ السبب: `qr_download_invalid_format` أو `qr_download_invalid_resolution` أو `qr_download_art_format_unsupported` أو `qr_download_art_resolution_unsupported`.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/download?format=png&resolution=1024" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  --output qr-code.png
```

```http 200 theme={null}
HTTP/1.1 200 OK
Content-Type: image/png
Content-Disposition: attachment; filename="landing-page-1024px.png"
ETag: "9f2c0e1b5a7d43c8b016e2f4a9d5c3718be40f92"
Cache-Control: private, max-age=3600, must-revalidate

<binary image data>
```

## قواعد الوصول

أرسل كائن `access` عند الإنشاء أو التحديث لجدولة بداية ونهاية، أو تحديد عدد عمليات المسح، أو طلب كلمة مرور. تبقى القواعد المحذوفة دون تغيير، و`null` تمسح قاعدة. السلوك الكامل، مع أمثلة، موجود في [قواعد الوصول](https://docs.getqr.com/ar/api/guides/access-rules.md).

## كائنات التصميم

تحدد `styles` و`frameOptions` و`logoOptions` أشكال النقاط والزوايا، والألوان، والإطار، والشعار. تعمل بالطريقة نفسها مع رموز QR و[القوالب](https://docs.getqr.com/ar/api/endpoints/templates.md) و[الإنشاء المجمّع](https://docs.getqr.com/ar/api/endpoints/bulk-qr-creations.md). تُرفض الأشكال أو الإطارات أو الشعارات غير المعروفة. جميع القيم المقبولة ومثال تطبيقي موجودة في [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md).

## المشكلات الشائعة

> [accordion] الخطأ 422 عند ضبط كلمة مرور أو جدول زمني أو حد مسح
>
> أرسل القاعدة ضمن `access`، لا ضمن `link`.

> [accordion] الخطأ 422 عند تغيير link.domain أو link.key
>
> لا يمكن تغيير الرابط القصير بعد الإنشاء، لأن الرمز المطبوع يرمّزه. أنشئ رمز QR جديدًا بدلًا من ذلك.

> [accordion] 422 "Expected … for qrType"
>
> `data` لا تطابق صيغة `qrType`. تحقّق من النوع في [بيانات رمز QR حسب النوع](https://docs.getqr.com/ar/api/guides/qr-types.md).

> [accordion] الخطأ 409 conflict عند إنشاء رمز QR
>
> عملية إنشاء مطابقة لا تزال قيد التنفيذ، أو أن `link.key` مستخدم. أعد المحاولة بعد انتهاء الطلب الأول. مع `Idempotency-Key`، تُرجع إعادة المحاولة رمز QR الأصلي.

> [accordion] الملف المُنزَّل بصيغة JPEG لا PNG
>
> المعاملان هما `format` و`resolution`، والقيمة الافتراضية لـ `format` هي `jpg`. أرسل `format=png`.

> [accordion] الخطأ 404 لرمز QR أراه في لوحة التحكم
>
> يُنفَّذ كل طلب في مساحة العمل الخاصة بمفتاح API. تحقّق من أن رمز QR ينتمي إليها. راجع [المصادقة](https://docs.getqr.com/ar/api/authentication.md).

## الخطوات التالية

> [card] [بيانات رمز QR حسب النوع](https://docs.getqr.com/ar/api/guides/qr-types.md)

> [card] [التخصيص](https://docs.getqr.com/ar/api/guides/customization.md)

> [card] [قواعد الوصول](https://docs.getqr.com/ar/api/guides/access-rules.md)

> [card] [التحليلات](https://docs.getqr.com/ar/api/endpoints/analytics.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.