> ## 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.

# Add credentials to existing ones (batch add)

> Adds new credentials to the offer without deleting existing ones. Automatically filters out duplicates based on login and email hashes.
     *
     **Credential system types:**
     *
     * - **1** (No Credentials): No credentials system - manual delivery via chat
     * - **3** (Multiple): Multiple credentials system - 1+ credentials, goes to NOT_ACTIVE when sold out
     *
     **Duplicate handling:**
     * - Duplicates are automatically filtered out (not added)
     * - Duplicates are detected by login_hash and email_hash
     * - Response includes count of skipped duplicates



## OpenAPI

````yaml /api-docs.json post /external_api/pro/offers/{offerId}/credentials/add_batch
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:
  /external_api/pro/offers/{offerId}/credentials/add_batch:
    post:
      tags:
        - Offer Credentials
      summary: Add credentials to existing ones (batch add)
      description: >-
        Adds new credentials to the offer without deleting existing ones.
        Automatically filters out duplicates based on login and email hashes.
             *
             **Credential system types:**
             *
             * - **1** (No Credentials): No credentials system - manual delivery via chat
             * - **3** (Multiple): Multiple credentials system - 1+ credentials, goes to NOT_ACTIVE when sold out
             *
             **Duplicate handling:**
             * - Duplicates are automatically filtered out (not added)
             * - Duplicates are detected by login_hash and email_hash
             * - Response includes count of skipped duplicates
      operationId: f1c751c35e23466e80345d6c1e0f240a
      parameters:
        - name: Accept
          in: header
          description: API response format
          required: true
          schema:
            type: string
            default: application/json
            enum:
              - application/json
        - name: offerId
          in: path
          required: true
          schema:
            type: integer
            example: 123
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - credentials
              properties:
                credentials:
                  type: array
                  items:
                    required:
                      - login
                      - game_password
                    properties:
                      login:
                        type: string
                        maxLength: 255
                        example: user@example.com
                      game_password:
                        type: string
                        maxLength: 255
                        example: SecurePass123
                      email:
                        type: string
                        format: email
                        nullable: true
                      email_password:
                        type: string
                        nullable: true
                      is_2fa_active:
                        type: boolean
                        nullable: true
                      comment:
                        type: string
                        maxLength: 1000
                        nullable: true
                    type: object
                  maxItems: 1000
                  minItems: 1
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: >-
                      Successfully added 8 credentials. 2 duplicates were
                      skipped.
                type: object
        '400':
          description: Validation error
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
                type: object
        '403':
          description: Forbidden - offer is transferred or user has no access
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Cannot modify credentials for transferred offer
                type: object
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````