Skip to content

Quick Start

Get started with Solenoid Meter in minutes.

Prerequisites

Get an API key from solenoid.systems/meter.

Your key will be prefixed with sm_ and should be kept secure.

Base URL

All API requests are made to:

https://api.solenoid.systems

Authentication

Include your API key in the Authorization header with Bearer token format:

Authorization: Bearer sm_your_api_key_here

Basic Usage

1. Check Balance

Get the current balance for a user:

bash
curl -X GET https://api.solenoid.systems/v1/meter/balance \
  -H "Authorization: Bearer sm_your_api_key_here"
javascript
const response = await fetch('https://api.solenoid.systems/v1/meter/balance', {
  headers: {
    'Authorization': 'Bearer sm_your_api_key_here'
  }
})

const data = await response.json()
console.log(data.balance) // Current balance
python
import requests

response = requests.get(
    'https://api.solenoid.systems/v1/meter/balance',
    headers={'Authorization': 'Bearer sm_your_api_key_here'}
)

data = response.json()
print(data['balance'])  # Current balance

Response:

json
{
  "balance": 100,
  "user_id": "usr_..."
}

2. Deduct Credits

Atomically deduct credits from a user's balance:

bash
curl -X POST https://api.solenoid.systems/v1/meter/deduct \
  -H "Authorization: Bearer sm_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"amount": 1}'
javascript
const response = await fetch('https://api.solenoid.systems/v1/meter/deduct', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sm_your_api_key_here',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ amount: 1 })
})

if (response.status === 402) {
  const error = await response.json()
  console.log('Insufficient balance:', error.balance)
} else {
  const data = await response.json()
  console.log('New balance:', data.balance)
}
python
import requests

response = requests.post(
    'https://api.solenoid.systems/v1/meter/deduct',
    headers={'Authorization': 'Bearer sm_your_api_key_here'},
    json={'amount': 1}
)

if response.status_code == 402:
    error = response.json()
    print('Insufficient balance:', error['balance'])
else:
    data = response.json()
    print('New balance:', data['balance'])

Success Response (200):

json
{
  "balance": 99,
  "user_id": "usr_..."
}

Insufficient Balance Response (402):

json
{
  "error": {
    "code": "insufficient_balance",
    "message": "Insufficient balance for this operation"
  },
  "balance": 0,
  "user_id": "usr_..."
}

3. Refill Credits

Add credits to a user's balance:

bash
curl -X POST https://api.solenoid.systems/v1/meter/refill \
  -H "Authorization: Bearer sm_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"amount": 100}'
javascript
const response = await fetch('https://api.solenoid.systems/v1/meter/refill', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sm_your_api_key_here',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ amount: 100 })
})

const data = await response.json()
console.log('New balance:', data.balance)
python
import requests

response = requests.post(
    'https://api.solenoid.systems/v1/meter/refill',
    headers={'Authorization': 'Bearer sm_your_api_key_here'},
    json={'amount': 100}
)

data = response.json()
print('New balance:', data['balance'])

Response:

json
{
  "balance": 100,
  "user_id": "usr_..."
}

Next Steps

  • Read the API Reference for complete endpoint documentation
  • Learn about Authentication best practices
  • Integrate Solenoid Meter into your application