Official SDKs & Libraries
Use our official client libraries to integrate InjectAPI into your applications with ease. Type-safe, well-documented, and actively maintained.
Overview
InjectAPI provides official SDKs for the most popular programming languages. Each SDK includes:
Type Safety
Full TypeScript support and type definitions for all languages that support them
Error Handling
Comprehensive error types and helpful error messages for debugging
Automatic Retries
Built-in retry logic for transient failures with exponential backoff
Full Documentation
Extensive inline documentation and examples for every method
Need help?
Join our Discord community or check out the API Reference for detailed documentation.
JavaScript / Node.js
Officialv1.2.0Installation
npm install @injectapi/sdkUsage
Basic Examplejavascript
import { InjectAPI } from '@injectapi/sdk';
// Initialize the client
const client = new InjectAPI({
apiKey: process.env.INJECTAPI_KEY,
});
// Extract product data
const result = await client.extract({
url: 'https://amazon.com/product/B08N5WRWNW',
mode: 'product',
});
console.log(result.data);
// {
// title: "Apple AirPods Pro (2nd Generation)",
// price: 249.99,
// currency: "USD",
// rating: 4.7,
// ...
// }Advanced Example with Optionsjavascript
const result = await client.extract({
url: 'https://example.com/article',
mode: 'article',
options: {
timeout: 30000, // Request timeout in ms
retries: 3, // Number of retry attempts
webhook: { // Optional webhook for async results
url: 'https://your-app.com/webhook',
events: ['extraction.complete', 'extraction.failed']
}
}
});
// Handle errors
try {
const result = await client.extract({
url: 'https://invalid-url.com',
mode: 'product',
});
} catch (error) {
if (error instanceof InjectAPIError) {
console.error('API Error:', error.message);
console.error('Status Code:', error.statusCode);
console.error('Error Code:', error.code);
}
}Python
Officialv1.1.5Installation
pip install injectapiUsage
Basic Examplepython
from injectapi import InjectAPI
import os
# Initialize the client
client = InjectAPI(api_key=os.environ.get('INJECTAPI_KEY'))
# Extract product data
result = client.extract(
url='https://amazon.com/product/B08N5WRWNW',
mode='product'
)
print(result.data)
# {
# 'title': 'Apple AirPods Pro (2nd Generation)',
# 'price': 249.99,
# 'currency': 'USD',
# 'rating': 4.7,
# ...
# }Advanced Example with Error Handlingpython
from injectapi import InjectAPI, InjectAPIError, RateLimitError
client = InjectAPI(api_key=os.environ.get('INJECTAPI_KEY'))
# With options
result = client.extract(
url='https://example.com/article',
mode='article',
timeout=30,
retries=3
)
# Error handling
try:
result = client.extract(
url='https://invalid-url.com',
mode='product'
)
except RateLimitError as e:
print(f"Rate limit exceeded. Retry after: {e.retry_after}s")
except InjectAPIError as e:
print(f"API Error: {e.message} (Code: {e.code})")PHP
Officialv1.0.8Installation
composer require injectapi/sdkUsage
Basic Examplephp
<?php
require 'vendor/autoload.php';
use InjectAPI\Client;
use InjectAPI\Exception\InjectAPIException;
// Initialize the client
$client = new Client([
'api_key' => getenv('INJECTAPI_KEY')
]);
// Extract product data
try {
$result = $client->extract([
'url' => 'https://amazon.com/product/B08N5WRWNW',
'mode' => 'product'
]);
print_r($result->data);
/*
Array (
[title] => Apple AirPods Pro (2nd Generation)
[price] => 249.99
[currency] => USD
[rating] => 4.7
...
)
*/
} catch (InjectAPIException $e) {
echo "Error: " . $e->getMessage();
echo "Code: " . $e->getCode();
}Ruby
Officialv1.0.3Installation
gem install injectapiUsage
Basic Exampleruby
require 'injectapi'
# Initialize the client
client = InjectAPI::Client.new(
api_key: ENV['INJECTAPI_KEY']
)
# Extract product data
result = client.extract(
url: 'https://amazon.com/product/B08N5WRWNW',
mode: 'product'
)
puts result.data
# {
# title: "Apple AirPods Pro (2nd Generation)",
# price: 249.99,
# currency: "USD",
# rating: 4.7,
# ...
# }
# Error handling
begin
result = client.extract(
url: 'https://invalid-url.com',
mode: 'product'
)
rescue InjectAPI::RateLimitError => e
puts "Rate limit exceeded. Retry after: #{e.retry_after}s"
rescue InjectAPI::Error => e
puts "Error: #{e.message} (Code: #{e.code})"
endGo
Officialv1.0.6Installation
go get github.com/injectapi/sdk-goUsage
Basic Examplego
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/injectapi/sdk-go"
)
func main() {
// Initialize the client
client := injectapi.NewClient(os.Getenv("INJECTAPI_KEY"))
// Extract product data
result, err := client.Extract(context.Background(), &injectapi.ExtractRequest{
URL: "https://amazon.com/product/B08N5WRWNW",
Mode: injectapi.ModeProduct,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Title: %s\n", result.Data.Title)
fmt.Printf("Price: %.2f %s\n", result.Data.Price, result.Data.Currency)
}Advanced Example with Optionsgo
// With context timeout
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
result, err := client.Extract(ctx, &injectapi.ExtractRequest{
URL: "https://example.com/article",
Mode: injectapi.ModeArticle,
Options: &injectapi.ExtractOptions{
Retries: 3,
Timeout: 30 * time.Second,
},
})
// Error handling
if err != nil {
switch e := err.(type) {
case *injectapi.RateLimitError:
fmt.Printf("Rate limit exceeded. Retry after: %v\n", e.RetryAfter)
case *injectapi.APIError:
fmt.Printf("API Error: %s (Code: %s)\n", e.Message, e.Code)
default:
log.Fatal(err)
}
return
}Community SDKs
These SDKs are maintained by the community. While we don't officially support them, they may be useful for your projects.
Java SDK
CommunityCommunity-maintained Java client
C# / .NET SDK
CommunityCommunity-maintained .NET client
Rust SDK
CommunityCommunity-maintained Rust crate
Swift SDK
CommunityCommunity-maintained Swift package
Want to contribute?
If you've built an SDK for InjectAPI, we'd love to feature it here! Contact us to get your SDK listed.