Skip to content

Quick Start

Get started with YeboLink in 5 minutes. This guide will walk you through creating an account, getting your API key, and sending your first message.

Prerequisites

  • A valid email address
  • A phone number for testing
  • Basic knowledge of REST APIs

Step 1: Create an Account

Sign up for a YeboLink account to get started:

bash
curl -X POST https://api.yebolink.com/api/v1/auth/signup \
  -H "Content-Type: application/json" \
  -d '{
    "email": "you@example.com",
    "password": "SecurePassword123!",
    "company_name": "My Company",
    "phone": "+1234567890",
    "country": "US"
  }'
javascript
const response = await fetch('https://api.yebolink.com/api/v1/auth/signup', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    email: 'you@example.com',
    password: 'SecurePassword123!',
    company_name: 'My Company',
    phone: '+1234567890',
    country: 'US'
  })
});

const data = await response.json();
console.log(data);
python
import requests

response = requests.post(
    'https://api.yebolink.com/api/v1/auth/signup',
    json={
        'email': 'you@example.com',
        'password': 'SecurePassword123!',
        'company_name': 'My Company',
        'phone': '+1234567890',
        'country': 'US'
    }
)

print(response.json())

Response

json
{
  "success": true,
  "data": {
    "workspace": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "My Company",
      "email": "you@example.com",
      "email_verified": false,
      "credits_balance": 10
    },
    "message": "Verification email sent to you@example.com"
  }
}

Free Credits

New accounts receive 10 free credits to test the platform!

Step 2: Verify Your Email (Optional)

Check your inbox for a verification email. Click the link or use the verification token:

bash
curl -X POST https://api.yebolink.com/api/v1/auth/verify-email \
  -H "Content-Type: application/json" \
  -d '{
    "token": "verification_token_from_email"
  }'

Step 3: Login and Get Your JWT Token

Login to get your authentication token for dashboard access:

bash
curl -X POST https://api.yebolink.com/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "you@example.com",
    "password": "SecurePassword123!"
  }'
javascript
const response = await fetch('https://api.yebolink.com/api/v1/auth/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    email: 'you@example.com',
    password: 'SecurePassword123!'
  })
});

const data = await response.json();
const token = data.data.token;
console.log('JWT Token:', token);
python
import requests

response = requests.post(
    'https://api.yebolink.com/api/v1/auth/login',
    json={
        'email': 'you@example.com',
        'password': 'SecurePassword123!'
    }
)

data = response.json()
token = data['data']['token']
print(f'JWT Token: {token}')

Response

json
{
  "success": true,
  "data": {
    "workspace": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "My Company",
      "email": "you@example.com",
      "email_verified": true,
      "credits_balance": 10
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

Save Your Token

Store this JWT token securely. You'll need it to create API keys and access dashboard features.

Step 4: Create an API Key

Use your JWT token to create an API key for sending messages:

bash
curl -X POST https://api.yebolink.com/api/v1/api-keys \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "name": "My First API Key",
    "scopes": ["send_messages", "read_messages"]
  }'
javascript
const response = await fetch('https://api.yebolink.com/api/v1/api-keys', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_JWT_TOKEN'
  },
  body: JSON.stringify({
    name: 'My First API Key',
    scopes: ['send_messages', 'read_messages']
  })
});

const data = await response.json();
const apiKey = data.data.key;
console.log('API Key:', apiKey);
python
import requests

response = requests.post(
    'https://api.yebolink.com/api/v1/api-keys',
    headers={
        'Authorization': 'Bearer YOUR_JWT_TOKEN'
    },
    json={
        'name': 'My First API Key',
        'scopes': ['send_messages', 'read_messages']
    }
)

data = response.json()
api_key = data['data']['key']
print(f'API Key: {api_key}')

Response

json
{
  "success": true,
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440001",
    "name": "My First API Key",
    "key": "ybk_live_abc123def456ghi789jkl012mno345pqr678stu901vwx234yz",
    "key_prefix": "ybk_live_ab...",
    "scopes": ["send_messages", "read_messages"],
    "created_at": "2025-11-02T12:00:00Z",
    "warning": "Save this key securely. It will not be shown again."
  }
}

Important

This is the only time you'll see the full API key. Store it securely - you won't be able to retrieve it again!

Step 5: Send Your First Message

Now you're ready to send your first SMS:

bash
curl -X POST https://api.yebolink.com/api/v1/messages/send \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ybk_live_your_api_key" \
  -d '{
    "to": "+1234567890",
    "channel": "sms",
    "content": {
      "text": "Hello! This is my first message from YeboLink."
    }
  }'
javascript
const response = await fetch('https://api.yebolink.com/api/v1/messages/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'ybk_live_your_api_key'
  },
  body: JSON.stringify({
    to: '+1234567890',
    channel: 'sms',
    content: {
      text: 'Hello! This is my first message from YeboLink.'
    }
  })
});

const data = await response.json();
console.log(data);
python
import requests

response = requests.post(
    'https://api.yebolink.com/api/v1/messages/send',
    headers={
        'X-API-Key': 'ybk_live_your_api_key'
    },
    json={
        'to': '+1234567890',
        'channel': 'sms',
        'content': {
            'text': 'Hello! This is my first message from YeboLink.'
        }
    }
)

print(response.json())
php
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.yebolink.com/api/v1/messages/send',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-API-Key: ybk_live_your_api_key'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'to' => '+1234567890',
        'channel' => 'sms',
        'content' => [
            'text' => 'Hello! This is my first message from YeboLink.'
        ]
    ])
]);

$response = curl_exec($curl);
$data = json_decode($response, true);

curl_close($curl);
print_r($data);
?>
ruby
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.yebolink.com/api/v1/messages/send')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path)
request['Content-Type'] = 'application/json'
request['X-API-Key'] = 'ybk_live_your_api_key'
request.body = {
  to: '+1234567890',
  channel: 'sms',
  content: {
    text: 'Hello! This is my first message from YeboLink.'
  }
}.to_json

response = http.request(request)
puts JSON.parse(response.body)
go
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    url := "https://api.yebolink.com/api/v1/messages/send"

    payload := map[string]interface{}{
        "to": "+1234567890",
        "channel": "sms",
        "content": map[string]string{
            "text": "Hello! This is my first message from YeboLink.",
        },
    }

    jsonPayload, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("X-API-Key", "ybk_live_your_api_key")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}

Response

json
{
  "success": true,
  "data": {
    "message_id": "550e8400-e29b-41d4-a716-446655440002",
    "status": "queued",
    "credits_used": 1,
    "created_at": "2025-11-02T12:00:00Z"
  }
}

Success!

Congratulations! You've sent your first message. The message is now queued and will be delivered shortly.

Message Statuses

Your message goes through several statuses:

  • queued: Message is queued for sending
  • sent: Message has been sent to the carrier
  • delivered: Message was successfully delivered
  • failed: Message delivery failed

You can track these statuses using webhooks or by retrieving the message:

bash
curl https://api.yebolink.com/api/v1/messages/550e8400-e29b-41d4-a716-446655440002 \
  -H "X-API-Key: ybk_live_your_api_key"

Phone Number Format

Phone Format

Always use E.164 format for phone numbers: +[country code][number]

Examples:

  • US: +1234567890
  • UK: +441234567890
  • South Africa: +27123456789

Next Steps

Now that you've sent your first message, explore more features:

Common Issues

Insufficient Credits

If you run out of credits, you'll get this error:

json
{
  "success": false,
  "error": "insufficient_credits",
  "message": "Not enough credits. You need 1 credits but have 0."
}

Solution: Purchase more credits

Invalid Phone Number

json
{
  "success": false,
  "error": "validation_error",
  "message": "Phone number must be in E.164 format"
}

Solution: Ensure your phone number starts with + and country code

Rate Limit Exceeded

json
{
  "success": false,
  "error": "rate_limit_exceeded",
  "message": "Too many requests. Please try again later."
}

Solution: Wait a moment before retrying. See Rate Limits

Need Help?

Built with VitePress