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

# SDK overview

> Choose the supported AvraAPI SDK for your backend application.

Use an AvraAPI SDK when you want the fastest backend integration. Each SDK
handles authentication headers, API response wrappers, typed errors, and media
responses so your application can focus on its own workflow.

<Note>
  SDKs run in your backend. Keep your Project Client ID and Client Secret out
  of browser code, mobile apps, and public repositories.
</Note>

## Available SDKs

<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4 not-prose">
  <div className="flex flex-col border border-gray-200 dark:border-gray-800 rounded-xl p-5 bg-white dark:bg-[#0c111c] shadow-sm relative hover:shadow-md transition-shadow">
    <div className="flex justify-between items-center mb-4">
      <div className="flex items-center gap-3">
        <img src="https://mintcdn.com/avraapi/CI9RHnUBtfjY8Z3E/images/icons/php.svg?fit=max&auto=format&n=CI9RHnUBtfjY8Z3E&q=85&s=9b3275969f0b28a0d54183bc366292c1" alt="PHP" className="w-8 h-8 object-contain" width="711" height="384" data-path="images/icons/php.svg" />

        <span className="font-bold text-lg text-gray-900 dark:text-gray-100">PHP</span>
      </div>

      <span className="text-[11px] font-bold px-2.5 py-1 bg-[#4F5B93]/10 text-[#4F5B93] dark:text-[#a0a8d6] rounded-full border border-[#4F5B93]/20">v1.5.2</span>
    </div>

    <div className="mb-4">
      <code className="block w-full p-2 bg-gray-50 dark:bg-gray-800/50 rounded-lg text-xs text-gray-800 dark:text-gray-200 border border-gray-200 dark:border-gray-700/50 flex justify-between items-center group cursor-pointer" onClick={() => navigator.clipboard.writeText('avraapi/php-sdk')}>
        <span>avraapi/php-sdk</span>

        <svg className="w-4 h-4 opacity-50 group-hover:opacity-100 shrink-0 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
        </svg>
      </code>
    </div>

    <p className="text-xs text-gray-600 dark:text-gray-400 mb-4 flex-grow">
      Official PHP SDK for integrating AvraAPI services with robust typed objects and exceptions.
    </p>

    <div className="mt-auto flex items-center gap-2">
      <svg className="w-4 h-4 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
        <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M5 12h14M12 5l7 7-7 7" />
      </svg>

      <span className="text-xs text-gray-500 dark:text-gray-400 font-medium">PHP 8.2+</span>
    </div>
  </div>

  <div className="flex flex-col border border-gray-200 dark:border-gray-800 rounded-xl p-5 bg-white dark:bg-[#0c111c] shadow-sm relative hover:shadow-md transition-shadow">
    <div className="flex justify-between items-center mb-4">
      <div className="flex items-center gap-3">
        <img src="https://mintcdn.com/avraapi/CI9RHnUBtfjY8Z3E/images/icons/laravel.svg?fit=max&auto=format&n=CI9RHnUBtfjY8Z3E&q=85&s=c29d39a3072bbdf91ab3829a5888c1bf" alt="Laravel" className="w-8 h-8 object-contain" width="1200" height="800" data-path="images/icons/laravel.svg" />

        <span className="font-bold text-lg text-gray-900 dark:text-gray-100">Laravel</span>
      </div>

      <span className="text-[11px] font-bold px-2.5 py-1 bg-red-500/10 text-red-600 dark:text-red-400 rounded-full border border-red-500/20">v1.2.0</span>
    </div>

    <div className="mb-4">
      <code className="block w-full p-2 bg-gray-50 dark:bg-gray-800/50 rounded-lg text-xs text-gray-800 dark:text-gray-200 border border-gray-200 dark:border-gray-700/50 flex justify-between items-center group cursor-pointer" onClick={() => navigator.clipboard.writeText('avraapi/laravel-sdk')}>
        <span>avraapi/laravel-sdk</span>

        <svg className="w-4 h-4 opacity-50 group-hover:opacity-100 shrink-0 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
        </svg>
      </code>
    </div>

    <p className="text-xs text-gray-600 dark:text-gray-400 mb-4 flex-grow">
      Native Laravel integration featuring Facades, config publishing, and DI support.
    </p>

    <div className="mt-auto flex items-center gap-2">
      <svg className="w-4 h-4 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
        <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M5 12h14M12 5l7 7-7 7" />
      </svg>

      <span className="text-xs text-gray-500 dark:text-gray-400 font-medium">Laravel 10, 11, 12</span>
    </div>
  </div>

  <div className="flex flex-col border border-gray-200 dark:border-gray-800 rounded-xl p-5 bg-white dark:bg-[#0c111c] shadow-sm relative hover:shadow-md transition-shadow">
    <div className="flex justify-between items-center mb-4">
      <div className="flex items-center gap-3">
        <img src="https://mintcdn.com/avraapi/CI9RHnUBtfjY8Z3E/images/icons/nodejs.webp?fit=max&auto=format&n=CI9RHnUBtfjY8Z3E&q=85&s=592f593a8014896f2d03cbd14a07ac1b" alt="Node.js" className="w-8 h-8 object-contain" width="256" height="256" data-path="images/icons/nodejs.webp" />

        <span className="font-bold text-lg text-gray-900 dark:text-gray-100">Node.js</span>
      </div>

      <span className="text-[11px] font-bold px-2.5 py-1 bg-green-500/10 text-green-700 dark:text-green-400 rounded-full border border-green-500/20">v1.2.0</span>
    </div>

    <div className="mb-4">
      <code className="block w-full p-2 bg-gray-50 dark:bg-gray-800/50 rounded-lg text-xs text-gray-800 dark:text-gray-200 border border-gray-200 dark:border-gray-700/50 flex justify-between items-center group cursor-pointer" onClick={() => navigator.clipboard.writeText('@avraapi/node-sdk')}>
        <span>@avraapi/node-sdk</span>

        <svg className="w-4 h-4 opacity-50 group-hover:opacity-100 shrink-0 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
        </svg>
      </code>
    </div>

    <p className="text-xs text-gray-600 dark:text-gray-400 mb-4 flex-grow">
      TypeScript-first async client handling endpoints and buffer media natively.
    </p>

    <div className="mt-auto flex items-center gap-2">
      <svg className="w-4 h-4 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
        <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M5 12h14M12 5l7 7-7 7" />
      </svg>

      <span className="text-xs text-gray-500 dark:text-gray-400 font-medium">Node.js 18+</span>
    </div>
  </div>
</div>

## Available Soon

<div className="grid grid-cols-1 sm:grid-cols-3 gap-4 mb-8 not-prose">
  <div className="flex items-center gap-3 p-4 border border-gray-200 dark:border-gray-800 rounded-xl bg-white dark:bg-[#0c111c] opacity-60">
    <img src="https://mintcdn.com/avraapi/CI9RHnUBtfjY8Z3E/images/icons/python.svg?fit=max&auto=format&n=CI9RHnUBtfjY8Z3E&q=85&s=1163344fa1b1125bbc614a0b90439f60" alt="Python" className="w-6 h-6 object-contain grayscale" width="112" height="111" data-path="images/icons/python.svg" />

    <span className="font-semibold text-gray-700 dark:text-gray-300">Python</span>
  </div>

  <div className="flex items-center gap-3 p-4 border border-gray-200 dark:border-gray-800 rounded-xl bg-white dark:bg-[#0c111c] opacity-60">
    <img src="https://mintcdn.com/avraapi/CI9RHnUBtfjY8Z3E/images/icons/java.svg?fit=max&auto=format&n=CI9RHnUBtfjY8Z3E&q=85&s=47169a2d8a0c208000d4ac619efe149c" alt="Java" className="w-6 h-6 object-contain grayscale" width="128" height="128" data-path="images/icons/java.svg" />

    <span className="font-semibold text-gray-700 dark:text-gray-300">Java</span>
  </div>

  <div className="flex items-center gap-3 p-4 border border-gray-200 dark:border-gray-800 rounded-xl bg-white dark:bg-[#0c111c] opacity-60">
    <img src="https://mintcdn.com/avraapi/CI9RHnUBtfjY8Z3E/images/icons/ruby.svg?fit=max&auto=format&n=CI9RHnUBtfjY8Z3E&q=85&s=aa5eaec598a38697f9f98f6170a56767" alt="Ruby" className="w-6 h-6 object-contain grayscale" width="128" height="128" data-path="images/icons/ruby.svg" />

    <span className="font-semibold text-gray-700 dark:text-gray-300">Ruby</span>
  </div>
</div>

## Universal Payment Gateway availability

Universal Payment Gateway is an advanced service with its own secure payment
lifecycle. It is supported through the PHP, Laravel, and Node.js SDKs.

| SDK | UPG support |
| - | - |
| PHP | Supported. Start with the [Universal Payment Gateway overview](/universal-payment-gateway/overview). |
| Laravel | Supported through `AvraAPI::payment()`. Start with the [Universal Payment Gateway overview](/universal-payment-gateway/overview). |
| Node.js | Supported through the server-only `client.payment()` accessor. Start with the [Universal Payment Gateway overview](/universal-payment-gateway/overview). |

The generic SDK request method is for a released provider endpoint that has not
received a typed helper yet. It does not bypass a provider configuration
requirement or replace UPG's typed server-side payment lifecycle.

## Choose an SDK or REST API

Choose an SDK for a standard backend integration. It provides language-native
configuration, response handling, errors, and media helpers.

Use the [REST API Reference](/api-reference/overview) when your application
needs direct HTTP control or a newly released provider endpoint before its
typed SDK helper is available.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.