API reference
List every model with its price, limits and availability.
GET https://loopling.ai/v1/models
objectenum<string>
Object type.
Available options: list
dataobject[]
Every model on sale, one card each.
idstring
Model ID. Send it as model.
objectenum<string>
Object type.
Available options: model
typeenum<string>
What the model makes.
Available options: video
labelstring
Display name.
endpointstring
Where to submit.
availableboolean
false while the model is paused.
pricingobject
Price per delivered second.
unitenum<string>
Billing unit.
Available options: second
ink_per_secondobject
Ink per second, by resolution.
usd_payg_per_secondobject
Pay-as-you-go USD per second, by resolution.
ink_per_5_second_clipobject
Ink for a 5-second clip, by resolution, after rounding.
notestring
The billing rule in one sentence.
constraintsobject
What a request may ask of this model.
resolutionsstring[]
Resolutions offered.
aspect_ratiosstring[]
Aspect ratios offered.
resolution_ceiling_by_aspectobject
Aspect ratios with a resolution cap, and that cap. Absent when there are none.
duration_secondsobject
Duration range, in whole seconds.
mininteger
Shortest duration.
maxinteger
Longest duration.
referencesobject
Reference caps per generation.
totalinteger
All kinds combined.
imagesinteger
Image references.
videosinteger
Video references.
audiointeger
Audio references.
curl
# The catalogue is public: no key needed.
curl https://loopling.ai/v1/modelsNode
// The catalogue is public: no key needed.
const res = await fetch('https://loopling.ai/v1/models')
const { data } = await res.json()
for (const model of data) console.log(model.id, model.type, model.available, model.pricing)Python
import requests
# The catalogue is public: no key needed.
res = requests.get("https://loopling.ai/v1/models")
for model in res.json()["data"]:
print(model["id"], model["type"], model["available"], model["pricing"]){
"object": "list",
"data": [
{
"id": "seedance-2.5",
"object": "model",
"type": "video",
"label": "Seedance 2.5",
"endpoint": "/v1/video/generations",
"available": true,
"pricing": {
"unit": "second",
"ink_per_second": {
"480p": 11.6,
"720p": 26,
"1080p": 64
},
"usd_payg_per_second": {
"480p": 0.116,
"720p": 0.26,
"1080p": 0.64
},
"ink_per_5_second_clip": {
"480p": 58,
"720p": 130,
"1080p": 320
},
"note": "Billed once per clip on the delivered seconds, rounded up to the whole Ink. 1 Ink = $0.01 pay-as-you-go."
},
"constraints": {
"resolutions": [
"480p",
"720p",
"1080p"
],
"aspect_ratios": [
"21:9",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16",
"adaptive"
],
"resolution_ceiling_by_aspect": {
"9:16": "720p",
"adaptive": "720p"
},
"duration_seconds": {
"min": 4,
"max": 30
},
"references": {
"total": 50,
"images": 30,
"videos": 10,
"audio": 10
}
}
},
{
"id": "seedance-2.0",
"object": "model",
"type": "video",
"label": "Seedance 2.0",
"endpoint": "/v1/video/generations",
"available": true,
"pricing": {
"unit": "second",
"ink_per_second": {
"480p": 7.9,
"720p": 17,
"1080p": 42.1
},
"usd_payg_per_second": {
"480p": 0.079,
"720p": 0.17,
"1080p": 0.421
},
"ink_per_5_second_clip": {
"480p": 40,
"720p": 86,
"1080p": 211
},
"note": "Billed once per clip on the delivered seconds, rounded up to the whole Ink. 1 Ink = $0.01 pay-as-you-go."
},
"constraints": {
"resolutions": [
"480p",
"720p",
"1080p"
],
"aspect_ratios": [
"21:9",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16",
"adaptive"
],
"duration_seconds": {
"min": 4,
"max": 15
},
"references": {
"total": 12,
"images": 9,
"videos": 3,
"audio": 3
}
}
},
{
"id": "seedance-2.0-fast",
"object": "model",
"type": "video",
"label": "Seedance 2.0 Fast",
"endpoint": "/v1/video/generations",
"available": true,
"pricing": {
"unit": "second",
"ink_per_second": {
"480p": 6.3,
"720p": 13.6
},
"usd_payg_per_second": {
"480p": 0.063,
"720p": 0.136
},
"ink_per_5_second_clip": {
"480p": 32,
"720p": 69
},
"note": "Billed once per clip on the delivered seconds, rounded up to the whole Ink. 1 Ink = $0.01 pay-as-you-go."
},
"constraints": {
"resolutions": [
"480p",
"720p"
],
"aspect_ratios": [
"21:9",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16",
"adaptive"
],
"duration_seconds": {
"min": 4,
"max": 15
},
"references": {
"total": 12,
"images": 9,
"videos": 3,
"audio": 3
}
}
}
]
}Public: no key needed. Only models on sale are listed.
available is false while a model is paused. A submit to a paused model answers 503 provider_unavailable; retry after Retry-After.
Prices are per delivered second: pricing.ink_per_second and pricing.usd_payg_per_second, by resolution. The same figures as a table: Models & pricing.
loopling.ai · grows with you, grows itself
hello@loopling.ai · for agents · community · pricing · Enterprise · API · privacy · terms