Service Reference
Complete endpoint documentation for every sandbox service. Each sandbox implements the real API's format, authentication, and error shapes.
Stripe
| Base URL | https://ghostbox.dev/sandbox/stripe/v1/* |
| Auth | Authorization: Bearer sandbox_test_... |
| Content-Type | application/x-www-form-urlencoded |
| Pagination | Cursor-based: limit (max 100), starting_after, ending_before |
Customers
/v1/customersCreate a customer
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/customers \
-H "Authorization: Bearer sandbox_test_..." \
-d "email=jane@example.com" \
-d "name=Jane Doe"Example response
{
"id": "cus_abc123def456ghi789",
"object": "customer",
"email": "jane@example.com",
"name": "Jane Doe",
"balance": 0,
"currency": null,
"delinquent": false,
"created": 1711234567,
"livemode": false
}/v1/customersList all customers
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/customers \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"object": "list",
"data": [{ "id": "cus_...", "object": "customer", ... }],
"has_more": false,
"url": "/v1/customers"
}/v1/customers/:idRetrieve a customer
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/customers/cus_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "cus_abc123",
"object": "customer",
"email": "jane@example.com",
"name": "Jane Doe",
...
}/v1/customers/:idUpdate a customer
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/customers/cus_abc123 \
-H "Authorization: Bearer sandbox_test_..." \
-d "name=Jane Smith"Example response
{
"id": "cus_abc123",
"object": "customer",
"name": "Jane Smith",
...
}/v1/customers/:idDelete a customer
Example request
curl -X DELETE https://ghostbox.dev/sandbox/stripe/v1/customers/cus_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "cus_abc123",
"object": "customer",
"deleted": true
}Products
/v1/productsCreate a product
Required fields
nameExample request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/products \
-H "Authorization: Bearer sandbox_test_..." \
-d "name=Premium Plan"Example response
{
"id": "prod_abc123def456ghi789",
"object": "product",
"name": "Premium Plan",
"active": true,
"type": "service",
...
}/v1/productsList all products
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/products \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"object": "list",
"data": [{ "id": "prod_...", "object": "product", ... }],
"has_more": false
}/v1/products/:idRetrieve a product
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/products/prod_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "prod_abc123",
"object": "product",
"name": "Premium Plan",
...
}/v1/products/:idUpdate a product
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/products/prod_abc123 \
-H "Authorization: Bearer sandbox_test_..." \
-d "name=Enterprise Plan"Example response
{
"id": "prod_abc123",
"object": "product",
"name": "Enterprise Plan",
...
}/v1/products/:idDelete (archive) a product
Example request
curl -X DELETE https://ghostbox.dev/sandbox/stripe/v1/products/prod_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "prod_abc123",
"object": "product",
"deleted": true
}Prices
/v1/pricesCreate a price
Required fields
currencyproductExample request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/prices \
-H "Authorization: Bearer sandbox_test_..." \
-d "currency=usd" \
-d "product=prod_abc123" \
-d "unit_amount=2000"Example response
{
"id": "price_abc123def456ghi789",
"object": "price",
"currency": "usd",
"product": "prod_abc123",
"unit_amount": 2000,
"active": true,
"type": "one_time",
...
}/v1/pricesList all prices
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/prices \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"object": "list",
"data": [{ "id": "price_...", "object": "price", ... }],
"has_more": false
}/v1/prices/:idRetrieve a price
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/prices/price_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "price_abc123",
"object": "price",
"unit_amount": 2000,
...
}/v1/prices/:idUpdate a price
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/prices/price_abc123 \
-H "Authorization: Bearer sandbox_test_..." \
-d "active=false"Example response
{
"id": "price_abc123",
"object": "price",
"active": false,
...
}Charges
/v1/chargesCreate a charge
Required fields
amountExample request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/charges \
-H "Authorization: Bearer sandbox_test_..." \
-d "amount=2000" \
-d "currency=usd" \
-d "source[number]=4242424242424242" \
-d "source[exp_month]=12" \
-d "source[exp_year]=2030"Example response
{
"id": "ch_abc123def456ghi789",
"object": "charge",
"amount": 2000,
"currency": "usd",
"paid": true,
"status": "succeeded",
"payment_method_details": {
"type": "card",
"card": {
"brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2030
}
},
...
}/v1/chargesList all charges
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/charges \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"object": "list",
"data": [{ "id": "ch_...", "object": "charge", ... }],
"has_more": false
}/v1/charges/:idRetrieve a charge
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/charges/ch_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "ch_abc123",
"object": "charge",
"amount": 2000,
...
}/v1/charges/:idUpdate a charge
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/charges/ch_abc123 \
-H "Authorization: Bearer sandbox_test_..." \
-d "description=Updated charge"Example response
{
"id": "ch_abc123",
"object": "charge",
"description": "Updated charge",
...
}Payment Intents
/v1/payment_intentsCreate a payment intent
Required fields
amountcurrencyExample request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/payment_intents \
-H "Authorization: Bearer sandbox_test_..." \
-d "amount=2000" \
-d "currency=usd" \
-d "payment_method_types[]=card"Example response
{
"id": "pi_abc123def456ghi789",
"object": "payment_intent",
"amount": 2000,
"currency": "usd",
"status": "requires_payment_method",
"client_secret": "pi_abc123_secret_...",
...
}/v1/payment_intentsList all payment intents
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/payment_intents \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"object": "list",
"data": [{ "id": "pi_...", "object": "payment_intent", ... }],
"has_more": false
}/v1/payment_intents/:idRetrieve a payment intent
Example request
curl https://ghostbox.dev/sandbox/stripe/v1/payment_intents/pi_abc123 \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "pi_abc123",
"object": "payment_intent",
"status": "requires_payment_method",
...
}/v1/payment_intents/:idUpdate a payment intent
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/payment_intents/pi_abc123 \
-H "Authorization: Bearer sandbox_test_..." \
-d "payment_method=4242424242424242"Example response
{
"id": "pi_abc123",
"object": "payment_intent",
"status": "requires_confirmation",
...
}/v1/payment_intents/:id/confirmConfirm a payment intent
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/payment_intents/pi_abc123/confirm \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "pi_abc123",
"object": "payment_intent",
"status": "succeeded",
"amount_received": 2000,
...
}/v1/payment_intents/:id/cancelCancel a payment intent
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/payment_intents/pi_abc123/cancel \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "pi_abc123",
"object": "payment_intent",
"status": "canceled",
"cancellation_reason": "requested_by_customer",
...
}/v1/payment_intents/:id/captureCapture a payment intent (manual capture only)
Example request
curl -X POST https://ghostbox.dev/sandbox/stripe/v1/payment_intents/pi_abc123/capture \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "pi_abc123",
"object": "payment_intent",
"status": "succeeded",
"amount_received": 2000,
"amount_capturable": 0,
...
}Magic card numbers
Use these card numbers in the source[number] or payment_method field to trigger specific outcomes.
| Card Number | Brand | Outcome | Decline Code |
|---|---|---|---|
4242424242424242 | Visa | Success | -- |
4000056655665556 | Visa (debit) | Success | -- |
5555555555554444 | Mastercard | Success | -- |
2223003122003222 | Mastercard (2-series) | Success | -- |
5200828282828210 | Mastercard (debit) | Success | -- |
378282246310005 | Amex | Success | -- |
6011111111111117 | Discover | Success | -- |
4000000000000002 | Visa | Declined | card_declined |
4000000000009995 | Visa | Declined | insufficient_funds |
4000000000009987 | Visa | Declined | lost_card |
4000000000009979 | Visa | Declined | stolen_card |
4000000000000069 | Visa | Declined | expired_card |
4000000000000127 | Visa | Declined | incorrect_cvc |
4000000000000119 | Visa | Declined | processing_error |
4242424242424241 | Visa | Declined | incorrect_number |
Resend
| Base URL | https://ghostbox.dev/sandbox/resend/* |
| Auth | Authorization: Bearer sandbox_test_... |
| Content-Type | application/json |
| Pagination | Page-based: page, page_size (max 100) |
Emails
/emailsSend an email
Required fields
fromtosubjectExample request
curl -X POST https://ghostbox.dev/sandbox/resend/emails \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{
"from": "hello@example.com",
"to": "user@example.com",
"subject": "Hello World",
"html": "<p>Welcome!</p>"
}'Example response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}/emails/:idRetrieve an email
Example request
curl https://ghostbox.dev/sandbox/resend/emails/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "a1b2c3d4-...",
"object": "email",
"from": "hello@example.com",
"to": ["user@example.com"],
"subject": "Hello World",
"html": "<p>Welcome!</p>",
"last_event": "delivered",
"created_at": "2026-03-28T12:00:00.000Z"
}API Keys
/api-keysCreate an API key
Required fields
nameExample request
curl -X POST https://ghostbox.dev/sandbox/resend/api-keys \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Production Key" }'Example response
{
"id": "a1b2c3d4-...",
"token": "re_abc123def456..."
}/api-keysList API keys
Example request
curl https://ghostbox.dev/sandbox/resend/api-keys \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"data": [
{
"id": "a1b2c3d4-...",
"name": "Production Key",
"permission": "full_access",
"created_at": "2026-03-28T12:00:00.000Z"
}
]
}/api-keys/:idDelete an API key
Example request
curl -X DELETE https://ghostbox.dev/sandbox/resend/api-keys/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
{}Domains
/domainsAdd a domain
Required fields
nameExample request
curl -X POST https://ghostbox.dev/sandbox/resend/domains \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "name": "example.com" }'Example response
{
"id": "a1b2c3d4-...",
"object": "domain",
"name": "example.com",
"status": "not_started",
"region": "us-east-1",
"records": [
{ "record": "SPF", "type": "MX", ... },
{ "record": "SPF", "type": "TXT", ... },
{ "record": "DKIM", "type": "CNAME", ... }
],
"created_at": "2026-03-28T..."
}/domainsList domains
Example request
curl https://ghostbox.dev/sandbox/resend/domains \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"data": [{ "id": "...", "name": "example.com", ... }]
}/domains/:idGet a domain
Example request
curl https://ghostbox.dev/sandbox/resend/domains/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "a1b2c3d4-...",
"name": "example.com",
"status": "not_started",
...
}/domains/:idDelete a domain
Example request
curl -X DELETE https://ghostbox.dev/sandbox/resend/domains/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
{}/domains/:id/verifyVerify a domain (always succeeds in sandbox)
Example request
curl -X POST https://ghostbox.dev/sandbox/resend/domains/a1b2c3d4-.../verify \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "a1b2c3d4-...",
"name": "example.com",
"status": "verified",
...
}PostHog
| Base URL | https://ghostbox.dev/sandbox/posthog/api/* |
| Auth | Authorization: Bearer sandbox_test_... |
| Content-Type | application/json |
| Pagination | Offset-based: limit (max 100), offset |
Events
/api/eventCapture a single event
Required fields
eventproperties.distinct_idExample request
curl -X POST https://ghostbox.dev/sandbox/posthog/api/event \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{
"event": "page_view",
"distinct_id": "user-123",
"properties": {
"page": "/pricing",
"referrer": "google.com"
}
}'Example response
{
"status": 1
}/api/captureCapture events (alias for /api/event, supports batch)
Required fields
event or batchExample request
curl -X POST https://ghostbox.dev/sandbox/posthog/api/capture \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{
"batch": [
{
"event": "signup",
"distinct_id": "user-123",
"properties": { "plan": "pro" }
},
{
"event": "purchase",
"distinct_id": "user-123",
"properties": { "amount": 49 }
}
]
}'Example response
{
"status": 1
}Persons
/api/projects/:project_id/personsList persons (project_id accepted but not enforced)
Example request
curl https://ghostbox.dev/sandbox/posthog/api/projects/1/persons \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": "a1b2c3d4-...",
"distinct_ids": ["user-123"],
"properties": { "plan": "pro" },
"created_at": "2026-03-28T..."
}
]
}/api/projects/:project_id/persons/:idGet a person by UUID
Example request
curl https://ghostbox.dev/sandbox/posthog/api/projects/1/persons/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "a1b2c3d4-...",
"distinct_ids": ["user-123"],
"properties": { "plan": "pro" },
"created_at": "2026-03-28T..."
}Feature Flags
/api/feature_flagsCreate a feature flag
Required fields
namekeyExample request
curl -X POST https://ghostbox.dev/sandbox/posthog/api/feature_flags \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{
"name": "New Checkout",
"key": "new-checkout",
"active": true,
"rollout_percentage": 50
}'Example response
{
"id": "a1b2c3d4-...",
"name": "New Checkout",
"key": "new-checkout",
"active": true,
"rollout_percentage": 50,
"filters": {},
"created_at": "2026-03-28T..."
}/api/feature_flagsList feature flags
Example request
curl https://ghostbox.dev/sandbox/posthog/api/feature_flags \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"count": 1,
"next": null,
"previous": null,
"results": [{ "id": "...", "key": "new-checkout", ... }]
}/api/feature_flags/:idGet a feature flag
Example request
curl https://ghostbox.dev/sandbox/posthog/api/feature_flags/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
{
"id": "a1b2c3d4-...",
"key": "new-checkout",
"active": true,
...
}/api/feature_flags/:idUpdate a feature flag
Example request
curl -X PATCH https://ghostbox.dev/sandbox/posthog/api/feature_flags/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "active": false }'Example response
{
"id": "a1b2c3d4-...",
"key": "new-checkout",
"active": false,
...
}/api/feature_flags/:idDelete a feature flag (soft delete)
Example request
curl -X DELETE https://ghostbox.dev/sandbox/posthog/api/feature_flags/a1b2c3d4-... \
-H "Authorization: Bearer sandbox_test_..."Example response
(204 No Content)/decideEvaluate all active flags for a user
Required fields
distinct_idExample request
curl -X POST https://ghostbox.dev/sandbox/posthog/decide \
-H "Authorization: Bearer sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "distinct_id": "user-123" }'Example response
{
"featureFlags": {
"new-checkout": true,
"dark-mode": false
},
"featureFlagPayloads": {},
"errorsWhileComputingFlags": false
}Mailchimp
| Base URL | https://ghostbox.dev/sandbox/mailchimp/3.0/* |
| Auth | Authorization: Basic base64(anyuser:sandbox_test_...) |
| Content-Type | application/json |
| Pagination | Offset-based: count (max 1000), offset |
Lists (Audiences)
/3.0/listsCreate a list
Required fields
nameExample request
curl -X POST https://ghostbox.dev/sandbox/mailchimp/3.0/lists \
-u "anyuser:sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Newsletter Subscribers" }'Example response
{
"id": "abc1234567",
"web_id": 123456,
"name": "Newsletter Subscribers",
"contact": {
"company": "Sandbox Company",
"address1": "123 Test St",
...
},
"stats": { "member_count": 0, ... },
...
}/3.0/listsList all lists
Example request
curl https://ghostbox.dev/sandbox/mailchimp/3.0/lists \
-u "anyuser:sandbox_test_..."Example response
{
"lists": [{ "id": "abc1234567", "name": "...", ... }],
"total_items": 1
}/3.0/lists/:idGet a list
Example request
curl https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567 \
-u "anyuser:sandbox_test_..."Example response
{
"id": "abc1234567",
"name": "Newsletter Subscribers",
...
}/3.0/lists/:idUpdate a list
Example request
curl -X PATCH https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567 \
-u "anyuser:sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Updated Newsletter" }'Example response
{
"id": "abc1234567",
"name": "Updated Newsletter",
...
}/3.0/lists/:idDelete a list
Example request
curl -X DELETE https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567 \
-u "anyuser:sandbox_test_..."Example response
(204 No Content)Members
/3.0/lists/:list_id/membersAdd a member to a list
Required fields
email_addressstatusExample request
curl -X POST https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567/members \
-u "anyuser:sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{
"email_address": "user@example.com",
"status": "subscribed",
"merge_fields": { "FNAME": "Jane", "LNAME": "Doe" }
}'Example response
{
"id": "def7890123",
"email_address": "user@example.com",
"status": "subscribed",
"list_id": "abc1234567",
"merge_fields": { "FNAME": "Jane", "LNAME": "Doe" },
...
}/3.0/lists/:list_id/membersList members of a list
Example request
curl https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567/members \
-u "anyuser:sandbox_test_..."Example response
{
"members": [{ "id": "...", "email_address": "...", ... }],
"list_id": "abc1234567",
"total_items": 1
}/3.0/lists/:list_id/members/:idGet a member
Example request
curl https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567/members/def7890123 \
-u "anyuser:sandbox_test_..."Example response
{
"id": "def7890123",
"email_address": "user@example.com",
"status": "subscribed",
...
}/3.0/lists/:list_id/members/:idUpdate a member
Example request
curl -X PATCH https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567/members/def7890123 \
-u "anyuser:sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "status": "unsubscribed" }'Example response
{
"id": "def7890123",
"email_address": "user@example.com",
"status": "unsubscribed",
...
}/3.0/lists/:list_id/members/:idRemove a member
Example request
curl -X DELETE https://ghostbox.dev/sandbox/mailchimp/3.0/lists/abc1234567/members/def7890123 \
-u "anyuser:sandbox_test_..."Example response
(204 No Content)Campaigns
/3.0/campaignsCreate a campaign
Required fields
typeExample request
curl -X POST https://ghostbox.dev/sandbox/mailchimp/3.0/campaigns \
-u "anyuser:sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{
"type": "regular",
"recipients": { "list_id": "abc1234567" },
"settings": {
"subject_line": "March Newsletter",
"from_name": "Acme Inc",
"reply_to": "hello@acme.com"
}
}'Example response
{
"id": "ghi4567890",
"web_id": 654321,
"type": "regular",
"status": "save",
"recipients": { "list_id": "abc1234567", ... },
"settings": { "subject_line": "March Newsletter", ... },
...
}/3.0/campaignsList campaigns
Example request
curl https://ghostbox.dev/sandbox/mailchimp/3.0/campaigns \
-u "anyuser:sandbox_test_..."Example response
{
"campaigns": [{ "id": "...", "type": "regular", ... }],
"total_items": 1
}/3.0/campaigns/:idGet a campaign
Example request
curl https://ghostbox.dev/sandbox/mailchimp/3.0/campaigns/ghi4567890 \
-u "anyuser:sandbox_test_..."Example response
{
"id": "ghi4567890",
"type": "regular",
"status": "save",
...
}/3.0/campaigns/:idUpdate a campaign
Example request
curl -X PATCH https://ghostbox.dev/sandbox/mailchimp/3.0/campaigns/ghi4567890 \
-u "anyuser:sandbox_test_..." \
-H "Content-Type: application/json" \
-d '{ "settings": { "subject_line": "Updated Subject" } }'Example response
{
"id": "ghi4567890",
"settings": { "subject_line": "Updated Subject", ... },
...
}/3.0/campaigns/:idDelete a campaign
Example request
curl -X DELETE https://ghostbox.dev/sandbox/mailchimp/3.0/campaigns/ghi4567890 \
-u "anyuser:sandbox_test_..."Example response
(204 No Content)/3.0/campaigns/:id/actions/sendSend a campaign
Example request
curl -X POST https://ghostbox.dev/sandbox/mailchimp/3.0/campaigns/ghi4567890/actions/send \
-u "anyuser:sandbox_test_..."Example response
(204 No Content)