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

# JSON Lines Merger

> Merge several JSON Lines (JSONL/NDJSON) sources into one JSON array or one NDJSON stream. Combines a pasted blob with any number of uploaded files, expands sources that are already JSON arrays, drops duplicate records, tags each record with where it came from, and reports invalid lines instead of failing on them.

[Try JSON Lines Merger in your browser →](https://iotools.cloud/tool/json-lines-merger/)



## OpenAPI

````yaml https://api.iotools.cloud/v1/openapi post /v1/tool/json-lines-merger
openapi: 3.1.0
info:
  title: iotools.cloud API
  version: 1.0.0
  description: >-
    Run any iotools.cloud tool over HTTP.


    Authenticate with `Authorization: Bearer iot_live_…`.


    **Only `POST /v1/tool/{slug}` costs credits.** Every GET here — the catalog,
    a tool's schema, your balance — is free. A tool call is charged its own
    weight or your plan's per-call minimum, whichever is larger;
    `x-iotools-credit-cost` on each operation is quoted at the free-tier
    minimum, and `GET /v1/tools/list` returns the exact figure for your key.
    `GET /v1/me/credits` reports what you have left, and `GET /v1/me/usage`
    reports what it went on.


    Failures are RFC 9457 problem documents — branch on `code`.
servers:
  - url: https://api.iotools.cloud
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Catalog
    description: Find a tool and read its contract. Free.
  - name: Converters
    description: >-
      Convert between formats, encodings, and units — Base64, CSV and JSON,
      timestamps, and more. Fast, free, and processed right in your browser.
  - name: Formatters
    description: >-
      Format, beautify, minify, and validate code and data — JSON, HTML, CSS,
      SQL, and regex. Clean up messy input in one click, with nothing to upload.
  - name: Generators
    description: >-
      Generate exactly what you need and on demand — passwords, UUIDs, QR codes,
      hashes, random numbers, and more. Secure, instant, and free.
  - name: Calculators
    description: >-
      Crunch the numbers fast — from everyday math to specialized conversions
      and unit work. Free online calculators that run entirely in your browser.
  - name: Editors
    description: >-
      Edit and transform text, code, and images with quick, focused editors that
      run entirely in your browser — nothing to install, and no sign-up needed.
  - name: Utilities
    description: >-
      Everyday developer and web utilities — DNS and IP lookups, redirect and
      certificate checkers, and other quick diagnostics. Free and
      privacy-friendly.
  - name: Account
    description: Your key's allowance, limits and usage history.
paths:
  /v1/tool/json-lines-merger:
    post:
      tags:
        - Utilities
      summary: JSON Lines Merger
      description: >-
        Merge several JSON Lines (JSONL/NDJSON) sources into one JSON array or
        one NDJSON stream. Combines a pasted blob with any number of uploaded
        files, expands sources that are already JSON arrays, drops duplicate
        records, tags each record with where it came from, and reports invalid
        lines instead of failing on them.


        [Try JSON Lines Merger in your browser
        →](https://iotools.cloud/tool/json-lines-merger/)
      operationId: run_json_lines_merger
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                ioJsonLines:
                  type: string
                  description: JSON Lines input
                ioFiles:
                  type: array
                  items:
                    type: string
                    contentEncoding: base64
                  description: Add JSONL / NDJSON / JSON files
                ioOutputFormat:
                  enum:
                    - array
                    - ndjson
                  description: Merge into
                ioIndent:
                  enum:
                    - '2'
                    - '4'
                    - tab
                    - minified
                  description: Indentation
                ioDedupe:
                  type: boolean
                  description: Remove duplicate records
                ioAddSource:
                  type: boolean
                  description: Tag each record with a "_source" key
                ioSortKeys:
                  type: boolean
                  description: Sort object keys alphabetically
                ioSkipInvalid:
                  type: boolean
                  description: Skip invalid lines
              required: []
      responses:
        '200':
          description: Tool output
          content:
            application/json:
              schema:
                type: object
                required:
                  - tool
                  - tool_version
                  - outputs
                  - credits_used
                properties:
                  request_id:
                    type: string
                  tool:
                    type: string
                  tool_version:
                    type: string
                    description: >-
                      Output-contract version for this tool. Currently "1" for
                      all tools.
                  outputs:
                    type: object
                    properties:
                      ioOutput:
                        type: string
                        description: Merged output
                      ioSummary:
                        type: string
                        description: Summary
                      ioIssues:
                        type: string
                        description: Invalid lines
                  credits_used:
                    type: integer
                    description: >-
                      Credits this call consumed, after any settlement refund. 0
                      when metering is disabled.
                  credits_remaining:
                    type:
                      - integer
                      - 'null'
                    description: >-
                      Credits left in the current monthly allowance, or null
                      when metering is disabled.
        '400':
          description: Invalid request.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/validation_error
                title: Invalid request
                status: 400
                code: validation_error
                detail: One or more inputs are invalid — see `fields`.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '401':
          description: Missing or invalid API key.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/invalid_api_key
                title: Invalid API key
                status: 401
                code: invalid_api_key
                detail: 'Provide ''Authorization: Bearer <key>''.'
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '402':
          description: Monthly credit allowance exhausted.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/insufficient_credits
                title: Insufficient credits
                status: 402
                code: insufficient_credits
                detail: >-
                  This call costs 1 credit and 0 remain in this month's
                  allowance.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '403':
          description: Tool exists but has no API surface.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/tool_not_allowed
                title: Tool not available over the API
                status: 403
                code: tool_not_allowed
                detail: >-
                  "Background Remover" is available on iotools.cloud but has no
                  API endpoint.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '404':
          description: No such tool.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/tool_not_found
                title: Tool not found
                status: 404
                code: tool_not_found
                detail: No tool with that slug. See GET /v1/tools.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '413':
          description: Body too large.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/payload_too_large
                title: Payload too large
                status: 413
                code: payload_too_large
                detail: Request body exceeds this tool's size limit.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '429':
          description: Per-minute rate limit exceeded.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/rate_limited
                title: Rate limit exceeded
                status: 429
                code: rate_limited
                detail: Too many requests. Retry in 30s.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '500':
          description: Tool failed to run.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/processing_error
                title: Tool failed to run
                status: 500
                code: processing_error
                detail: The tool failed to run. Please try again.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
        '503':
          description: Tool temporarily disabled.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://iotools.cloud/docs/errors/tool_disabled
                title: Tool temporarily disabled
                status: 503
                code: tool_disabled
                detail: This tool is temporarily unavailable. Try again shortly.
                request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
      security:
        - bearerAuth: []
components:
  schemas:
    Problem:
      type: object
      description: >-
        RFC 9457 problem document, served as application/problem+json. Branch on
        `code`; `title` is human prose and may be reworded without notice.
      required:
        - type
        - title
        - status
        - code
      properties:
        type:
          type: string
          format: uri
          description: Stable documentation URI for this failure.
          examples:
            - https://iotools.cloud/docs/errors/invalid_api_key
            - https://iotools.cloud/docs/errors/api_unconfigured
            - https://iotools.cloud/docs/errors/validation_error
            - https://iotools.cloud/docs/errors/payload_too_large
            - https://iotools.cloud/docs/errors/tool_not_found
            - https://iotools.cloud/docs/errors/tool_not_allowed
            - https://iotools.cloud/docs/errors/tool_disabled
            - https://iotools.cloud/docs/errors/rate_limited
            - https://iotools.cloud/docs/errors/insufficient_credits
            - https://iotools.cloud/docs/errors/processing_error
            - https://iotools.cloud/docs/errors/internal_error
        title:
          type: string
          examples:
            - Invalid API key
            - API not configured
            - Invalid request
            - Payload too large
            - Tool not found
            - Tool not available over the API
            - Tool temporarily disabled
            - Rate limit exceeded
            - Insufficient credits
            - Tool failed to run
            - Internal error
        status:
          type: integer
        code:
          type: string
          enum:
            - invalid_api_key
            - api_unconfigured
            - validation_error
            - payload_too_large
            - tool_not_found
            - tool_not_allowed
            - tool_disabled
            - rate_limited
            - insufficient_credits
            - processing_error
            - internal_error
        detail:
          type: string
          description: Human explanation of this occurrence.
        request_id:
          type: string
          description: Correlation id, also sent as x-request-id.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: iot_live_…

````