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:
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"
}'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);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
{
"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:
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:
curl -X POST https://api.yebolink.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"password": "SecurePassword123!"
}'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);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
{
"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:
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"]
}'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);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
{
"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:
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."
}
}'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);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
$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);
?>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)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
{
"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:
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:
- Send Bulk Messages: Send to multiple recipients at once
- Setup Webhooks: Get real-time status updates
- Manage Contacts: Organize your recipients
- Purchase Credits: Add more credits to your account
- Try Other Channels: Send WhatsApp, Email, or Voice messages
Common Issues
Insufficient Credits
If you run out of credits, you'll get this error:
{
"success": false,
"error": "insufficient_credits",
"message": "Not enough credits. You need 1 credits but have 0."
}Solution: Purchase more credits
Invalid Phone Number
{
"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
{
"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?
- Read the full API reference
- Check error handling guide
- Contact support: support@yebolink.app