# Cancel Shipment

The `cancel shipment` endpoint notifies us of your intention to cancel a shipment, but it doesn't immediately cancel the shipment. It's important to note that canceling a shipment after it has been assigned can be more complex and may incur additional fees. Be mindful of this when initiating a cancellation request.

## Requests

### Parameter

The request includes a parameter called `reference`, where you specify the reference of the shipment you wish to cancel. For example, use the following endpoint format:

`https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/{reference}`

Replace `{reference}` with the actual shipment reference you received after booking the shipment. This reference is required to accurately identify and process your cancellation request.

### Request Sample

{% tabs %}
{% tab title="Curl" %}

```javascript
curl --location 'https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/epbip57hgvo0' \
--header 'Authorization: Bearer Secret Key'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

url = "https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/epbip57hgvo0"

payload = {}
headers = {
  'Authorization': 'Bearer Secret Key'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require "uri"
require "net/http"

url = URI("https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/epbip57hgvo0")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer Secret Key"

response = https.request(request)
puts response.read_body

```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/epbip57hgvo0',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer Secrek Key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

```

{% endtab %}

{% tab title="Javascript" %}

```javascript
const myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer Secret Key");

const requestOptions = {
  method: "GET",
  headers: myHeaders,
  redirect: "follow"
};

fetch("https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/epbip57hgvo0", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

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

func main() {

  url := "https://delivery-staging.apiideraos.com/api/v2/token/shipment/cancel/epbip57hgvo0"
  method := "GET"

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, nil)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Bearer Secret Key")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

{% endtab %}
{% endtabs %}

### Response Sample

{% tabs %}
{% tab title="404" %}

```json
{
    "data": null,
    "status": false,
    "message": "Shipment with reference - epbip57hgv not found",
    "status_code": 404
}
```

{% endtab %}

{% tab title="200" %}

```json
{
    "data": null,
    "status": true,
    "message": "Shipment Cancel Request sent",
    "status_code": 200
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.goshiip.com/api-references/cancel-shipment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
