Skip to content

cURL Examples

Command-line examples for testing and integrating EasySlip API.

Examples

TIP

All examples require HMAC-SHA256 authentication. See Authentication Guide for the signRequest() helper and full signing details.

HMAC Signing Helper

bash
# Include this at the top of your scripts
sign_request() {
    local METHOD="$1" PATH_URL="$2" BODY="$3"
    local API_KEY="${EASYSLIP_API_KEY}"
    local SECRET_KEY="${EASYSLIP_SECRET_KEY}"
    TIMESTAMP=$(date +%s)
    NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
    BODY_HASH=$(printf '%s' "$BODY" | shasum -a 256 | cut -d' ' -f1)
    STRING_TO_SIGN="${METHOD}\n${PATH_URL}\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
    SIGNATURE=$(printf "${STRING_TO_SIGN}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2)
}

Get Application Info

bash
sign_request "GET" "/info" ""
curl -X GET https://api.easyslip.com/v2/info \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}"

Verify by Payload

bash
BODY='{"payload":"00000000000000000000000000000000000000000000000","checkDuplicate":true}'
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Verify by Payload with Options

bash
BODY='{"payload":"00000000000000000000000000000000000000000000000","remark":"Order #12345","matchAccount":true,"matchAmount":1500.00,"checkDuplicate":true}'
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Verify by Image

bash
sign_request "POST" "/verify/bank" ""
curl -X POST https://api.easyslip.com/v2/verify/bank \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}" \
  -F "image=@/path/to/slip.jpg" \
  -F "checkDuplicate=true"

Verify by Base64

bash
BASE64_IMAGE=$(base64 -i /path/to/slip.jpg)
BODY="{\"base64\": \"${BASE64_IMAGE}\", \"checkDuplicate\": true}"
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Verify by URL

bash
BODY='{"url":"https://example.com/slips/slip-12345.jpg","checkDuplicate":true}'
sign_request "POST" "/verify/bank" "$BODY"
curl -X POST https://api.easyslip.com/v2/verify/bank \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Shell Scripts

Verify Slip Script

bash
#!/bin/bash
# verify-slip.sh

API_KEY="${EASYSLIP_API_KEY}"
SECRET_KEY="${EASYSLIP_SECRET_KEY}"
SLIP_FILE="$1"
EXPECTED_AMOUNT="$2"

if [ -z "$SLIP_FILE" ]; then
    echo "Usage: ./verify-slip.sh <slip-image> [expected-amount]"
    exit 1
fi

if [ ! -f "$SLIP_FILE" ]; then
    echo "Error: File not found: $SLIP_FILE"
    exit 1
fi

# HMAC signing
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
BODY_HASH=$(printf '' | shasum -a 256 | cut -d' ' -f1)
STRING_TO_SIGN="POST\n/verify/bank\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(printf "${STRING_TO_SIGN}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2)

# Build request
CURL_OPTS=(-X POST "https://api.easyslip.com/v2/verify/bank")
CURL_OPTS+=(-H "X-API-Key: $API_KEY")
CURL_OPTS+=(-H "X-Timestamp: $TIMESTAMP")
CURL_OPTS+=(-H "X-Nonce: $NONCE")
CURL_OPTS+=(-H "X-Signature: $SIGNATURE")
CURL_OPTS+=(-F "image=@$SLIP_FILE")
CURL_OPTS+=(-F "checkDuplicate=true")

if [ -n "$EXPECTED_AMOUNT" ]; then
    CURL_OPTS+=(-F "matchAmount=$EXPECTED_AMOUNT")
fi

# Execute request
RESPONSE=$(curl -s "${CURL_OPTS[@]}")

# Parse response
SUCCESS=$(echo "$RESPONSE" | jq -r '.success')

if [ "$SUCCESS" = "true" ]; then
    TRANS_REF=$(echo "$RESPONSE" | jq -r '.data.rawSlip.transRef')
    AMOUNT=$(echo "$RESPONSE" | jq -r '.data.rawSlip.amount.amount')
    IS_DUP=$(echo "$RESPONSE" | jq -r '.data.isDuplicate')

    echo "Verified successfully!"
    echo "  Transaction: $TRANS_REF"
    echo "  Amount: $AMOUNT THB"

    if [ "$IS_DUP" = "true" ]; then
        echo "  WARNING: Duplicate slip!"
    fi
else
    ERROR=$(echo "$RESPONSE" | jq -r '.error.message')
    echo "Error: $ERROR"
    exit 1
fi

Check Quota Script

bash
#!/bin/bash
# check-quota.sh

API_KEY="${EASYSLIP_API_KEY}"
SECRET_KEY="${EASYSLIP_SECRET_KEY}"

# HMAC signing
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
BODY_HASH=$(printf '' | shasum -a 256 | cut -d' ' -f1)
STRING_TO_SIGN="GET\n/info\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(printf "${STRING_TO_SIGN}" | openssl dgst -sha256 -hmac "${SECRET_KEY}" | cut -d' ' -f2)

RESPONSE=$(curl -s -X GET "https://api.easyslip.com/v2/info" \
  -H "X-API-Key: $API_KEY" \
  -H "X-Timestamp: $TIMESTAMP" \
  -H "X-Nonce: $NONCE" \
  -H "X-Signature: $SIGNATURE")

SUCCESS=$(echo "$RESPONSE" | jq -r '.success')

if [ "$SUCCESS" = "true" ]; then
    APP_NAME=$(echo "$RESPONSE" | jq -r '.data.application.name')
    USED=$(echo "$RESPONSE" | jq -r '.data.application.quota.used')
    MAX=$(echo "$RESPONSE" | jq -r '.data.application.quota.max')
    REMAINING=$(echo "$RESPONSE" | jq -r '.data.application.quota.remaining')

    echo "Application: $APP_NAME"
    echo "Quota: $USED / $MAX (Remaining: $REMAINING)"

    # Alert if above 90%
    if [ "$MAX" != "null" ]; then
        PERCENT=$((USED * 100 / MAX))
        if [ $PERCENT -ge 90 ]; then
            echo "WARNING: Quota usage at ${PERCENT}%!"
        fi
    fi
else
    ERROR=$(echo "$RESPONSE" | jq -r '.error.message')
    echo "Error: $ERROR"
    exit 1
fi

Testing with jq

Parse Response

bash
# Use the sign_request helper defined above, then pipe to jq

# Get transaction reference
BODY='{"payload": "YOUR_PAYLOAD"}'
sign_request "POST" "/verify/bank" "$BODY"
curl -s -X POST https://api.easyslip.com/v2/verify/bank \
  -H "X-API-Key: ${API_KEY}" \
  -H "X-Timestamp: ${TIMESTAMP}" \
  -H "X-Nonce: ${NONCE}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "$BODY" | jq '.data.rawSlip.transRef'

Environment Setup

Using Environment Variables

bash
# Export API key (branch UUID) and secret key
export EASYSLIP_API_KEY="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
export EASYSLIP_SECRET_KEY="your-secret-key-here"

Using .env File

bash
# Load from .env file
export $(cat .env | xargs)

# Or use direnv
# echo 'export EASYSLIP_API_KEY="your-branch-uuid"' >> .envrc
# echo 'export EASYSLIP_SECRET_KEY="your-secret-key"' >> .envrc
# direnv allow

Bank Slip Verification API for Thai Banking