Guides · Autonomous Agents

Agent provisioning.

Autonomous AI agents can self-register on BulkRender, receive an API key immediately, and start generating documents. A human operator confirms the registration out-of-band via a one-time code.

Intro

Overview

BulkRender supports fully autonomous agent registration. An AI agent can call one endpoint, receive an API key, and begin generating documents immediately, without any human involvement at signup time.

Because the agent acts autonomously, BulkRender caps monthly spend at $5.00 until a human operator confirms the registration via a 6-digit one-time code sent to their email. This protects against abuse and ensures a real person is accountable for each agent account.

Registration flow
1

Agent calls POST /api/agent/provision

Provides payment method, human operator email, and agent identity.

2

API returns API key immediately

Agent can generate documents at once. Spend is capped at $5.00/month.

3

Operator receives OTP email

A 6-digit code is sent to the human operator email. Expires in 24 hours.

4

Operator verifies at app.bulkrender.com/verify-agent

The email links to a verification page where the human operator enters the code. Spend cap lifts. Agent account is fully operational.

The agent is never blocked. It receives credentials and can work immediately under the $5 cap. Verification simply lifts that cap.

Step 1

Register an Agent

Call POST /api/agent/provision with an email identity for the agent, a Stripe payment method ID, and the human operator's email address.

POST /api/agent/provision
curl -X POST https://api.bulkrender.com/api/agent/provision \
  -H "Content-Type: application/json" \
  -d '{
    "email": "invoice-bot@yourcompany.com",
    "paymentMethodId": "pm_...",
    "humanEmail": "operator@yourcompany.com"
  }'

Request body

Field Type Description
emailstringEmail identity for the agent account. Used to name the agent's organization and its billing profile. Must be unique.
paymentMethodIdstringStripe payment method ID. Collected via Stripe.js on the operator side before calling this endpoint.
humanEmailstringEmail of the human operator responsible for this agent. The OTP is sent here.

Successful response

201 Created
{
  "success": true,
  "data": {
    "apiKey": "br_live_...",
    "orgId": "org_...",
    "credits": 0
  },
  "humanVerificationRequired": true,
  "verificationNotice": "A 6-digit verification code has been sent to the human operator email provided. Usage is capped at $5.00/month until the human operator enters the code at https://app.bulkrender.com/verify-agent (link included in the email)."
}

Store apiKey and orgId immediately.

The API key is shown once in this response. Persist both values somewhere durable that your runtime controls: an environment variable, a config file, or your host's secret store. Conversation context is not storage, chat memory does not survive the session. If the key is lost, a verified operator can request a replacement by email recovery (see FAQ). The orgId is needed for the verification step.

Authenticate all subsequent API calls with:

Request header
X-API-Key: br_live_...
Step 2

Human Verification

After registration, BulkRender emails a 6-digit code to the humanEmail address. The code expires in 24 hours.

The email links to app.bulkrender.com/verify-agent, where the operator enters the code to lift the spend cap. This step must be completed by a human. Programmatic interception or automated submission of the code violates BulkRender's terms of service.

The same verification is also available over the API, for reference:

POST /api/agent/verify-email-otp
curl -X POST https://api.bulkrender.com/api/agent/verify-email-otp \
  -H "Content-Type: application/json" \
  -d '{
    "organizationId": "org_...",
    "otpCode": "847291"
  }'

Response

Status Meaning
200Code accepted. Email verified. Spend cap lifted.
400Invalid or expired code. Check the email for the correct 6-digit code and try again within 24 hours of registration.
500Server error. Retry once before contacting support.

The OTP is deleted after first successful use. A new code cannot be requested via API. Contact support if the code expires before the operator completes verification.

Credits

Add Credits

Agent accounts are credit-based. Add credits at any time by calling POST /api/agent/topup with the API key and a USD amount. Minimum top-up is $1.00.

POST /api/agent/topup
curl -X POST https://api.bulkrender.com/api/agent/topup \
  -H "X-API-Key: br_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "amount": 10 }'

The charge is applied to the payment method on file. Credits are added instantly on successful charge.

DOCX generation costs 1 credit ($0.10). PDF generation costs 2 credits ($0.20). 1 credit = $0.10 USD.

Limits

Spend Limits

State Monthly cap How to change
Unverified$5.00 / monthComplete human verification
Verified$5,000.00 / monthContact support to raise further

Limits are enforced automatically on every charge. The human operator can view current limits and period spend, and request changes, from the BulkRender dashboard after signing in.

FAQ

Frequently Asked Questions

Can the agent verify its own email?

No. The OTP goes to the human operator email, not the agent. Automated retrieval or submission of the OTP violates our terms of service. The whole point is that a real person confirms they are responsible for the agent account.

What happens if the operator never verifies?

The agent continues to operate under the $5.00/month cap indefinitely. It is not suspended. The cap simply stays in place until a human submits the code.

The OTP expired before the operator verified. What now?

Contact support with the orgId. We can issue a new code manually. There is no self-service OTP resend at this time.

The API key is lost. Can it be recovered?

Yes, if human verification is complete. POST the registered agent email to /api/agent/recover-key/request. A one-time recovery link is sent to the verified operator email, valid for 1 hour. Following it issues a new API key and deactivates the old one. Unverified accounts cannot recover keys: contact support with the orgId.

Where does the agent get a Stripe payment method ID?

The payment method must be set up by a human operator before provisioning, using Stripe.js or the Stripe dashboard. Pass the resulting pm_... ID in the provision request. The agent cannot create payment methods autonomously.

Is this the same as using the public MCP walk-in tools (acp_create_session)?

No. Walk-in tools are for one-off pay-per-session document generation with no account. Agent provisioning creates a persistent account with stored credentials, credit balance, and a billing relationship. Use provisioning when the agent needs to operate repeatedly over time.

Can one human operator be responsible for multiple agents?

Yes. The same email can be the humanEmail for multiple provisioned agents. Each agent gets its own API key, orgId, and credit balance.

Ready to start?

Create an account, upload your first template, and generate your first document in under five minutes.