'use client' import { useState } from 'react' import { Code, Terminal, Check, Copy, ArrowRight, ExternalLink, ChevronDown, ChevronUp } from 'lucide-react' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card' import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../../../../components/ui/collapsible' import SyntaxHighlighter from 'react-syntax-highlighter' import { dark } from 'react-syntax-highlighter/dist/esm/styles/prism' import Link from 'next/link' export default function ApiGuide() { const [activeTab, setActiveTab] = useState('send-sms') const [activeLangTab, setActiveLangTab] = useState('node') const [copiedIndex, setCopiedIndex] = useState(-1) const [isOpen, setIsOpen] = useState(false) const handleCopy = (index: number, code: string) => { navigator.clipboard.writeText(code) setCopiedIndex(index) setTimeout(() => setCopiedIndex(-1), 2000) } const apiEndpoints = [ { id: 'send-sms', title: 'Send SMS', description: 'Send SMS messages to one or more recipients', endpoint: '/api/v1/gateway/devices/:id/send-sms', badge: { color: 'green', text: 'POST' }, request: { node: { language: 'javascript', code: `import axios from 'axios' const BASE_URL = 'https://api.textbee.dev/api/v1' const API_KEY = 'YOUR_API_KEY' const DEVICE_ID = 'YOUR_DEVICE_ID' const response = await axios.post( \`\${BASE_URL}/gateway/devices/\${DEVICE_ID}/send-sms\`, { recipients: [ '+1234567890' ], message: 'Hello from TextBee!' }, { headers: { 'x-api-key': API_KEY } } ) console.log(response.data)` }, python: { language: 'python', code: `import requests BASE_URL = 'https://api.textbee.dev/api/v1' API_KEY = 'YOUR_API_KEY' DEVICE_ID = 'YOUR_DEVICE_ID' response = requests.post( f'{BASE_URL}/gateway/devices/{DEVICE_ID}/send-sms', json={ 'recipients': ['+1234567890'], 'message': 'Hello from TextBee!' }, headers={'x-api-key': API_KEY} ) print(response.json())` }, curl: { language: 'bash', code: `curl -X POST "https://api.textbee.dev/api/v1/gateway/devices/YOUR_DEVICE_ID/send-sms" \\ -H 'x-api-key: YOUR_API_KEY' \\ -H 'Content-Type: application/json' \\ -d '{ "recipients": [ "+1234567890" ], "message": "Hello from TextBee!" }'` } }, response: { language: 'json', code: `{ "data": { "_id": "sms_1234567890", "message": "Hello from TextBee!", "recipients": ["+1234567890"], "status": "PENDING", "createdAt": "2023-09-15T14:23:45Z" } }` } }, { id: 'get-sms', title: 'Get SMS by ID', description: 'Retrieve details and status of a specific SMS message', endpoint: '/api/v1/gateway/devices/:id/sms/:smsId', badge: { color: 'blue', text: 'GET' }, request: { node: { language: 'javascript', code: `import axios from 'axios' const BASE_URL = 'https://api.textbee.dev/api/v1' const API_KEY = 'YOUR_API_KEY' const DEVICE_ID = 'YOUR_DEVICE_ID' const SMS_ID = 'YOUR_SMS_ID' const response = await axios.get( \`\${BASE_URL}/gateway/devices/\${DEVICE_ID}/sms/\${SMS_ID}\`, { headers: { 'x-api-key': API_KEY } } ) console.log(response.data)` }, python: { language: 'python', code: `import requests BASE_URL = 'https://api.textbee.dev/api/v1' API_KEY = 'YOUR_API_KEY' DEVICE_ID = 'YOUR_DEVICE_ID' SMS_ID = 'YOUR_SMS_ID' response = requests.get( f'{BASE_URL}/gateway/devices/{DEVICE_ID}/sms/{SMS_ID}', headers={'x-api-key': API_KEY} ) print(response.json())` }, curl: { language: 'bash', code: `curl -X GET "https://api.textbee.dev/api/v1/gateway/devices/YOUR_DEVICE_ID/sms/YOUR_SMS_ID" \\ -H 'x-api-key: YOUR_API_KEY'` } }, response: { language: 'json', code: `{ "data": { "_id": "sms_1234567890", "message": "Hello from TextBee!", "recipient": "+1234567890", "status": "DELIVERED", "sentAt": "2023-09-15T14:23:45Z", "deliveredAt": "2023-09-15T14:23:48Z" } }` } }, { id: 'get-batch', title: 'Get SMS Batch', description: 'Retrieve details and status of a batch of SMS messages', endpoint: '/api/v1/gateway/devices/:id/sms-batch/:batchId', badge: { color: 'blue', text: 'GET' }, request: { node: { language: 'javascript', code: `import axios from 'axios' const BASE_URL = 'https://api.textbee.dev/api/v1' const API_KEY = 'YOUR_API_KEY' const DEVICE_ID = 'YOUR_DEVICE_ID' const BATCH_ID = 'YOUR_BATCH_ID' const response = await axios.get( \`\${BASE_URL}/gateway/devices/\${DEVICE_ID}/sms-batch/\${BATCH_ID}\`, { headers: { 'x-api-key': API_KEY } } ) console.log(response.data)` }, python: { language: 'python', code: `import requests BASE_URL = 'https://api.textbee.dev/api/v1' API_KEY = 'YOUR_API_KEY' DEVICE_ID = 'YOUR_DEVICE_ID' BATCH_ID = 'YOUR_BATCH_ID' response = requests.get( f'{BASE_URL}/gateway/devices/{DEVICE_ID}/sms-batch/{BATCH_ID}', headers={'x-api-key': API_KEY} ) print(response.json())` }, curl: { language: 'bash', code: `curl -X GET "https://api.textbee.dev/api/v1/gateway/devices/YOUR_DEVICE_ID/sms-batch/YOUR_BATCH_ID" \\ -H 'x-api-key: YOUR_API_KEY'` } }, response: { language: 'json', code: `{ "data": { "batch": { "_id": "batch_9876543210", "createdAt": "2023-09-15T14:23:45Z" }, "messages": [ { "_id": "sms_1234567890", "recipient": "+1234567890", "message": "Hello from TextBee!", "status": "DELIVERED", "sentAt": "2023-09-15T14:23:45Z", "deliveredAt": "2023-09-15T14:23:48Z", }, { "_id": "sms_0987654321", "recipient": "+0987654321", "message": "Hello from TextBee!", "status": "SENT", "sentAt": "2023-09-15T14:23:45Z", "deliveredAt": null },{ "_id": "sms_0987654321", "recipient": "+0987654321", "message": "Hello from TextBee!", "status": "FAILED", "sentAt": null, "deliveredAt": null, "failedAt": "2023-09-15T14:23:45Z", "errorCode": "1234567890", "errorMessage": "Generic error" } ] } }` } } ] return (

API Documentation

Integrate SMS capabilities into your applications

{apiEndpoints.map((endpoint) => ( {endpoint.title} ))} {apiEndpoints.map((endpoint) => (
{endpoint.title} {endpoint.description}
{endpoint.badge.text} {endpoint.endpoint}
{/* Request Examples */}

Request

Node.js Python cURL
{Object.entries(endpoint.request).map(([lang, data], index) => { const codeIndex = apiEndpoints.indexOf(endpoint) * 10 + index return (
{data.code}
) })}
{/* Response Example */}

Response

{endpoint.response.code}

For more details, see the full API documentation.

))}
) }