Skip to main content

Environments

Turquoise provides three isolated environments for development, testing, and production workloads.

Environment Overview​

FeatureSandboxStagingProduction
Base URLsandbox.api.turquoise.health/tpa-api/v1staging.api.turquoise.health/tpa-api/v1api.turquoise.health/tpa-api/v1
DataTest data onlyReal-world test dataLive healthcare data
PaymentsSimulatedSimulatedReal (Stripe)
AuthAPI KeyAPI KeyOAuth 2.0 + mTLS
Rate LimitUnlimited200 req/min100 req/min (default)
Data Retention7 days30 daysIndefinite
SLABest effort99.5%99.9%
CostFreeFreeStandard pricing

Sandbox Environment​

Purpose​

Sandbox is ideal for initial development and testing. All data is synthetic, and no real payments occur.

Base URL​

https://sandbox.api.turquoise.health/tpa-api/v1

Features​

  • Test Data: Pre-configured Sharp HealthCare provider and plan
  • Reset: Daily reset at midnight UTC
  • Webhooks: Simulated webhook delivery
  • Debugging: Enhanced logging and diagnostic endpoints
  • Rate Limits: No practical limits (1000+ req/min)

Test Data Available​

# Get list of available test resources
curl -X GET \
https://sandbox.api.turquoise.health/tpa-api/v1/test-fixtures \
-H "X-API-Key: $TURQUOISE_API_KEY"

Response includes:

{
"providers": [
{
"npi": "1234567890",
"name": "Sharp HealthCare",
"specialties": ["gastroenterology"]
}
],
"plans": [
{
"id": "SHARP-HMO-2024",
"name": "Sharp Health Plan",
"contracts": [
{
"service_code": "43235",
"description": "EGD",
"negotiated_rate": 1200.00
}
]
}
],
"members": [
{
"member_id": "SHP00123456",
"plan_id": "SHARP-HMO-2024",
"name": "Demo Member",
"effective_date": "2024-01-01"
}
]
}

Example Workflows​

# Contract Lookup (Blind)
curl -X POST \
https://sandbox.api.turquoise.health/tpa-api/v1/contracts/lookup \
-H "X-API-Key: $TURQUOISE_API_KEY" \
-d '{
"provider_npi": "1234567890",
"plan_id": "SHARP-HMO-2024",
"service_code": "43235"
}'

# Claim Submission
curl -X POST \
https://sandbox.api.turquoise.health/tpa-api/v1/claims/submit \
-H "X-API-Key: $TURQUOISE_API_KEY" \
-H "Content-Type: application/fhir+json" \
-d '{...}'

# Settlement Polling
curl -X GET \
https://sandbox.api.turquoise.health/tpa-api/v1/settlements/DEMO-CLM-001 \
-H "X-API-Key: $TURQUOISE_API_KEY"
warning

Sandbox data resets daily at 00:00 UTC. Do not rely on persistent state.

Staging Environment​

Purpose​

Staging mirrors production behavior with real-world test data but no live payment processing. Use before production rollout.

Base URL​

https://staging.api.turquoise.health/tpa-api/v1

Features​

  • Test Data: Realistic healthcare scenarios (multiple providers, plans, members)
  • Realistic Behavior: Mirrors production response times and behavior
  • Limited Reset: Data retained for 30 days (allows testing reconciliation flows)
  • Real Webhooks: Actual webhook delivery (to your test endpoint)
  • Payment Simulation: Stripe test mode (no actual charges)
  • Rate Limits: 200 requests/minute

Testing Scenarios​

# Test batch claim processing (TPA workflow)
curl -X POST \
https://staging.api.turquoise.health/tpa-api/v1/claims/batch-submit \
-H "X-API-Key: $TURQUOISE_API_KEY" \
-H "Content-Type: application/fhir+json" \
-d '[
{"resourceType": "Claim", ...},
{"resourceType": "Claim", ...}
]'

# Test settlement webhook delivery
curl -X POST \
https://api.turquoise.health/webhooks/subscribe \
-H "X-API-Key: $TURQUOISE_API_KEY" \
-d '{
"url": "https://your-tpa.com/webhooks/settlements",
"events": ["settlement.completed", "adjustment.initiated"]
}'
info

Before moving to production, test webhook delivery, error handling, and reconciliation processes in staging.

Production Environment​

Purpose​

Production is your live environment serving real claims and processing actual payments through Stripe.

Base URL​

https://api.turquoise.health/tpa-api/v1

Requirements​

  • Authentication: OAuth 2.0 + mTLS certificates (required)
  • TLS: TLS 1.3 minimum (TLS 1.2 available for legacy systems)
  • Rate Limits: 100 requests/minute (configurable for enterprise)
  • Monitoring: Integration with your monitoring stack required

Features​

  • Real Data: Live member, provider, and plan data
  • Real Payments: Stripe Connect processes actual disbursements
  • High Availability: Multi-region deployment with 99.9% uptime SLA
  • Audit Logging: Immutable audit trail for compliance
  • Automatic Scaling: Handles peak transaction volumes

Deployment Checklist​

  • OAuth 2.0 + mTLS certificates installed
  • Rate limiting strategy implemented
  • Error handling and retry logic tested
  • Webhook endpoints secured and monitoring active
  • Data encryption in transit (TLS 1.3) and at rest
  • Monitoring dashboards set up
  • Incident response plan documented
  • Compliance review complete (HIPAA, state regulations)

Monitoring Production​

# Health check
curl -X GET \
https://api.turquoise.health/tpa-api/v1/health \
--cert client.crt --key client.key \
-H "Authorization: Bearer $ACCESS_TOKEN"

# Check API status
curl -X GET \
https://status.turquoise.health/api/v1/status

# View rate limit status
curl -X GET \
https://api.turquoise.health/tpa-api/v1/rate-limit-status \
--cert client.crt --key client.key \
-H "Authorization: Bearer $ACCESS_TOKEN"
warning

Production API key rotation requires careful planning. Coordinate with Turquoise support to ensure zero downtime.

Migrating Between Environments​

Sandbox → Staging​

# 1. Update API endpoints
export TURQUOISE_API_URL="https://staging.api.turquoise.health/tpa-api/v1"

# 2. Request staging API key
# Contact support@turquoise.health

# 3. Export new credentials
export TURQUOISE_API_KEY="sk_stage_..."

# 4. Run integration tests
npm run test:integration

# 5. Load test data
curl -X POST \
https://staging.api.turquoise.health/tpa-api/v1/test-fixtures/load \
-H "X-API-Key: $TURQUOISE_API_KEY" \
-d '{"fixture": "multi-provider-scenario"}'

Staging → Production​

# 1. Obtain mTLS certificates
# Contact support@turquoise.health

# 2. Update configuration
export TURQUOISE_API_URL="https://api.turquoise.health/tpa-api/v1"
export TURQUOISE_CERT_PATH="./client.crt"
export TURQUOISE_KEY_PATH="./client.key"
export TURQUOISE_CA_PATH="./ca.crt"

# 3. Verify OAuth token flow
./scripts/verify-oauth.sh

# 4. Canary deployment (5% traffic)
kubectl set image deployment/tpa-client tpa-client=your-image:prod --record

# 5. Monitor metrics for 2 hours
# Check dashboard at https://monitoring.turquoise.health

# 6. Full rollout
kubectl set image deployment/tpa-client tpa-client=your-image:prod --record

Environment-Specific Configuration​

Python Example​

import os
from turquoise import TurquoiseClient

environment = os.getenv('TURQUOISE_ENV', 'sandbox')

if environment == 'production':
client = TurquoiseClient(
base_url='https://api.turquoise.health/tpa-api/v1',
cert_path='./client.crt',
key_path='./client.key',
ca_path='./ca.crt',
auth_type='oauth2_mtls'
)
else:
client = TurquoiseClient(
base_url=f'https://{environment}.api.turquoise.health/tpa-api/v1',
api_key=os.getenv('TURQUOISE_API_KEY'),
auth_type='api_key'
)

Node.js Example​

const TurquoiseClient = require('@turquoise/tpa-sdk');

const config = {
sandbox: {
baseUrl: 'https://sandbox.api.turquoise.health/tpa-api/v1',
authType: 'api_key',
apiKey: process.env.TURQUOISE_API_KEY
},
production: {
baseUrl: 'https://api.turquoise.health/tpa-api/v1',
authType: 'oauth2_mtls',
certPath: './client.crt',
keyPath: './client.key',
caPath: './ca.crt'
}
};

const client = new TurquoiseClient(config[process.env.NODE_ENV || 'sandbox']);

Support​

EnvironmentSupport ChannelResponse Time
SandboxEmail24 hours
StagingEmail / Slack4 hours
ProductionPhone / Slack / Email1 hour

Contact support@turquoise.health or call 1-800-TURQUOISE.

Next Steps​