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

# Create

> Create a TLS Edge




## OpenAPI

````yaml https://raw.githubusercontent.com/ngrok/ngrok-openapi/refs/heads/main/ngrok.yaml post /edges/tls
openapi: 3.0.0
info:
  title: ngrok OpenAPI
  version: 1.0.0
servers:
  - url: https://api.ngrok.com
security:
  - authentication: []
paths:
  /edges/tls:
    post:
      tags:
        - EdgesTLS
      summary: Create
      description: |
        Create a TLS Edge
      operationId: EdgesTlsCreate
      parameters:
        - $ref: '#/components/parameters/ngrokVersion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TLSEdgeCreate'
      responses:
        '201':
          description: |
            Create a TLS Edge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TLSEdge'
components:
  parameters:
    ngrokVersion:
      name: ngrok-version
      in: header
      required: true
      schema:
        type: integer
        default: 2
  schemas:
    TLSEdgeCreate:
      type: object
      properties:
        description:
          description: >
            human-readable description of what this edge will be used for;
            optional, max 255 bytes.
          type: string
        metadata:
          description: >
            arbitrary user-defined machine-readable data of this edge. Optional,
            max 4096 bytes.
          type: string
        hostports:
          description: |
            hostports served by this edge
          type: array
          items:
            type: string
        backend:
          $ref: '#/components/schemas/EndpointBackendMutate'
          description: |
            edge modules
        ip_restriction:
          $ref: '#/components/schemas/EndpointIPPolicyMutate'
          description: n/a
        mutual_tls:
          $ref: '#/components/schemas/EndpointMutualTLSMutate'
          description: n/a
        tls_termination:
          $ref: '#/components/schemas/EndpointTLSTermination'
          description: n/a
        traffic_policy:
          $ref: '#/components/schemas/EndpointTrafficPolicy'
          description: |
            the traffic policy associated with this edge or null
    TLSEdge:
      type: object
      properties:
        id:
          description: |
            unique identifier of this edge
          type: string
        description:
          description: >
            human-readable description of what this edge will be used for;
            optional, max 255 bytes.
          type: string
        metadata:
          description: >
            arbitrary user-defined machine-readable data of this edge. Optional,
            max 4096 bytes.
          type: string
        created_at:
          description: |
            timestamp when the edge configuration was created, RFC 3339 format
          type: string
        uri:
          description: |
            URI of the edge API resource
          type: string
        hostports:
          description: |
            hostports served by this edge
          type: array
          items:
            type: string
        backend:
          $ref: '#/components/schemas/EndpointBackend'
          description: |
            edge modules
        ip_restriction:
          $ref: '#/components/schemas/EndpointIPPolicy'
          description: n/a
        mutual_tls:
          $ref: '#/components/schemas/EndpointMutualTLS'
          description: n/a
        tls_termination:
          $ref: '#/components/schemas/EndpointTLSTermination'
          description: n/a
        traffic_policy:
          $ref: '#/components/schemas/EndpointTrafficPolicy'
          description: |
            the traffic policy associated with this edge or null
    EndpointBackendMutate:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        backend_id:
          description: |
            backend to be used to back this endpoint
          type: string
    EndpointIPPolicyMutate:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        ip_policy_ids:
          description: >
            list of all IP policies that will be used to check if a source IP is
            allowed access to the endpoint
          type: array
          items:
            type: string
    EndpointMutualTLSMutate:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        certificate_authority_ids:
          description: >
            list of certificate authorities that will be used to validate the
            TLS client certificate presented by the initiator of the TLS
            connection
          type: array
          items:
            type: string
    EndpointTLSTermination:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        terminate_at:
          description: >
            `edge` if the ngrok edge should terminate TLS traffic, `upstream` if
            TLS traffic should be passed through to the upstream ngrok agent /
            application server for termination. if `upstream` is chosen, most
            other modules will be disallowed because they rely on the ngrok edge
            being able to access the underlying traffic.
          type: string
        min_version:
          description: >
            The minimum TLS version used for termination and advertised to the
            client during the TLS handshake. if unspecified, ngrok will choose
            an industry-safe default. This value must be null if `terminate_at`
            is set to `upstream`.
          type: string
    EndpointTrafficPolicy:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        value:
          description: >
            the traffic policy that should be applied to the traffic on your
            endpoint.
          type: string
    EndpointBackend:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        backend:
          $ref: '#/components/schemas/Ref'
          description: |
            backend to be used to back this endpoint
    EndpointIPPolicy:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        ip_policies:
          description: >
            list of all IP policies that will be used to check if a source IP is
            allowed access to the endpoint
          type: array
          items:
            $ref: '#/components/schemas/Ref'
    EndpointMutualTLS:
      type: object
      properties:
        enabled:
          description: >
            `true` if the module will be applied to traffic, `false` to disable.
            default `true` if unspecified
          type: boolean
        certificate_authorities:
          description: >
            PEM-encoded CA certificates that will be used to validate. Multiple
            CAs may be provided by concatenating them together.
          type: array
          items:
            $ref: '#/components/schemas/Ref'
    Ref:
      type: object
      properties:
        id:
          description: |
            a resource identifier
          type: string
        uri:
          description: |
            a uri for locating a resource
          type: string
  securitySchemes:
    authentication:
      type: http
      scheme: bearer

````