CastTool Hilfe
API

API-Referenz

Alle Endpunkte, Parameter und Antworten der API, erzeugt aus der OpenAPI-Beschreibung.

Diese Seite entsteht beim Build aus derselben Beschreibung, die GET /v1/openapi.json ausliefert. Sie kann deshalb nicht von der API abweichen. Zusammenfassungen und Feldbeschreibungen sind Englisch wie die API selbst. Wie Schlüssel, Rechte, Seiten und Fehler funktionieren, steht unter Einstieg.

Adresse: https://api.casttool.net

Maschinenlesbare Beschreibung (OpenAPI 3.1): https://api.casttool.net/v1/openapi.json

Endpunkte

GET /v1/me

Tenant and scopes of the API key in use

Recht des Schlüssels: jeder gültige Schlüssel

Antworten

  • 200 Tenant and scopes of the API key in use Me
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 429 Too many requests Error

GET /v1/models

List models, ordered by id

Recht des Schlüssels: models:read

Parameter

FeldOrtTypPflichtHinweise
limitqueryintegerNumber of items on one page · default 50, minimum 1, maximum 100
cursorquerystring`nextCursor` of the previous page
statusquery"active" | "inactive"Only models with this status

Antworten

  • 200 List models, ordered by id ModelPage
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 429 Too many requests Error

POST /v1/models

Create a model. It starts inactive and is published in the dashboard.

Recht des Schlüssels: models:write

Inhalt der Anfrage (JSON)

FeldTypPflichtHinweise
firstNamestringjaminLength 1, maxLength 100
lastNamestringjaminLength 1, maxLength 100
emailstring (email)jamaxLength 254
mobilestring | nullmaxLength 50
landlinestring | nullmaxLength 50
addressstring | nullmaxLength 500
dateOfBirthstring (date) | null
genderstring | nullmaxLength 200
pronounsstring | nullmaxLength 200
categorystring | nullmaxLength 200
bodyTypestring | nullmaxLength 200
eyeColorstring | nullmaxLength 200
hairColorstring | nullmaxLength 200
ethnicIdentitystring | nullmaxLength 200
hasDriverLicenseboolean
specialFeaturesstring | nullmaxLength 5000
currentLocationstring[]maxItems 100
dialectsstring[]maxItems 100
ethnicOriginsstring[]maxItems 100
languagesstring[]maxItems 100
nationalitiesstring[]maxItems 100
previousClientsstring[]maxItems 100
talentsstring[]maxItems 100
measurementsobject
measurements.heightstring | numbermaxLength 40
measurements.weightstring | numbermaxLength 40
measurements.buststring | numbermaxLength 40
measurements.waiststring | numbermaxLength 40
measurements.hipstring | numbermaxLength 40
measurements.shoeSizestring | numbermaxLength 40
measurements.dressSizestring | numbermaxLength 40
measurements.jeansSizestring | numbermaxLength 40
socialMediaobject
socialMedia.instagramstringmaxLength 300
socialMedia.tiktokstringmaxLength 300
socialMedia.youtubestringmaxLength 300
socialMedia.twitchstringmaxLength 300

Antworten

  • 201 Create a model. It starts inactive and is published in the dashboard. Without the scope `models:read` the response is `ModelWriteReceipt`. ModelResponse | ModelWriteReceipt
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 402 The subscription only allows reading Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 409 The address is already registered in this tenant Error
  • 429 Too many requests Error

GET /v1/models/{id}

Read one model

Recht des Schlüssels: models:read

Parameter

FeldOrtTypPflichtHinweise
idpathstringjaIdentifier of the resource

Antworten

  • 200 Read one model ModelResponse
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 404 Not found in this tenant Error
  • 429 Too many requests Error

PATCH /v1/models/{id}

Change the profile of a model. Status and visibility stay in the dashboard. A date of birth under 18 takes a public profile offline until a parent has given consent.

Recht des Schlüssels: models:write

Parameter

FeldOrtTypPflichtHinweise
idpathstringjaIdentifier of the resource

Inhalt der Anfrage (JSON)

FeldTypPflichtHinweise
firstNamestringminLength 1, maxLength 100
lastNamestringminLength 1, maxLength 100
emailstring (email)maxLength 254
mobilestring | nullmaxLength 50
landlinestring | nullmaxLength 50
addressstring | nullmaxLength 500
dateOfBirthstring (date) | null
genderstring | nullmaxLength 200
pronounsstring | nullmaxLength 200
categorystring | nullmaxLength 200
bodyTypestring | nullmaxLength 200
eyeColorstring | nullmaxLength 200
hairColorstring | nullmaxLength 200
ethnicIdentitystring | nullmaxLength 200
hasDriverLicenseboolean
specialFeaturesstring | nullmaxLength 5000
currentLocationstring[]maxItems 100
dialectsstring[]maxItems 100
ethnicOriginsstring[]maxItems 100
languagesstring[]maxItems 100
nationalitiesstring[]maxItems 100
previousClientsstring[]maxItems 100
talentsstring[]maxItems 100
measurementsobject
measurements.heightstring | numbermaxLength 40
measurements.weightstring | numbermaxLength 40
measurements.buststring | numbermaxLength 40
measurements.waiststring | numbermaxLength 40
measurements.hipstring | numbermaxLength 40
measurements.shoeSizestring | numbermaxLength 40
measurements.dressSizestring | numbermaxLength 40
measurements.jeansSizestring | numbermaxLength 40
socialMediaobject
socialMedia.instagramstringmaxLength 300
socialMedia.tiktokstringmaxLength 300
socialMedia.youtubestringmaxLength 300
socialMedia.twitchstringmaxLength 300

Antworten

  • 200 Change the profile of a model. Status and visibility stay in the dashboard. A date of birth under 18 takes a public profile offline until a parent has given consent. Without the scope `models:read` the response is `ModelWriteReceipt`. ModelResponse | ModelWriteReceipt
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 402 The subscription only allows reading Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 404 Not found in this tenant Error
  • 409 The address is already registered in this tenant Error
  • 429 Too many requests Error

GET /v1/inquiries

List inquiries, ordered by id

Recht des Schlüssels: inquiries:read

Parameter

FeldOrtTypPflichtHinweise
limitqueryintegerNumber of items on one page · default 50, minimum 1, maximum 100
cursorquerystring`nextCursor` of the previous page
statusquery"open" | "accepted" | "rejected" | "booked"Only inquiries with this status

Antworten

  • 200 List inquiries, ordered by id InquiryPage
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 429 Too many requests Error

GET /v1/inquiries/{id}

Read one inquiry

Recht des Schlüssels: inquiries:read

Parameter

FeldOrtTypPflichtHinweise
idpathstringjaIdentifier of the resource

Antworten

  • 200 Read one inquiry InquiryResponse
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 404 Not found in this tenant Error
  • 429 Too many requests Error

GET /v1/bookings

List confirmed bookings, ordered by id

Recht des Schlüssels: bookings:read

Parameter

FeldOrtTypPflichtHinweise
limitqueryintegerNumber of items on one page · default 50, minimum 1, maximum 100
cursorquerystring`nextCursor` of the previous page

Antworten

  • 200 List confirmed bookings, ordered by id BookingPage
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 429 Too many requests Error

GET /v1/bookings/{id}

Read one confirmed booking

Recht des Schlüssels: bookings:read

Parameter

FeldOrtTypPflichtHinweise
idpathstringjaIdentifier of the resource

Antworten

  • 200 Read one confirmed booking BookingResponse
  • 400 Invalid input Error
  • 401 Missing, unknown, revoked or expired API key Error
  • 403 The key lacks the scope, or the tenant is suspended Error
  • 404 Not found in this tenant Error
  • 429 Too many requests Error

Antworten im Detail

Error

FeldTypPflichtHinweise
errorobjectja
error.codestringjaStable, machine-readable reason
error.messagestringja
error.issuesobject[]Only for `validation_failed`
error.issues[].pathstringja
error.issues[].messagestringja

Me

FeldTypPflichtHinweise
tenantobjectja
tenant.idstring (uuid)ja
tenant.slugstringja
tenant.namestringja
tenant.kind"agency" | "casting"ja
keyobjectja
key.idstringja
key.scopes"models:read" | "models:private" | "models:write" | "inquiries:read" | "bookings:read"[]ja

ModelPage

FeldTypPflichtHinweise
dataobject[]ja
data[].idstringja
data[].firstNamestringja
data[].lastNamestringja
data[].status"active" | "inactive"ja
data[].isPublicbooleanja
data[].featuredbooleanja
data[].categorystring | nullja
data[].ageinteger | nulljaOnly for public models
data[].genderstring | nullja
data[].pronounsstring | nullja
data[].bodyTypestring | nullja
data[].eyeColorstring | nullja
data[].hairColorstring | nullja
data[].hasDriverLicensebooleanja
data[].specialFeaturesstring | nullja
data[].currentLocationstring[]ja
data[].languagesstring[]ja
data[].dialectsstring[]ja
data[].nationalitiesstring[]ja
data[].talentsstring[]ja
data[].previousClientsstring[]ja
data[].measurementsobjectja
data[].measurements.heightstring
data[].measurements.weightstring
data[].measurements.buststring
data[].measurements.waiststring
data[].measurements.hipstring
data[].measurements.shoeSizestring
data[].measurements.dressSizestring
data[].measurements.jeansSizestring
data[].socialMediaobjectja
data[].socialMedia.instagramstring
data[].socialMedia.tiktokstring
data[].socialMedia.youtubestring
data[].socialMedia.twitchstring
data[].imagesobjectjaPublished images only. Files waiting for approval have no address here.
data[].images.profileImagestring (uri) | nullja
data[].images.galleryImagesstring (uri)[]ja
data[].privateobjectOnly with the scope `models:private`
data[].private.emailstring | nullja
data[].private.mobilestring | nullja
data[].private.landlinestring | nullja
data[].private.addressstring | nullja
data[].private.dateOfBirthstring | nullja
data[].private.ethnicIdentitystring | nullja
data[].private.ethnicOriginsstring[]ja
data[].createdAtstring (date-time)ja
data[].updatedAtstring (date-time)ja
nextCursorstring | nulljaPass as `cursor` for the next page, null on the last one

ModelResponse

FeldTypPflichtHinweise
modelobjectja
model.idstringja
model.firstNamestringja
model.lastNamestringja
model.status"active" | "inactive"ja
model.isPublicbooleanja
model.featuredbooleanja
model.categorystring | nullja
model.ageinteger | nulljaOnly for public models
model.genderstring | nullja
model.pronounsstring | nullja
model.bodyTypestring | nullja
model.eyeColorstring | nullja
model.hairColorstring | nullja
model.hasDriverLicensebooleanja
model.specialFeaturesstring | nullja
model.currentLocationstring[]ja
model.languagesstring[]ja
model.dialectsstring[]ja
model.nationalitiesstring[]ja
model.talentsstring[]ja
model.previousClientsstring[]ja
model.measurementsobjectja
model.measurements.heightstring
model.measurements.weightstring
model.measurements.buststring
model.measurements.waiststring
model.measurements.hipstring
model.measurements.shoeSizestring
model.measurements.dressSizestring
model.measurements.jeansSizestring
model.socialMediaobjectja
model.socialMedia.instagramstring
model.socialMedia.tiktokstring
model.socialMedia.youtubestring
model.socialMedia.twitchstring
model.imagesobjectjaPublished images only. Files waiting for approval have no address here.
model.images.profileImagestring (uri) | nullja
model.images.galleryImagesstring (uri)[]ja
model.privateobjectOnly with the scope `models:private`
model.private.emailstring | nullja
model.private.mobilestring | nullja
model.private.landlinestring | nullja
model.private.addressstring | nullja
model.private.dateOfBirthstring | nullja
model.private.ethnicIdentitystring | nullja
model.private.ethnicOriginsstring[]ja
model.createdAtstring (date-time)ja
model.updatedAtstring (date-time)ja

ModelWriteReceipt

FeldTypPflichtHinweise
modelobjectjaWithout the scope `models:read` only id and timestamp, the profile stays unreadable
model.idstringja
model.updatedAtstring (date-time)ja

InquiryPage

FeldTypPflichtHinweise
dataobject[]ja
data[].idstringja
data[].status"open" | "accepted" | "rejected" | "booked"ja
data[].offerStatus"pending" | "accepted" | "rejected" | nullja
data[].namestring | nullja
data[].emailstring | nullja
data[].phonestring | nullja
data[].companystring | nullja
data[].contactPersonstring | nullja
data[].projectstring | nullja
data[].categorystring | nullja
data[].typestring | nullja
data[].poNumberstring | nullja
data[].budgetobjectja
data[].budget.dailyFeestring | nullja
data[].budget.travelAndFittingstring | nullja
data[].budget.overtimestring | nullja
data[].budget.buyoutstring | nullja
data[].fittingDateobjectja
data[].fittingDate.datestring | nullja
data[].fittingDate.locationstring | nullja
data[].fittingDate.descriptionstring | nullja
data[].recallDateobjectja
data[].recallDate.datestring | nullja
data[].recallDate.locationstring | nullja
data[].recallDate.descriptionstring | nullja
data[].shootingDatesobject[]ja
data[].shootingDates[].datestring | nullja
data[].shootingDates[].locationstring | nullja
data[].shootingDates[].descriptionstring | nullja
data[].modelsobject[]ja
data[].models[].idstringja
data[].models[].namestringja
data[].models[].responseStatus"pending" | "available" | "tentative" | "booked" | "unavailable"ja
data[].models[].respondedAtstring (date-time) | nullja
data[].createdAtstring (date-time)ja
data[].updatedAtstring (date-time)ja
nextCursorstring | nulljaPass as `cursor` for the next page, null on the last one

InquiryResponse

FeldTypPflichtHinweise
inquiryobjectja
inquiry.idstringja
inquiry.status"open" | "accepted" | "rejected" | "booked"ja
inquiry.offerStatus"pending" | "accepted" | "rejected" | nullja
inquiry.namestring | nullja
inquiry.emailstring | nullja
inquiry.phonestring | nullja
inquiry.companystring | nullja
inquiry.contactPersonstring | nullja
inquiry.projectstring | nullja
inquiry.categorystring | nullja
inquiry.typestring | nullja
inquiry.poNumberstring | nullja
inquiry.budgetobjectja
inquiry.budget.dailyFeestring | nullja
inquiry.budget.travelAndFittingstring | nullja
inquiry.budget.overtimestring | nullja
inquiry.budget.buyoutstring | nullja
inquiry.fittingDateobjectja
inquiry.fittingDate.datestring | nullja
inquiry.fittingDate.locationstring | nullja
inquiry.fittingDate.descriptionstring | nullja
inquiry.recallDateobjectja
inquiry.recallDate.datestring | nullja
inquiry.recallDate.locationstring | nullja
inquiry.recallDate.descriptionstring | nullja
inquiry.shootingDatesobject[]ja
inquiry.shootingDates[].datestring | nullja
inquiry.shootingDates[].locationstring | nullja
inquiry.shootingDates[].descriptionstring | nullja
inquiry.modelsobject[]ja
inquiry.models[].idstringja
inquiry.models[].namestringja
inquiry.models[].responseStatus"pending" | "available" | "tentative" | "booked" | "unavailable"ja
inquiry.models[].respondedAtstring (date-time) | nullja
inquiry.createdAtstring (date-time)ja
inquiry.updatedAtstring (date-time)ja

BookingPage

FeldTypPflichtHinweise
dataobject[]ja
data[].idstringja
data[].inquiryIdstringja
data[].termsobjectja
data[].terms.dailyFeestring | nullja
data[].terms.travelAndFittingstring | nullja
data[].terms.overtimestring | nullja
data[].terms.buyoutstring | nullja
data[].modelsobject[]ja
data[].models[].idstringja
data[].models[].namestringja
data[].confirmedAtstring (date-time)ja
nextCursorstring | nulljaPass as `cursor` for the next page, null on the last one

BookingResponse

FeldTypPflichtHinweise
bookingobjectja
booking.idstringja
booking.inquiryIdstringja
booking.termsobjectja
booking.terms.dailyFeestring | nullja
booking.terms.travelAndFittingstring | nullja
booking.terms.overtimestring | nullja
booking.terms.buyoutstring | nullja
booking.modelsobject[]ja
booking.models[].idstringja
booking.models[].namestringja
booking.confirmedAtstring (date-time)ja