> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ordergroove.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ordergroove.com/_mcp/server.

# Post Entitlements Entitlement Public Id Modify Expiration

POST https://restapi.ordergroove.com/entitlements/{entitlement.public_id}/modify_expiration/
Content-Type: application/json



Reference: https://docs.ordergroove.com/reference/entitlements-service-api/entitlements/post-entitlements-entitlement-public-id-modify-expiration

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ordergroove-entitlements-service-api
  version: 1.0.0
paths:
  /entitlements/{entitlement.public_id}/modify_expiration/:
    post:
      operationId: post-entitlements-entitlement-public-id-modify-expiration
      summary: Post Entitlements Entitlement Public Id Modify Expiration
      description: ''
      tags:
        - entitlements
      parameters:
        - name: entitlement.public_id
          in: path
          description: Public_id of entitlement
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Entitlements_post_entitlements-entitlement-public-id-modify-expiration_Response_200
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                expiration:
                  type: string
                  format: date
                  description: >-
                    New expiration date (YYYY-MM-DD) of entitlement. Cannot be
                    past date.
              required:
                - expiration
servers:
  - url: https://restapi.ordergroove.com
    description: https://restapi.ordergroove.com
components:
  schemas:
    Entitlements_post_entitlements-entitlement-public-id-modify-expiration_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: >-
        Entitlements_post_entitlements-entitlement-public-id-modify-expiration_Response_200

```

## Examples



**Request**

```json
{
  "expiration": "2023-01-15"
}
```

**Response**

```json
{
  "results": {
    "entitlement_transaction": {
      "transaction_type": "modify_expiration",
      "public_id": "71a591cb40be4985ab9ce2746329c865",
      "entitlement_public_id": "6bba77e50a244f818f32f17e2da5aed8",
      "merchant_user_id": "23773486874988",
      "resource_public_id": "450a64bf72024d99998f6c7541fefa42",
      "merchant_public_id": "80c9a167fb434fa0abe215c7f19a86cc",
      "transaction_initiation_time": "2026-03-11T18:51:45.520224856Z",
      "transaction_execution_time": "2026-03-11T18:51:45.520224856Z",
      "source_action": "api-call",
      "source_object": "user",
      "source_object_id": "dd0756ea-f502-4292-931e-b48f26677ef9_2026-03-11T18:51:45.520224856Z",
      "access_type": "time_based",
      "grace_period": 0,
      "expiration": "2028-03-01T23:59:59Z",
      "grace_period_expiration": "2028-03-01T23:59:59Z"
    },
    "entitlement": {
      "merchant": "80c9a167fb434fa0abe215c7f19a86cc",
      "public_id": "6bba77e50a244f818f32f17e2da5aed8",
      "merchant_user_id": "23773486874988",
      "initial_activation_date": null,
      "latest_activation_date": null,
      "grace_period": 0,
      "live": true,
      "access_type": "time_based",
      "expiration": "2028-03-01T23:59:59Z",
      "created": "2026-03-03T17:06:09.424Z",
      "last_updated": "2026-03-11T18:51:45.521796755Z",
      "resource": {
        "public_id": "450a64bf72024d99998f6c7541fefa42",
        "merchant": "80c9a167fb434fa0abe215c7f19a86cc",
        "name": "Meta Plan Candidate 01",
        "external_resource_id": "52810769170796",
        "description": null,
        "image_url": null,
        "created": "2025-10-28T17:48:10.806Z",
        "last_updated": "2025-10-28T17:48:10.806Z"
      },
      "grantees": null
    },
    "renewal_correction": {
      "success": true,
      "updated_order_ids": [
        "d8dee1f287c4429b83ff54f438937d98"
      ]
    }
  }
}
```

**SDK Code**

```python OK
import requests

url = "https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/"

payload = { "expiration": "2023-01-15" }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript OK
const url = 'https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"expiration":"2023-01-15"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go OK
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/"

	payload := strings.NewReader("{\n  \"expiration\": \"2023-01-15\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby OK
require 'uri'
require 'net/http'

url = URI("https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"expiration\": \"2023-01-15\"\n}"

response = http.request(request)
puts response.read_body
```

```java OK
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/")
  .header("Content-Type", "application/json")
  .body("{\n  \"expiration\": \"2023-01-15\"\n}")
  .asString();
```

```php OK
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/', [
  'body' => '{
  "expiration": "2023-01-15"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp OK
using RestSharp;

var client = new RestClient("https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"expiration\": \"2023-01-15\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift OK
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["expiration": "2023-01-15"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://restapi.ordergroove.com/entitlements/entitlement.public_id/modify_expiration/")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```