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

# Create Support Ticket

> Raises a support ticket on behalf of one of your customers and queues it for Ripio's support team.

**This endpoint must be enabled for your account by the Ripio team before it can be used.** It is disabled by default; while disabled, every request returns `403` with the error code `20061`. Contact Ripio to have support tickets enabled for your account.

The request is `multipart/form-data` and may include file attachments. The ticket is processed asynchronously: the endpoint responds immediately with `202 Accepted` and a `ticketId`, with `status` set to `PENDING` and `issueKey` set to `null`. The ticket reference (`issueKey`) becomes available once processing finishes. We recommend subscribing to the [Support Ticket webhook events](/ramps-api/webhooks/support-ticket-events) to be notified automatically when this happens. You can also look up a specific ticket on demand via the [Retrieve Support Ticket](/ramps-api/support-tickets/retrieve-support-ticket) endpoint.

The referenced customer must exist and have an email address on file.

<Warning>
  Support tickets are an **opt-in feature that must be enabled for your account by the Ripio team**. The feature is disabled by default. While it is disabled, every request to this endpoint returns `403 Forbidden` with the error code `20061` (`SupportTicketsNotEnabledException`). Contact the Ripio team to have support tickets enabled for your account before integrating.
</Warning>

## How it works

This endpoint lets you raise a support ticket on behalf of one of your customers. Tickets are processed asynchronously:

1. You submit the ticket as `multipart/form-data` (optionally with file attachments). The API validates the request and responds immediately with `202 Accepted`, returning a `ticketId`, `status: "PENDING"` and `issueKey: null`.
2. Ripio processes the ticket in the background and registers it with the support team.
3. Once registered, the ticket moves to `status: "CREATED"` and the `issueKey` (the human-readable reference, e.g. `SUP-1234`) becomes available.

**The recommended way to obtain the `issueKey` is to subscribe to the [Support Ticket webhook events](/ramps-api/webhooks/support-ticket-events)** — your application is notified automatically as soon as the ticket reaches the `CREATED` (or `FAILED`) status. If you need to check the state of a specific ticket on demand, you can also use the [Retrieve Support Ticket](/ramps-api/support-tickets/retrieve-support-ticket) endpoint with the returned `ticketId`.

## How follow-up with the customer works

Once a ticket is registered with Ripio's support team, **all follow-up with the end user happens over email**, directly between Ripio's support team and the customer — using the email address on file for the `customerId` you referenced. Ripio's support team replies, asks for more information and notifies the resolution by email, and the customer answers from their inbox.

This conversation is **not** relayed through the API: there is no endpoint to read or post replies on a ticket. This API (and the [webhook events](/ramps-api/webhooks/support-ticket-events)) only cover **creating** the ticket and reporting its registration outcome (`CREATED` / `FAILED`) — not the subsequent messages or resolution.

For this reason, make sure the customer's email address is valid and actively monitored, since it is the only channel Ripio uses to reach them about the ticket.

<Note>
  The customer referenced by `customerId` must exist and have an email address on file — otherwise the request is rejected with a `400` error. This same email address is the channel Ripio's support team uses to follow up with the customer (see above).

  Attachments are limited to **5 files per request**, **25 MB per file** and **50 MB in total**, with the allowed extensions `jpg, jpeg, png, webp, mp4, mov, avi, webm, pdf`.
</Note>


## OpenAPI

````yaml ramps-api/openapi.json POST /api/v1/supportTickets/
openapi: 3.1.0
info:
  title: Ripio Ramp API
  version: v1
  description: >-
    API for Ripio ramp services, enabling partners to integrate On-Ramp,
    Off-Ramp, customer management, KYC processes, and other financial
    functionalities. This API is RESTful, uses JSON for requests and responses,
    and standard HTTP status codes. This document is based on the
    'onramp-api.pdf' provided and aims to be compliant with OpenAPI
    Specification v3.1.0. The PDF indicates that the API documentation is a
    draft and subject to change.
servers:
  - url: https://skala-sandbox.ripio.com
    description: Sandbox environment
  - url: https://skala.ripio.com
    description: Production environment
security:
  - BearerToken: []
tags:
  - name: Authentication
    description: Operations related to API authentication and authorization.
  - name: Support Tickets
    description: >-
      Operations for raising and tracking customer support tickets with Ripio's
      support team. This feature must be enabled for your account by the Ripio
      team.
  - name: Customers
    description: Operations related to customer management.
  - name: KYC
    description: Operations related to Know Your Customer processes.
  - name: Fiat Accounts
    description: Operations related to managing fiat accounts and their requirements.
  - name: Quotes
    description: Operations related to obtaining and managing conversion quotes.
  - name: On-Ramp
    description: Operations related to fiat-to-crypto (on-ramp) processes.
  - name: Off-Ramp
    description: Operations related to crypto-to-fiat (off-ramp) processes.
  - name: Transactions
    description: Operations related to listing and managing all transaction types.
  - name: Networks
    description: >-
      Operations related to retrieving available deposit and withdrawal
      networks.
  - name: Rates
    description: Operations related to retrieving market rates.
  - name: Sandbox
    description: Operations specific to the sandbox environment for testing purposes.
  - name: Webhooks
    description: Webhook event notifications from Ripio Ramp API.
  - name: Sell and Pay
    description: >-
      Endpoints for managing Sell and Pay transactions, which allow customers to
      convert cryptocurrency to fiat currency and pay merchants via QR codes
paths:
  /api/v1/supportTickets/:
    post:
      tags:
        - Support Tickets
      summary: Create Support Ticket
      description: >-
        Raises a support ticket on behalf of one of your customers and queues it
        for Ripio's support team.


        **This endpoint must be enabled for your account by the Ripio team
        before it can be used.** It is disabled by default; while disabled,
        every request returns `403` with the error code `20061`. Contact Ripio
        to have support tickets enabled for your account.


        The request is `multipart/form-data` and may include file attachments.
        The ticket is processed asynchronously: the endpoint responds
        immediately with `202 Accepted` and a `ticketId`, with `status` set to
        `PENDING` and `issueKey` set to `null`. The ticket reference
        (`issueKey`) becomes available once processing finishes. We recommend
        subscribing to the [Support Ticket webhook
        events](/ramps-api/webhooks/support-ticket-events) to be notified
        automatically when this happens. You can also look up a specific ticket
        on demand via the [Retrieve Support
        Ticket](/ramps-api/support-tickets/retrieve-support-ticket) endpoint.


        The referenced customer must exist and have an email address on file.
      operationId: createSupportTicket
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateSupportTicketRequest'
            encoding:
              files:
                style: form
                explode: true
      responses:
        '202':
          description: >-
            Ticket accepted and queued for processing. `status` is `PENDING` and
            `issueKey` is `null` until processing completes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupportTicketResponse'
              example:
                ticketId: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d
                status: PENDING
                issueKey: null
        '400':
          description: >-
            Bad Request - validation error (e.g. missing required field, unknown
            customer, or attachments that exceed the allowed
            count/size/extension).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                tooManyFiles:
                  summary: Too many attachments
                  value:
                    code: 20000
                    type: ValidationError
                    detail:
                      files:
                        - A maximum of 5 files is allowed per request.
                    status: 400
                unknownCustomer:
                  summary: Customer does not exist
                  value:
                    code: 20000
                    type: ValidationError
                    detail:
                      customerId:
                        - Customer does not exist.
                    status: 400
                customerWithoutEmail:
                  summary: Customer has no email
                  value:
                    code: 20014
                    type: EmailRequiredException
                    detail:
                      message: The customer must have an email setup.
                    status: 400
        '401':
          description: Unauthorized - Invalid or missing access token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: 40001
                type: NotAuthenticated
                detail:
                  message: Authentication credentials were not provided.
                  code: not_authenticated
                status: 401
        '403':
          description: >-
            Forbidden - support tickets are not enabled for your account.
            Contact the Ripio team to enable this feature.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: 20061
                type: SupportTicketsNotEnabledException
                detail:
                  message: Support tickets are not enabled for this account.
                status: 403
components:
  schemas:
    CreateSupportTicketRequest:
      type: object
      required:
        - customerId
        - summary
        - description
      properties:
        customerId:
          type: string
          format: uuid
          description: >-
            Your customer ID for the end user the ticket is raised on behalf of.
            The customer must exist and have an email address on file.
        summary:
          type: string
          maxLength: 240
          description: Short, one-line summary of the issue.
        description:
          type: string
          maxLength: 5000
          description: Detailed description of the issue.
        files:
          type: array
          description: >-
            Optional file attachments (e.g. screenshots). Up to 5 files per
            request, each up to 25 MB, and up to 50 MB in total. Allowed
            extensions: jpg, jpeg, png, webp, mp4, mov, avi, webm, pdf.
          items:
            type: string
            format: binary
    SupportTicketResponse:
      type: object
      required:
        - ticketId
        - status
        - issueKey
      properties:
        ticketId:
          type: string
          format: uuid
          description: >-
            Ripio's identifier for the support ticket. Use it to correlate the
            Support Ticket webhook events, or to look up the ticket's status on
            demand via the Retrieve Support Ticket endpoint.
        status:
          type: string
          enum:
            - PENDING
            - CREATED
            - FAILED
          description: >-
            Lifecycle status of the ticket. `PENDING`: accepted and being
            processed (no reference yet). `CREATED`: successfully registered in
            Ripio's support system; `issueKey` is populated. `FAILED`: the
            ticket could not be registered.
        issueKey:
          type:
            - string
            - 'null'
          description: >-
            Human-readable reference of the ticket in Ripio's support system
            (e.g. `SUP-1234`). `null` until the ticket reaches the `CREATED`
            status.
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
          description: Application-specific error code.
        type:
          type: string
          description: Type of error or exception.
        detail:
          type: object
          properties:
            message:
              type: string
              description: Detailed error message.
          additionalProperties: true
        status:
          type: integer
          description: HTTP status code.
      required:
        - code
        - type
        - detail
        - status
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token obtained via
        [/oauth2/token/](/ramps-api/authentication/acquire-access-token). Use as
        `Authorization: Bearer <access_token>`.

````