Skip to documentation
Profiles & rentalsRentals

Rentals

Methods, permissions, request fields and response schemas for rentals.

Read and search

Retrieve current records, history and status.

List provider rentalsFind your organization's rentals and inspect their current booking summaries.GET/agent-profiles/bookings
Token scope rentals:readActor permission memberAction type read

Pagination: Default 50, maximum 100. Follow nextCursor with the same search, tenant and resource until null. Creation cutoff excludes later inserts; mutable fields may change between pages. Unsupported search returns 400.

Query parameters

FieldTypeDescription and constraints
limitOptionalintegerMinimum 1 · Maximum 100 · Default: 50
cursorOptionalstringAt least 1 characters · At most 768 characters
searchOptionalstringAt least 0 characters · At most 200 characters
Explore this request

Edit example fields and validate the request against its schema.

What you receive

{data: bounded bookings summaries[], nextCursor: string | null}. Fetch detail endpoints for full records.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X GET "$BASE/agent-profiles/bookings?limit=50" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN"
Success response schema · HTTP 200
{
  "application/json": {
    "schema": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "agentProfileId": {
                "type": "string",
                "format": "uuid"
              },
              "clientUserId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "clientId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "isManual": {
                "type": "boolean"
              },
              "manualClientName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "completed",
                  "cancelled"
                ]
              },
              "paymentStatus": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "pending",
                  "active",
                  "past_due",
                  "cancelled",
                  "incomplete",
                  null
                ]
              },
              "priceInCents": {
                "type": "integer"
              },
              "pricingPeriod": {
                "type": "string",
                "enum": [
                  "day",
                  "week",
                  "month"
                ]
              },
              "startDate": {
                "type": "string",
                "format": "date-time"
              },
              "endDate": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              },
              "currentPeriodEnd": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              },
              "cancelledAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              },
              "serviceFeeInCents": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ownerPriceInCents": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "payoutMethod": {
                "type": "string",
                "enum": [
                  "fiat",
                  "crypto"
                ]
              },
              "profileName": {
                "type": "string"
              },
              "clientName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "clientEmail": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "agentProfileId",
              "clientUserId",
              "clientId",
              "isManual",
              "manualClientName",
              "status",
              "paymentStatus",
              "priceInCents",
              "pricingPeriod",
              "startDate",
              "endDate",
              "currentPeriodEnd",
              "cancelledAt",
              "serviceFeeInCents",
              "ownerPriceInCents",
              "payoutMethod",
              "profileName",
              "clientName",
              "clientEmail",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          },
          "maxItems": 100,
          "minItems": 0
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 1,
          "maxLength": 768
        }
      },
      "required": [
        "data",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

Lifecycle and actions

Manage transitions, delivery and provider workflows.

Record an off-platform rentalRecord a rental agreed outside the platform, without charging the client.POST/agent-profiles/bookings/manual
Token scope rentals:writeActor permission managerAction type write

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Before you use it

This records a rental; it does not charge a customer or produce a paid invoice.

Request body

FieldTypeDescription and constraints
agentProfileIdRequiredstring · uuid
priceInCentsRequiredintegerMinimum 0 · Maximum 9007199254740991
startDateRequiredstring · date-time
endDateOptionalstring | null · date-time
clientIdOptionalstring · uuid
clientNameOptionalstringAt least 0 characters · At most 120 characters
Explore this request

Edit example fields and validate the request against its schema.

What you receive

Created manual booking. clientId is preferred; clientName is a legacy fallback.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/bookings/manual" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY" \
  -H "Content-Type: application/json" \
  --data '{"agentProfileId":"923ee3b1-2b21-4ce3-8c2c-679e22867541","clientName":"Example client","priceInCents":5000,"startDate":"2026-10-11T10:00:00Z"}'
Full JSON request schema
{
  "type": "object",
  "properties": {
    "agentProfileId": {
      "type": "string",
      "format": "uuid"
    },
    "priceInCents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "startDate": {
      "type": "string",
      "format": "date-time"
    },
    "endDate": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "clientId": {
      "type": "string",
      "format": "uuid"
    },
    "clientName": {
      "type": "string",
      "minLength": 0,
      "maxLength": 120
    }
  },
  "required": [
    "agentProfileId",
    "priceInCents",
    "startDate"
  ],
  "additionalProperties": false
}
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "clientUserId": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid"
        },
        "agentProfileId": {
          "type": "string",
          "format": "uuid"
        },
        "isManual": {
          "type": "boolean"
        },
        "manualClientName": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "clientId": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid"
        },
        "status": {
          "type": "string",
          "enum": [
            "active",
            "completed",
            "cancelled"
          ]
        },
        "priceInCents": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "pricingPeriod": {
          "type": "string",
          "enum": [
            "day",
            "week",
            "month"
          ]
        },
        "startDate": {
          "type": "string",
          "format": "date-time"
        },
        "endDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "notes": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "usagePurpose": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "stripeSubscriptionId": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "stripeSubscriptionItemId": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "stripeCheckoutSessionId": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "paymentStatus": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "serviceFeeInCents": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "ownerPriceInCents": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "payoutMethod": {
          "type": "string",
          "enum": [
            "fiat",
            "crypto"
          ]
        },
        "currentPeriodEnd": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "cancelledAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "cancelledBy": {
          "type": [
            "string",
            "null"
          ],
          "minLength": 0,
          "maxLength": 5000
        },
        "refundedAmountCents": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "refundedAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "previousAgentProfileId": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid"
        },
        "swappedAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "id",
        "clientUserId",
        "agentProfileId",
        "isManual",
        "manualClientName",
        "clientId",
        "status",
        "priceInCents",
        "pricingPeriod",
        "startDate",
        "endDate",
        "notes",
        "usagePurpose",
        "stripeSubscriptionId",
        "stripeSubscriptionItemId",
        "stripeCheckoutSessionId",
        "paymentStatus",
        "serviceFeeInCents",
        "ownerPriceInCents",
        "payoutMethod",
        "currentPeriodEnd",
        "cancelledAt",
        "cancelledBy",
        "refundedAmountCents",
        "refundedAt",
        "previousAgentProfileId",
        "swappedAt",
        "createdAt",
        "updatedAt"
      ],
      "additionalProperties": true
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

End a manual bookingClose a manual booking; paid Stripe rentals use their own lifecycle actions.POST/agent-profiles/bookings/:id/end-manual
Token scope rentals:writeActor permission managerAction type write

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

Edit example fields and validate the request against its schema.

What you receive

Ended manual booking; a paid Stripe rental cannot use this action.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/bookings/$ID/end-manual" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY"
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        }
      },
      "required": [
        "success"
      ],
      "additionalProperties": false
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

Cancel a provider rentalSchedule cancellation at renewal or request an immediate rental end.POST/agent-profiles/:id/cancel-rental
Token scope rentals:writeActor permission memberAction type financial

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Before you use it

scheduled cancels at renewal; immediate ends and follows service refund rules; release ends without refund. past_due Stripe rentals end immediately without refund. Existing organization/profile permission checks apply.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Request body

FieldTypeDescription and constraints
modeOptionalstringOne of: "scheduled", "immediate", "release" · Default: "scheduled"
Explore this request

Edit example fields and validate the request against its schema.

What you receive

Rental cancellation result.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/$ID/cancel-rental" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY" \
  -H "Content-Type: application/json" \
  --data '{}'
Full JSON request schema
{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "scheduled",
        "immediate",
        "release"
      ],
      "default": "scheduled"
    }
  },
  "required": [],
  "additionalProperties": false
}
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid"
            },
            "clientUserId": {
              "type": [
                "string",
                "null"
              ],
              "format": "uuid"
            },
            "agentProfileId": {
              "type": "string",
              "format": "uuid"
            },
            "isManual": {
              "type": "boolean"
            },
            "manualClientName": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "clientId": {
              "type": [
                "string",
                "null"
              ],
              "format": "uuid"
            },
            "status": {
              "type": "string",
              "enum": [
                "active",
                "completed",
                "cancelled"
              ]
            },
            "priceInCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "pricingPeriod": {
              "type": "string",
              "enum": [
                "day",
                "week",
                "month"
              ]
            },
            "startDate": {
              "type": "string",
              "format": "date-time"
            },
            "endDate": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time"
            },
            "notes": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "usagePurpose": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "stripeSubscriptionId": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "stripeSubscriptionItemId": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "stripeCheckoutSessionId": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "paymentStatus": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "serviceFeeInCents": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "ownerPriceInCents": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "payoutMethod": {
              "type": "string",
              "enum": [
                "fiat",
                "crypto"
              ]
            },
            "currentPeriodEnd": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time"
            },
            "cancelledAt": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time"
            },
            "cancelledBy": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 0,
              "maxLength": 5000
            },
            "refundedAmountCents": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "refundedAt": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time"
            },
            "previousAgentProfileId": {
              "type": [
                "string",
                "null"
              ],
              "format": "uuid"
            },
            "swappedAt": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time"
            },
            "createdAt": {
              "type": "string",
              "format": "date-time"
            },
            "updatedAt": {
              "type": "string",
              "format": "date-time"
            }
          },
          "required": [
            "id",
            "clientUserId",
            "agentProfileId",
            "isManual",
            "manualClientName",
            "clientId",
            "status",
            "priceInCents",
            "pricingPeriod",
            "startDate",
            "endDate",
            "notes",
            "usagePurpose",
            "stripeSubscriptionId",
            "stripeSubscriptionItemId",
            "stripeCheckoutSessionId",
            "paymentStatus",
            "serviceFeeInCents",
            "ownerPriceInCents",
            "payoutMethod",
            "currentPeriodEnd",
            "cancelledAt",
            "cancelledBy",
            "refundedAmountCents",
            "refundedAt",
            "previousAgentProfileId",
            "swappedAt",
            "createdAt",
            "updatedAt"
          ],
          "additionalProperties": true
        },
        {
          "type": "object",
          "properties": {
            "message": {
              "type": "string",
              "minLength": 0,
              "maxLength": 5000
            }
          },
          "required": [
            "message"
          ],
          "additionalProperties": true
        }
      ]
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

Resume provider-scheduled renewalResume a renewal that the provider previously scheduled for cancellation.POST/agent-profiles/:id/resume-rental
Token scope rentals:writeActor permission memberAction type write

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

Edit example fields and validate the request against its schema.

What you receive

Resumed Stripe subscription; client-scheduled cancellation can only be resumed by the client.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/$ID/resume-rental" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY"
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "minLength": 0,
          "maxLength": 5000
        }
      },
      "required": [
        "message"
      ],
      "additionalProperties": true
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

Relist a manually rented profileEnd a manually rented profile and update its availability.POST/agent-profiles/:id/end-manual-rental
Token scope rentals:writeActor permission managerAction type write

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

Edit example fields and validate the request against its schema.

What you receive

Ended manual rental and profile availability; rejects a paid Stripe rental.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/$ID/end-manual-rental" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY"
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        }
      },
      "required": [
        "success"
      ],
      "additionalProperties": false
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

Replace the profile in a rentalReplace a rented profile with an accessible same-price profile in your organization.POST/agent-profiles/:id/swap-rental
Token scope rentals:writeActor permission memberAction type write

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Before you use it

No new customer charge. If no active rental exists the legacy service may return a message instead of a booking.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Request body

FieldTypeDescription and constraints
newProfileIdRequiredstring · uuid
Explore this request

Edit example fields and validate the request against its schema.

What you receive

Replacement rental result. Both profiles must be accessible, in the same organization and have the same price.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/$ID/swap-rental" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY" \
  -H "Content-Type: application/json" \
  --data '{"newProfileId":"923ee3b1-2b21-4ce3-8c2c-679e22867541"}'
Full JSON request schema
{
  "type": "object",
  "properties": {
    "newProfileId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "newProfileId"
  ],
  "additionalProperties": false
}
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "message": {
              "type": "string",
              "minLength": 0,
              "maxLength": 5000
            }
          },
          "required": [
            "message"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "message": {
              "type": "string",
              "minLength": 0,
              "maxLength": 5000
            },
            "bookingId": {
              "type": "string",
              "format": "uuid"
            },
            "newProfileId": {
              "type": "string",
              "format": "uuid"
            },
            "previousProfileId": {
              "type": "string",
              "format": "uuid"
            }
          },
          "required": [
            "message",
            "bookingId",
            "newProfileId",
            "previousProfileId"
          ],
          "additionalProperties": true
        }
      ]
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.

Apply a goodwill rental creditCalculate a goodwill monetary credit for days of service; the renewal date stays the same.POST/agent-profiles/:id/extend-rental
Token scope rentals:writeActor permission memberAction type financial

This action needs separately enabled financial automation. Check deployed capabilities before using it; its scope may be unavailable in the token picker.

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Before you use it

Calculates a monetary credit for 1–30 days. It does not move the subscription renewal date. No active rental can return a service message.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Request body

FieldTypeDescription and constraints
daysRequiredintegerMinimum 1 · Maximum 30
Explore this request

Edit example fields and validate the request against its schema.

What you receive

Goodwill monetary credit result.

Request example · cURL

Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.

curl -X POST "$BASE/agent-profiles/$ID/extend-rental" \
  -H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
  -H "Idempotency-Key: $ACTION_KEY" \
  -H "Content-Type: application/json" \
  --data '{"days":1}'
Full JSON request schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "required": [
    "days"
  ],
  "additionalProperties": false
}
Success response schema · HTTP 201
{
  "application/json": {
    "schema": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "message": {
              "type": "string",
              "minLength": 0,
              "maxLength": 5000
            }
          },
          "required": [
            "message"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "message": {
              "type": "string",
              "minLength": 0,
              "maxLength": 5000
            },
            "bookingId": {
              "type": "string",
              "format": "uuid"
            },
            "days": {
              "type": "integer",
              "minimum": 1,
              "maximum": 30
            },
            "creditCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            }
          },
          "required": [
            "message",
            "bookingId",
            "days",
            "creditCents"
          ],
          "additionalProperties": true
        }
      ]
    }
  }
}
Errors and recovery
400
Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401
Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403
Token scope or actor capability denied, disabled/banned account, or action unavailable.
404
Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409
Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410
event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422
Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429
API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500
Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503
Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.

These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.

Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.