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

# SDKs

> A typed client for five languages. Each one prices with a fallback, verifies webhooks, and runs a connector for you. Pick yours and go.

Elastly ships a typed client for five languages, and they do the same things. Each one prices a line
with a hard deadline and a fallback so a slow or down Elastly never breaks your quote screen, raises
typed errors you can branch on, verifies webhooks, and runs a connector that pages, checkpoints,
retries, and reports for you.

Four are generated from the same [OpenAPI contract](/docs/api/overview) our servers validate against, so
their types cannot drift from the API. The TypeScript SDK is hand-written. Same surface, same features.

## Pick your language

<Columns cols={3}>
  <Card title="TypeScript" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/typescript.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=a1f9a94e668910e6ac937c8a9b8ce3e1" href="/docs/sdks/typescript" width="24" height="24" data-path="logos/typescript.svg">
    Node.js, ESM and CommonJS.
  </Card>

  <Card title="Python" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/python.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=08f3d0d511abb181d41c8c51e7090614" href="/docs/sdks/python" width="24" height="24" data-path="logos/python.svg">
    For scripts and services.
  </Card>

  <Card title="PHP" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/php.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=264b4e8782c13687f9ef285dca00b69f" href="/docs/sdks/php" width="24" height="24" data-path="logos/php.svg">
    Framework-agnostic, Laravel-friendly.
  </Card>

  <Card title="Java" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/java.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=988d2a0a35f09b7d0695c498cb40babd" href="/docs/sdks/java" width="24" height="24" data-path="logos/java.svg">
    Maven Central and Gradle.
  </Card>

  <Card title="Go" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/go.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=5b7ead56b46a3e8072c9d35fa339574f" href="/docs/sdks/go" width="40" height="24" data-path="logos/go.svg">
    A single idiomatic module.
  </Card>

  <Card title="Build a connector" icon="wrench" href="/docs/sdks/build-a-connector">
    Push your own ERP or storefront to Elastly.
  </Card>
</Columns>

## Install

<CodeGroup>
  ```bash npm theme={null}
  npm install @elastly/sdk
  ```

  ```bash pip theme={null}
  pip install elastly
  ```

  ```bash composer theme={null}
  composer require elastly/elastly-php
  ```

  ```xml Maven theme={null}
  <dependency>
    <groupId>io.elastly</groupId>
    <artifactId>elastly-sdk</artifactId>
    <version>0.2.0</version>
  </dependency>
  ```

  ```bash Go theme={null}
  go get github.com/elastly/elastly-go@latest
  ```
</CodeGroup>

## The one thing to get right: the decision id

Every priced line comes back with a `pricingDecisionId`. **Store it in your own system, on the quote
line it priced.** When that quote later closes and you send it back to Elastly, the id is how Elastly
ties what it recommended to what your rep actually did. That difference is what the pricing model learns
from. Every language page shows where to persist it, and it is the first thing to wire up.

## Where the source lives

The four generated SDKs are open source, each in its own public repo. The TypeScript SDK is hand-written
and published to npm.

<Columns cols={3}>
  <Card title="@elastly/sdk" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/typescript.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=a1f9a94e668910e6ac937c8a9b8ce3e1" href="https://www.npmjs.com/package/@elastly/sdk" width="24" height="24" data-path="logos/typescript.svg">
    TypeScript, on npm.
  </Card>

  <Card title="elastly-python" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/python.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=08f3d0d511abb181d41c8c51e7090614" href="https://github.com/elastly/elastly-python" width="24" height="24" data-path="logos/python.svg">
    On PyPI and GitHub.
  </Card>

  <Card title="elastly-php" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/php.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=264b4e8782c13687f9ef285dca00b69f" href="https://github.com/elastly/elastly-php" width="24" height="24" data-path="logos/php.svg">
    On Packagist and GitHub.
  </Card>

  <Card title="elastly-java" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/java.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=988d2a0a35f09b7d0695c498cb40babd" href="https://github.com/elastly/elastly-java" width="24" height="24" data-path="logos/java.svg">
    On Maven Central and GitHub.
  </Card>

  <Card title="elastly-go" icon="https://mintcdn.com/elastly/UkfJ_U1OJ3osCTJQ/logos/go.svg?fit=max&auto=format&n=UkfJ_U1OJ3osCTJQ&q=85&s=5b7ead56b46a3e8072c9d35fa339574f" href="https://github.com/elastly/elastly-go" width="40" height="24" data-path="logos/go.svg">
    On GitHub.
  </Card>

  <Card title="More coming soon" icon="ellipsis" href="mailto:support@elastly.io">
    Need a language we don't list? Tell us.
  </Card>
</Columns>

The generated SDKs are built from the contract, so file an issue rather than a pull request against
generated code.
