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

# Attach screenshots to offer from external URLs

> Download images from a list of external URLs and attach them to the offer. Successfully downloaded URLs are attached to the offer immediately; failed ones are returned in the `failed` array. Attached images may take a short time to become accessible.
     *
     **Access restriction:** This endpoint is available by request only. To add your file hosting domain to the allowed list, please contact support.
     *
     **Limit:** Total screenshots per offer is capped at `screenshots_max_count` (default 20).
     *
     **Rate limit:** 300 requests/min (shared pool with attach_screenshots).



## OpenAPI

````yaml /api-docs.json post /api/shop/marketplace/offers/{offerId}/attach_screenshots_from_links
openapi: 3.0.0
info:
  title: Currency Marketplace API
  description: API documentation for Currency Marketplace
  version: 1.0.0
servers:
  - url: https://skycoach.gg/
    description: API Server
security: []
tags:
  - name: Currency Marketplace
    description: Currency Marketplace
  - name: Offers
    description: Offers
  - name: Offer Credentials
    description: Offer Credentials
paths:
  /api/shop/marketplace/offers/{offerId}/attach_screenshots_from_links:
    post:
      tags:
        - Offers
      summary: Attach screenshots to offer from external URLs
      description: >-
        Download images from a list of external URLs and attach them to the
        offer. Successfully downloaded URLs are attached to the offer
        immediately; failed ones are returned in the `failed` array. Attached
        images may take a short time to become accessible.
             *
             **Access restriction:** This endpoint is available by request only. To add your file hosting domain to the allowed list, please contact support.
             *
             **Limit:** Total screenshots per offer is capped at `screenshots_max_count` (default 20).
             *
             **Rate limit:** 300 requests/min (shared pool with attach_screenshots).
      operationId: 0536c76c13cc9ca92eea06a250075022
      parameters:
        - name: Accept
          in: header
          required: true
          schema:
            type: string
            default: application/json
            enum:
              - application/json
        - name: offerId
          in: path
          description: ID of the offer to attach screenshots to
          required: true
          schema:
            type: integer
            example: 123849
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - urls
              properties:
                urls:
                  description: >-
                    List of public image URLs to download and attach (1–10
                    items). Only domains pre-approved for your account are
                    accepted.
                  type: array
                  items:
                    type: string
                    format: uri
                    example: https://files.example.com/screenshot.jpg
              type: object
      responses:
        '200':
          description: >-
            Processing complete. Check `uploaded` and `failed` arrays for
            per-URL results.
          content:
            application/json:
              schema:
                properties:
                  uploaded:
                    description: S3 URLs of successfully processed screenshots
                    type: array
                    items:
                      type: string
                      example: >-
                        https://s3-marketplace.skycoach.gg/uploads/product_currency_offer/screenshot/550e8400-e29b-41d4-a716-446655440000.jpg
                  failed:
                    description: >-
                      Original URLs that could not be downloaded or processed
                      (HTTP error, unsupported format, file too large, etc.)
                    type: array
                    items:
                      type: string
                      example: https://files.example.com/broken.jpg
                type: object
        '401':
          description: Unauthorized
        '403':
          description: Forbidden — caller does not own the offer
        '404':
          description: Offer not found
        '422':
          description: >-
            Validation error — invalid URL, domain not in allowed list, or
            screenshot limit exceeded
        '429':
          description: Rate limit exceeded
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````