Project

walinko

0.0
The project is in a healthy, maintained state
Server-to-server Ruby client for the Walinko public API. Provides ergonomic helpers for sending transactional WhatsApp messages, idempotent retries, structured errors, and lookups by tracking id.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 3.13
~> 1.65
~> 3.20
 Project Readme

Walinko SDKs

Official server-side SDKs for the Walinko public API — currently covering transactional WhatsApp message sending.

This monorepo houses every official SDK plus the shared OpenAPI spec, error-code contract, and examples.

Packages

Language Package Registry Min runtime Status
Ruby walinko RubyGems Ruby 3.1+ scaffolding
PHP walinko/sdk Packagist PHP 8.1+ scaffolding

More languages may follow (Python, Node, Go) — see docs/ for the contract.

Repo layout

walinko-sdk/
├── docs/
│   ├── openapi.yaml          # OpenAPI 3.1 spec — single source of truth
│   └── error-codes.md        # canonical error_code reference
├── examples/                 # runnable per-language examples
│   ├── ruby/
│   └── php/
├── sdks/
│   ├── ruby/                 # walinko gem
│   └── php/                  # walinko/sdk composer package
└── .github/workflows/        # CI: per-language tests, splitsh mirror, releases

PHP is mirrored to a read-only walinko-php repo via splitsh-lite on every push to main so Packagist can register it (Packagist requires composer.json at repo root). Ruby publishes from this repo directly.

Quick start

Ruby

require 'walinko'

client = Walinko::Client.new(api_key: ENV['WALINKO_API_KEY'])

result = client.messages.send(
  device_id:     1,
  template_id:   12,
  variant_index: 0,                                 # optional
  phone:         '+8801617738431',
  variables:     { name: 'Kazi', dist: 'Dhaka' }
)

puts result.tracking_id   # tx_...
puts result.wa_message_id

PHP

use Walinko\Client;

$client = new Client(['api_key' => getenv('WALINKO_API_KEY')]);

$result = $client->messages->send([
    'device_id'     => 1,
    'template_id'   => 12,
    'variant_index' => 0,
    'phone'         => '+8801617738431',
    'variables'     => ['name' => 'Kazi', 'dist' => 'Dhaka'],
]);

echo $result->tracking_id;
echo $result->wa_message_id;

Versioning

  • All SDKs follow SemVer. Major versions track the public API contract version (/api/v1/...).
  • Each SDK keeps its own CHANGELOG.md under sdks/<lang>/CHANGELOG.md.

Contributing

See per-package READMEs for setup. The OpenAPI spec under docs/openapi.yaml is the contract — change requests should land there first.

License

MIT