{"id":46545203,"url":"https://github.com/devmehq/devme-sdk-js","last_synced_at":"2026-03-07T02:02:04.996Z","repository":{"id":37048999,"uuid":"437635384","full_name":"devmehq/devme-sdk-js","owner":"devmehq","description":"DEV.ME SDK for JavaScript \u0026 TypeScript Works in Server  in The Browser, Compatible with Node.js \u0026 React.js \u0026 Vue.js \u0026 Angular.js","archived":false,"fork":false,"pushed_at":"2026-02-15T17:33:46.000Z","size":835,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-16T00:13:55.159Z","etag":null,"topics":["currency-converter","currency-exchange","currency-exchange-rates","email-stmp-verification","email-verification","ip-data","ip-geolocation","ip-location-lookup","javascript","nodejs","phone-number-validation","phone-validation","sdk","typescript"],"latest_commit_sha":null,"homepage":"https://dev.me","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devmehq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-12T19:19:47.000Z","updated_at":"2025-09-06T04:26:04.000Z","dependencies_parsed_at":"2026-03-07T02:01:46.222Z","dependency_job_id":null,"html_url":"https://github.com/devmehq/devme-sdk-js","commit_stats":{"total_commits":112,"total_committers":5,"mean_commits":22.4,"dds":0.6696428571428572,"last_synced_commit":"f523a7667974fff04e0a474e01d319b21717e034"},"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/devmehq/devme-sdk-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmehq%2Fdevme-sdk-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmehq%2Fdevme-sdk-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmehq%2Fdevme-sdk-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmehq%2Fdevme-sdk-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devmehq","download_url":"https://codeload.github.com/devmehq/devme-sdk-js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmehq%2Fdevme-sdk-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30205893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"online","status_checked_at":"2026-03-07T02:00:06.765Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["currency-converter","currency-exchange","currency-exchange-rates","email-stmp-verification","email-verification","ip-data","ip-geolocation","ip-location-lookup","javascript","nodejs","phone-number-validation","phone-validation","sdk","typescript"],"created_at":"2026-03-07T02:01:34.994Z","updated_at":"2026-03-07T02:02:04.865Z","avatar_url":"https://github.com/devmehq.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DEV.ME SDK for JavaScript \u0026 TypeScript\n\n\u003cdiv style=\"text-align: center;\"\u003e\n\n[![Build Status](https://github.com/devmehq/devme-sdk-js/actions/workflows/ci.yml/badge.svg)](https://github.com/devmehq/devme-sdk-js/actions/workflows/ci.yml)\n[![NPM version](https://img.shields.io/npm/v/@devmehq/sdk-js.svg)](https://www.npmjs.com/package/@devmehq/sdk-js)\n[![Downloads](https://img.shields.io/npm/dm/@devmehq/sdk-js.svg)](https://www.npmjs.com/package/@devmehq/sdk-js)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)\n\n**The official JavaScript/TypeScript SDK for DEV.ME API Platform**\n\n[Documentation](https://dev.me/docs) • [Get API Key](https://dev.me/signup) • [Support](mailto:support@dev.me)\n\n\u003c/div\u003e\n\n## 🚀 Features\n\n- **19 Powerful APIs** across 7 categories\n- **TypeScript Support** with full type definitions\n- **Universal Compatibility** - Works in Node.js, Browser, React, Vue, Angular\n- **Promise-based** with async/await support\n- **Comprehensive Error Handling**\n- **Auto-retry Logic** for network failures\n- **Lightweight** with minimal dependencies\n\n## 📦 Installation\n\n### Using npm\n\n```bash\nnpm install @devmehq/sdk-js\n```\n\n### Using yarn\n\n```bash\nyarn add @devmehq/sdk-js\n```\n\n### Using pnpm\n\n```bash\npnpm add @devmehq/sdk-js\n```\n\n## 🔑 Authentication\n\nGet your free API key from [dev.me/signup](https://dev.me/signup)\n\n```typescript\nimport { Configuration } from '@devmehq/sdk-js';\n\n// Use demo key for testing (limited rate)\nconst config = new Configuration({ apiKey: 'demo-key' });\n\n// Use your API key for production\nconst config = new Configuration({ apiKey: 'YOUR_API_KEY' });\n```\n\n## 📚 Available APIs\n\n### 1️⃣ Validation \u0026 Verification APIs\n\n#### Email Validation API\n\nValidate email addresses with SMTP verification, domain checks, and name detection.\n\n```typescript\nimport { EmailApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst emailApi = new EmailApi(config);\n\nconst { data } = await emailApi.v1GetEmailDetails({\n  email: 'test@example.com',\n  verifyMx: true,\n  verifySmtp: true,\n  suggestDomain: true,\n});\n\nconsole.log(data);\n// {\n//   email: 'test@example.com',\n//   valid: true,\n//   format: true,\n//   domain: 'example.com',\n//   disposable: false,\n//   dns: true,\n//   mxRecords: true,\n//   smtpCheck: true,\n//   catchAll: false,\n//   role: false,\n//   free: false\n// }\n```\n\n#### Phone Validation API\n\nValidate and get detailed information about phone numbers worldwide.\n\n```typescript\nimport { PhoneApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst phoneApi = new PhoneApi(config);\n\nconst { data } = await phoneApi.v1GetPhoneDetails({\n  phone: '+14155552671',\n});\n\nconsole.log(data);\n// {\n//   valid: true,\n//   number: '14155552671',\n//   localFormat: '(415) 555-2671',\n//   internationalFormat: '+1 415-555-2671',\n//   countryPrefix: '+1',\n//   countryCode: 'US',\n//   countryName: 'United States',\n//   location: 'California',\n//   carrier: 'AT\u0026T',\n//   lineType: 'mobile'\n// }\n```\n\n#### IP Geolocation API\n\nGet comprehensive IP address information including location, ISP, and security data.\n\n```typescript\nimport { IPApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst ipApi = new IPApi(config);\n\nconst { data } = await ipApi.v1GetIpDetails({\n  ip: '8.8.8.8',\n});\n\nconsole.log(data);\n// {\n//   ip: '8.8.8.8',\n//   type: 'IPv4',\n//   continent: 'North America',\n//   continentCode: 'NA',\n//   country: 'United States',\n//   countryCode: 'US',\n//   region: 'California',\n//   city: {\n//     name: 'Mountain View',\n//     latitude: 37.4056,\n//     longitude: -122.0775,\n//     timeZone: 'America/Los_Angeles'\n//   },\n//   asn: 15169,\n//   aso: 'Google LLC',\n//   isp: 'Google',\n//   proxy: false,\n//   hosting: true\n// }\n```\n\n### 2️⃣ Financial \u0026 Currency APIs\n\n#### Currency Exchange API\n\nReal-time currency conversion with live exchange rates.\n\n```typescript\nimport { CurrencyApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst currencyApi = new CurrencyApi(config);\n\n// Convert currency\nconst { data } = await currencyApi.v1ConvertCurrency({\n  amount: 100,\n  from: 'USD',\n  to: 'EUR',\n});\n\nconsole.log(data);\n// {\n//   originalAmount: 100,\n//   convertedAmount: 85.23,\n//   from: 'USD',\n//   to: 'EUR',\n//   exchangeRate: 0.8523,\n//   convertedText: '100 USD equals 85.23 EUR',\n//   rateTime: '2024-01-20T10:30:00.000Z'\n// }\n\n// List available currencies\nconst currencies = await currencyApi.v1ListCurrencies({\n  code: ['USD', 'EUR', 'GBP', 'JPY'],\n});\n\nconsole.log(currencies.data);\n// {\n//   list: [\n//     { code: 'USD', name: 'US Dollar', symbol: '$' },\n//     { code: 'EUR', name: 'Euro', symbol: '€' },\n//     { code: 'GBP', name: 'British Pound', symbol: '£' },\n//     { code: 'JPY', name: 'Japanese Yen', symbol: '¥' }\n//   ]\n// }\n```\n\n### 3️⃣ Domain \u0026 Security APIs\n\n#### Domain Tools API\n\nWHOIS lookup, DNS resolution, and domain availability checking.\n\n```typescript\nimport { DomainToolsApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst domainApi = new DomainToolsApi(config);\n\n// WHOIS lookup\nconst { data } = await domainApi.v1GetWhois({\n  domain: 'example.com',\n});\n\n// DNS lookup\nconst dnsData = await domainApi.v1GetDnsRecords({\n  domain: 'example.com',\n  type: 'A',\n});\n\n// Check domain availability\nconst availability = await domainApi.v1CheckAvailability({\n  domain: 'myawesomesite.com',\n});\n```\n\n### 4️⃣ Content \u0026 Media APIs\n\n#### QR Code Generator API\n\nGenerate customizable QR codes for various content types.\n\n```typescript\nimport { QRCodeApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst qrApi = new QRCodeApi(config);\n\n// Generate QR code\nconst { data } = await qrApi.v1CreateQRCode({\n  data: 'https://dev.me',\n  size: 300,\n  format: 'png',\n  errorCorrection: 'M',\n  margin: 4,\n  darkColor: '#000000',\n  lightColor: '#FFFFFF',\n});\n\n// Returns base64 encoded image or download URL\nconsole.log(data.qrCode);\n```\n\n### 5️⃣ URL \u0026 Web APIs\n\n#### URL Shortener API\n\nCreate and manage short URLs with analytics.\n\n```typescript\nimport { ShortURLApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst shortUrlApi = new ShortURLApi(config);\n\n// Create short URL\nconst { data } = await shortUrlApi.v1CreateShortUrl({\n  url: 'https://example.com/very-long-url-path',\n  domain: 'short.link',\n  customSuffix: 'mylink',\n});\n\nconsole.log(data);\n// {\n//   shortUrl: 'https://short.link/mylink',\n//   originalUrl: 'https://example.com/very-long-url-path',\n//   qrCode: 'base64-qr-code-image',\n//   createdAt: '2024-01-20T10:30:00.000Z'\n// }\n\n// Bulk create short URLs\nconst bulkUrls = await shortUrlApi.v1CreateBulkShortUrls({\n  urls: [{ url: 'https://example1.com' }, { url: 'https://example2.com' }, { url: 'https://example3.com' }],\n});\n```\n\n#### URL Metadata API\n\nExtract metadata, Open Graph tags, and content from any URL.\n\n```typescript\nimport { URLMetadataApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst metadataApi = new URLMetadataApi(config);\n\nconst { data } = await metadataApi.v1GetMetadata({\n  url: 'https://example.com',\n});\n\nconsole.log(data);\n// {\n//   title: 'Example Domain',\n//   description: 'Example Domain for Documentation',\n//   image: 'https://example.com/image.png',\n//   favicon: 'https://example.com/favicon.ico',\n//   author: 'John Doe',\n//   keywords: ['example', 'documentation'],\n//   openGraph: { ... },\n//   twitter: { ... }\n// }\n```\n\n#### One-Time URL API\n\nCreate secure, self-destructing URLs for sensitive content.\n\n```typescript\nimport { OneTimeURLApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst oneTimeApi = new OneTimeURLApi(config);\n\nconst { data } = await oneTimeApi.v1CreateOneTimeUrl({\n  content: 'This is sensitive information',\n  expiresIn: 3600, // 1 hour\n  maxViews: 1,\n});\n\nconsole.log(data);\n// {\n//   url: 'https://dev.me/ot/abc123xyz',\n//   expiresAt: '2024-01-20T11:30:00.000Z',\n//   maxViews: 1\n// }\n```\n\n### 6️⃣ Global Data APIs\n\n#### Country Data API\n\nGet comprehensive information about countries worldwide.\n\n```typescript\nimport { CountryApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst countryApi = new CountryApi(config);\n\n// Get country by code\nconst { data } = await countryApi.v1GetCountryByCode({\n  code: 'US',\n});\n\n// List all countries\nconst countries = await countryApi.v1ListCountries({\n  limit: 10,\n  page: 1,\n});\n\nconsole.log(data);\n// {\n//   name: 'United States',\n//   code: 'US',\n//   code3: 'USA',\n//   capital: 'Washington, D.C.',\n//   region: 'Americas',\n//   subregion: 'North America',\n//   population: 331002651,\n//   area: 9833517,\n//   languages: ['English'],\n//   currencies: [{ code: 'USD', name: 'US Dollar', symbol: '$' }],\n//   timezones: ['UTC-12:00', 'UTC-11:00', ...],\n//   flag: 'https://flags.dev.me/us.svg'\n// }\n```\n\n### 7️⃣ Management APIs\n\n#### API Key Management\n\nManage your API keys programmatically.\n\n```typescript\nimport { APIKeyApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'YOUR_MASTER_KEY' });\nconst apiKeyApi = new APIKeyApi(config);\n\n// Create new API key\nconst { data } = await apiKeyApi.v1CreateApiKey({\n  name: 'Production Key',\n  permissions: ['read', 'write'],\n  rateLimit: 10000,\n});\n\n// List API keys\nconst keys = await apiKeyApi.v1ListApiKeys();\n\n// Revoke API key\nawait apiKeyApi.v1RevokeApiKey({ keyId: 'key-id' });\n```\n\n#### API Usage Analytics\n\nTrack and analyze your API usage.\n\n```typescript\nimport { APIUsageApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'YOUR_API_KEY' });\nconst usageApi = new APIUsageApi(config);\n\n// Get usage statistics\nconst { data } = await usageApi.v1GetUsageStats({\n  startDate: '2024-01-01',\n  endDate: '2024-01-31',\n  service: 'email',\n});\n\nconsole.log(data);\n// {\n//   totalRequests: 5432,\n//   successfulRequests: 5300,\n//   failedRequests: 132,\n//   usage: [\n//     { date: '2024-01-01', count: 234, service: 'email' },\n//     { date: '2024-01-02', count: 189, service: 'email' },\n//     ...\n//   ]\n// }\n```\n\n## 🛠️ Advanced Configuration\n\n### Custom Timeout\n\n```typescript\nconst config = new Configuration({\n  apiKey: 'YOUR_API_KEY',\n  basePath: 'https://api.dev.me',\n  timeout: 10000, // 10 seconds\n});\n```\n\n### Custom Headers\n\n```typescript\nconst config = new Configuration({\n  apiKey: 'YOUR_API_KEY',\n  baseOptions: {\n    headers: {\n      'X-Custom-Header': 'value',\n    },\n  },\n});\n```\n\n### Proxy Configuration\n\n```typescript\nconst config = new Configuration({\n  apiKey: 'YOUR_API_KEY',\n  baseOptions: {\n    proxy: {\n      host: 'proxy.example.com',\n      port: 8080,\n      auth: {\n        username: 'user',\n        password: 'pass',\n      },\n    },\n  },\n});\n```\n\n## 🧪 Testing\n\n```bash\n# Run all tests\nyarn test\n\n# Run tests with coverage\nyarn test:coverage\n\n# Run tests in watch mode\nyarn test:watch\n```\n\n## 📊 Rate Limits\n\n| Plan         | Monthly Requests | Rate Limit  |\n| ------------ | ---------------- | ----------- |\n| Free         | 500              | 10/minute   |\n| Essential    | 15,000           | 100/minute  |\n| Standard     | 60,000           | 500/minute  |\n| Professional | 1,000,000        | 2000/minute |\n| Enterprise   | Unlimited        | Custom      |\n\nView pricing details at [dev.me/pricing](https://dev.me/pricing)\n\n## 🔧 Error Handling\n\n```typescript\nimport { EmailApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'YOUR_API_KEY' });\nconst emailApi = new EmailApi(config);\n\ntry {\n  const { data } = await emailApi.v1GetEmailDetails({\n    email: 'invalid-email',\n  });\n} catch (error) {\n  if (error.response) {\n    // API error response\n    console.error('API Error:', error.response.data);\n    console.error('Status Code:', error.response.status);\n  } else if (error.request) {\n    // Network error\n    console.error('Network Error:', error.message);\n  } else {\n    // Other errors\n    console.error('Error:', error.message);\n  }\n}\n```\n\n## 🌐 Browser Usage\n\n### Using CDN\n\n```html\n\u003cscript src=\"https://unpkg.com/@devmehq/sdk-js/dist/browser.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  const config = new DevMe.Configuration({ apiKey: 'demo-key' });\n  const currencyApi = new DevMe.CurrencyApi(config);\n\n  currencyApi\n    .v1ConvertCurrency({\n      amount: 100,\n      from: 'USD',\n      to: 'EUR',\n    })\n    .then((response) =\u003e {\n      console.log(response.data);\n    });\n\u003c/script\u003e\n```\n\n### Using ES Modules\n\n```javascript\nimport { CurrencyApi, Configuration } from '@devmehq/sdk-js';\n\nconst config = new Configuration({ apiKey: 'demo-key' });\nconst currencyApi = new CurrencyApi(config);\n\n// Use in your React/Vue/Angular components\n```\n\n## 📝 TypeScript Support\n\nFull TypeScript support with type definitions included:\n\n```typescript\nimport { CurrencyApi, Configuration, V1ConvertCurrencyRequest, V1ConvertCurrencyResponse } from '@devmehq/sdk-js';\n\nconst config: Configuration = new Configuration({ apiKey: 'demo-key' });\nconst currencyApi: CurrencyApi = new CurrencyApi(config);\n\nconst request: V1ConvertCurrencyRequest = {\n  amount: 100,\n  from: 'USD',\n  to: 'EUR',\n};\n\nconst response: V1ConvertCurrencyResponse = await currencyApi.v1ConvertCurrency(request);\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 🐛 Bug Reports\n\nFound a bug? Please [open an issue](https://github.com/devmehq/devme-sdk-js/issues) with:\n\n- SDK version\n- Node.js/Browser version\n- Code snippet to reproduce\n- Error messages/stack traces\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE.md) file for details.\n\n## 🆘 Support\n\n- 📧 Email: [support@dev.me](mailto:support@dev.me)\n- 📚 Documentation: [dev.me/documentation](https://dev.me/documentation)\n- 🐦 Twitter: [@devhq](https://x.com/devhq)\n\n## 🔗 Links\n\n- [API Documentation](https://dev.me/documentation)\n- [Pricing](https://dev.me/pricing)\n- [Blog](https://dev.me/blog)\n- [Changelog](CHANGELOG.md)\n\n---\n\n\u003cdiv style=\"text-align: center;\"\u003e\nMade with ❤️ by \u003ca href=\"https://dev.me\"\u003eDEV.ME\u003c/a\u003e Team\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmehq%2Fdevme-sdk-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevmehq%2Fdevme-sdk-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmehq%2Fdevme-sdk-js/lists"}