For creators
Turn a Civitai model you own into a paid API endpoint. One page, four steps.
1. Claim your model
# preview what we see (license, size, family hint) before committing
curl -X POST -H "Authorization: Bearer $EPM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"civitai_url": "https://civitai.com/models/1234?modelVersionId=5678"}' \
https://epm-router.uridemay.workers.dev/v1/models/preview
# submit — this returns a one-time verification code
curl -X POST -H "Authorization: Bearer $EPM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"civitai_url": "https://civitai.com/models/1234?modelVersionId=5678"}' \
https://epm-router.uridemay.workers.dev/v1/models
Paste the returned code anywhere in your model's description on Civitai, then:
curl -X POST -H "Authorization: Bearer $EPM_API_KEY" \
https://epm-router.uridemay.workers.dev/v1/onboarding-requests/{id}/verify
That's the ownership proof — only the account that controls the listing can complete it. You can remove the code afterwards. Requirements: the model must be safetensors with a permissive commercial license (Rent/Sell on Civitai); checkpoints are render-verified, LoRAs structurally verified. If onboarding rejects, the rejection code says exactly why.
2. List it and set your price
curl -X PATCH -H "Authorization: Bearer $EPM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"listed": true, "price_multiplier": 2.0, "composable": true}' \
https://epm-router.uridemay.workers.dev/v1/models/{model_id}/listing
price_multiplier(k ≥ 1): every third-party render paysfloor × k; the spread above the floor is yours. You can change it any time.composable: whether builders may include your asset in compositions they create. You're paid your spread either way; setfalseto opt out of third-party stacks.- Unlisting stops new third-party usage immediately. Your model, your switch.
3. Watch it earn
GET /v1/earnings itemizes every render of your assets — including your
spread from other people's composed endpoints. Your public card lives at
/v1/cards/{your_slug}/{model_slug} with live pricing and provenance.
4. Get paid
Connect a Stripe Express account (POST /v1/payouts/connect), then
request a payout of your matured balance:
curl -X POST -H "Authorization: Bearer $EPM_API_KEY" \
https://epm-router.uridemay.workers.dev/v1/payouts/request
Earnings mature 30 days after the render (refund window). A requested
payout shows processing while it clears review, then paid — track
status with GET /v1/payouts.