diff --git a/api-setup/getting-started.mdx b/api-setup/getting-started.mdx index b6b764d..09ec7c4 100644 --- a/api-setup/getting-started.mdx +++ b/api-setup/getting-started.mdx @@ -3,13 +3,9 @@ title: "Getting Started" description: "Quick setup guide to get your API keys and start building with Request Network" --- - -**AI-Generated Content** – This page was generated with AI assistance and may contain inaccuracies. While likely close to accurate, please verify critical details with the [stable documentation](https://docs.request.network) or [contact support](https://github.com/orgs/RequestNetwork/discussions). - - ## Welcome to Request Network -Get started with Request Network in just a few minutes. This guide will walk you through setting up your account, obtaining API keys, and making your first API call. +Get started with Request Network in just a few minutes. This guide will walk you through setting up your account, obtaining API keys, and making your first payment. ## Quick Setup @@ -18,13 +14,13 @@ Get started with Request Network in just a few minutes. This guide will walk you Sign up for a free Request Network account at [portal.request.network](https://portal.request.network) - Generate your API keys for both testnet (development) and mainnet (production) + Generate your API keys from the portal dashboard - - Select your integration approach based on your use case + + Use the API to create a payment request - - Test your setup with a simple API call + + Get payment calldata and execute the transaction @@ -32,288 +28,245 @@ Get started with Request Network in just a few minutes. This guide will walk you ### Request Portal Registration - - - **For Developers:** - - Free account with generous limits - - Access to testnet for development - - API documentation and tools - - Community support - - [Sign Up →](https://portal.request.network) - - - - **For Enterprises:** - - Higher rate limits - - Priority support - - Custom integrations - - SLA guarantees - - [Contact Sales →](https://request.network/contact) - - + +Sign up at [portal.request.network](https://portal.request.network) to get started. All accounts include: +- Free API access with generous limits +- API documentation and tools +- Community support + ### API Key Generation - - - **Development Environment:** - 1. Log in to Request Portal - 2. Navigate to "API Keys" section - 3. Click "Generate New Key" - 4. Select "Testnet" environment - 5. Name your key (e.g., "Development") - 6. Copy and securely store the key - - - **Testnet vs Mainnet** - - Always start development on testnet. Testnet uses test cryptocurrencies with no real value. - - - - - **Production Environment:** - 1. Complete account verification - 2. Generate new API key - 3. Select "Mainnet" environment - 4. Configure production settings - 5. Set up monitoring and alerts - - - **Security Best Practices** - - - Store API keys in environment variables - - Never commit keys to version control - - Use different keys for different environments - - Rotate keys regularly - - - +1. Log in to [Request Portal](https://portal.request.network) +2. Navigate to "API Keys" section +3. Click "Create new key" +4. Copy and securely store the key -## Choose Your Path + +**Security Best Practices** -Select the integration approach that best fits your needs: +- Store API keys in environment variables +- Never commit keys to version control +- Rotate keys regularly + - - - **Best for:** Professional invoicing, B2B payments - - Get started with invoice creation and payment collection in under 5 minutes. - - - - **Best for:** Vendor payments, contractor payouts - - Send instant crypto payments to multiple recipients with batch processing. - - - - **Best for:** E-commerce, digital goods - - Accept crypto payments in your online store with 80+ wallet support. - - +## Your First Integration - - - **Best for:** Employee payments, bulk processing - - Automate payroll with batch payments and recurring schedules. - - - - **Best for:** SaaS billing, recurring revenue - - Set up automated subscription billing with flexible payment cycles. - - +Let's create a simple Node.js server that integrates with the Request Network API to create payments and track their status. -## Quick Test +### Project Setup -Verify your setup with a simple API call: +Create a new project and install dependencies: - -```bash cURL (EVM) -curl -X POST https://api.request.network/v2/requests \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "currency": "USD", - "expectedAmount": "100", - "payeeIdentity": "0x627306090abaB3A6e1400e9345bC60c78a8BEf57", - "reason": "Test invoice" - }' +```bash +mkdir request-api-demo +cd request-api-demo +npm init -y +npm install dotenv ``` -```bash cURL (Tron) -curl -X POST https://api.request.network/v2/requests \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "currency": "USDT-tron", - "expectedAmount": "50", - "payeeIdentity": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE", - "reason": "USDT payment on Tron" - }' +Create a `.env` file: + +```bash +RN_API_KEY=your_api_key_here +RN_API_URL=https://api.request.network/v2 ``` -```javascript Node.js -const axios = require('axios'); +### Create a Payment + +Create an `index.js` file: -async function createTestRequest() { +```javascript +require('dotenv').config(); + +async function createPayment() { try { - const response = await axios.post('https://api.request.network/v2/requests', { - currency: 'USD', - expectedAmount: '100', - payeeIdentity: '0x627306090abaB3A6e1400e9345bC60c78a8BEf57', - reason: 'Test invoice' - }, { + const response = await fetch(`${process.env.RN_API_URL}/payouts`, { + method: 'POST', headers: { - 'Authorization': `Bearer ${process.env.REQUEST_NETWORK_API_KEY}`, + 'X-Api-Key': process.env.RN_API_KEY, 'Content-Type': 'application/json' - } + }, + body: JSON.stringify({ + payee: '0x...', // Your wallet address + amount: '0.1', + invoiceCurrency: 'ETH-sepolia-sepolia', + paymentCurrency: 'ETH-sepolia-sepolia' + }) + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error('API Error:', errorText); + return; + } + + const data = await response.json(); + console.log('Payment created:', { + requestId: data.requestId, + paymentReference: data.paymentReference, + transactions: data.transactions, + metadata: data.metadata }); - console.log('Request created:', response.data.requestId); - return response.data; + return data; } catch (error) { - console.error('Error creating request:', error.response?.data || error.message); + console.error('Error:', error.message); } } -createTestRequest(); +createPayment(); ``` -```python Python -import requests -import os +Run it: -def create_test_request(): - url = "https://api.request.network/v2/requests" - - headers = { - "Authorization": f"Bearer {os.getenv('REQUEST_NETWORK_API_KEY')}", - "Content-Type": "application/json" - } - - data = { - "currency": "USD", - "expectedAmount": "100", - "payeeIdentity": "0x627306090abaB3A6e1400e9345bC60c78a8BEf57", - "reason": "Test invoice" +```bash +node index.js +``` + +The response will include: +- `requestId` — Unique identifier for the request +- `paymentReference` — Used to track the payment +- `transactions` — Array of transaction calldata to execute +- `metadata` — Additional info like `stepsRequired` and `needsApproval` + +### Understanding the Response + +```json +{ + "requestId": "011d9f76e07a678b8321ccfaa300efd4d80832652b8bbc07ea4069ca71006210b5", + "paymentReference": "0xe23a6b02059c2b30", + "transactions": [ + { + "data": "0xb868980b000000000000000000000000...", + "to": "0xe11BF2fDA23bF0A98365e1A4c04A87C9339e8687", + "value": { + "type": "BigNumber", + "hex": "0x02c68af0bb140000" + } } - - try: - response = requests.post(url, json=data, headers=headers) - response.raise_for_status() - - print(f"Request created: {response.json()['requestId']}") - return response.json() - - except requests.exceptions.RequestException as e: - print(f"Error creating request: {e}") - -create_test_request() + ], + "metadata": { + "stepsRequired": 1, + "needsApproval": false, + "paymentTransactionIndex": 0 + } +} ``` - -## Environment Configuration + +**Note:** The `amount` is in human-readable format. No BigNumber conversions needed! + + +### Setting Up Webhooks + +To track payment status in real-time, set up a webhook endpoint: + +```javascript +const crypto = require('crypto'); + +// Webhook handler +app.post('/webhooks', async (req, res) => { + const signature = req.headers['x-request-network-signature']; + const webhookSecret = process.env.RN_WEBHOOK_SECRET; + + // Verify signature + const expectedSignature = crypto + .createHmac('sha256', webhookSecret) + .update(JSON.stringify(req.body)) + .digest('hex'); + + if (signature !== expectedSignature) { + return res.status(401).send({ error: 'Invalid signature' }); + } + + const { requestId, event } = req.body; + console.log(`Webhook: ${event} for request ${requestId}`); + + // Handle different events + switch (event) { + case 'payment.confirmed': + console.log('Payment confirmed!'); + // Update your database, send email, etc. + break; + case 'payment.pending': + console.log('Payment pending...'); + break; + } + + res.send({ code: 200, message: 'Webhook received' }); +}); +``` + +#### Testing Webhooks Locally + +Since webhooks can't reach your local server directly, use [ngrok](https://ngrok.com/): + +```bash +ngrok http 3000 +``` -### Environment Variables +Copy the HTTPS URL (e.g., `https://abc123.ngrok.io/webhooks`) and add it in the [API Portal](https://portal.request.network) under Webhooks section. -Set up your environment variables for secure API key management: +Copy the webhook signing secret to your `.env`: + +```bash +RN_WEBHOOK_SECRET=your_webhook_secret_here +``` + +## Environment Configuration + +Set up environment variables for secure API key management: ```bash .env # Request Network Configuration -REQUEST_NETWORK_API_KEY=your_api_key_here -REQUEST_NETWORK_ENVIRONMENT=testnet +RN_API_KEY=your_api_key_here +RN_API_URL=https://api.request.network/v2 # Webhook Configuration (optional) -REQUEST_WEBHOOK_SECRET=your_webhook_secret_here -REQUEST_WEBHOOK_URL=https://your-domain.com/webhooks/request-network - -# Application Configuration -PORT=3000 -NODE_ENV=development +RN_WEBHOOK_SECRET=your_webhook_secret_here ``` ```javascript config.js module.exports = { requestNetwork: { - apiKey: process.env.REQUEST_NETWORK_API_KEY, - environment: process.env.REQUEST_NETWORK_ENVIRONMENT || 'testnet', - webhookSecret: process.env.REQUEST_WEBHOOK_SECRET, - webhookUrl: process.env.REQUEST_WEBHOOK_URL - }, - app: { - port: process.env.PORT || 3000, - environment: process.env.NODE_ENV || 'development' + apiKey: process.env.RN_API_KEY, + apiUrl: process.env.RN_API_URL || 'https://api.request.network/v2', + webhookSecret: process.env.RN_WEBHOOK_SECRET, } }; ``` -## Development Tools +## What's Next? -### Request Portal Features +Now that you've made your first API call, explore more features: - - - **Interactive Testing:** - - Test API endpoints directly in browser - - Real-time response preview - - Code generation for multiple languages - - Request/response logging + + + Learn about different payment types and features - - **Webhook Development:** - - Test webhook delivery - - Inspect webhook payloads - - Retry failed webhooks - - Webhook logs and analytics - - - - - - **Real-time Monitoring:** - - Live transaction tracking - - Payment status updates - - Error monitoring and alerts - - Performance metrics + + Understand how payments are tracked - - **Usage Analytics:** - - API usage statistics - - Payment volume tracking - - Success/failure rates - - Performance insights + + Complete tutorial with backend + frontend @@ -322,57 +275,25 @@ module.exports = { ### Common Issues - - **401 Unauthorized:** + - Verify API key is correct - - Check environment (testnet vs mainnet) - - Ensure API key has required permissions - - Verify Authorization header format + - Check that you're using the right header: `X-Api-Key` + - Ensure the key hasn't been revoked - - **429 Too Many Requests:** - - Implement exponential backoff - - Check your current rate limits - - Consider upgrading to higher limits - - Optimize API call frequency + + - Check required fields: `payee`, `amount`, `invoiceCurrency`, `paymentCurrency` + - Ensure `amount` is a string (e.g., "0.1") + - Verify currency IDs are valid - - **Connection Problems:** - - Check network connectivity - - Verify API endpoint URLs - - Test with different networks - - Check firewall settings + + - Verify webhook URL is publicly accessible + - Check webhook signature verification + - Ensure webhook is enabled in the portal -## What's Next? - -Now that you're set up, explore the features that matter most to your use case: - - - - Detailed API endpoint documentation - - - - Learn about payment types and advanced capabilities - - - - Learn about payment types and integration options - - + +**You're all set!** You've created your first payment request with Request Network. For a complete working example with frontend, check out the [Integration Tutorial](/api-setup/integration-tutorial). +