Skip to content

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 pays floor × 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; set false to 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.