Open Stripe Checkout for manual prepaid managed-call credit
POST
/v1/billing/prepaid/funding-intents
const url = 'https://api.vocapable.com/v1/billing/prepaid/funding-intents';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"amount_minor":1,"currency":"usd","idempotency_key":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/billing/prepaid/funding-intents \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "amount_minor": 1, "currency": "usd", "idempotency_key": "example" }'Create/recover one funding intent, then ask Stripe for its hosted Checkout URL.
A transport timeout deliberately returns 202 without rolling the new intent
back. Stripe may have accepted the request, so retrying the same key reuses the local
intent id and Stripe idempotency key instead of risking a second charge.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
PrepaidFundingRequest
One manual top-up. The browser supplies no price id or currency conversion.
object
amount_minor
required
Amount Minor
integer
currency
Currency
string
idempotency_key
required
Idempotency Key
string
Responses
Section titled “Responses”Successful Response
Media typeapplication/json
Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}