> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zipkit.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Zip

> Retrieve the status of a zip job

## Overview

Retrieve the current status of a zip creation job by its UUID. Use the `uuid` value returned from the POST /api/v1/zips endpoint.

## Endpoint

```
GET /api/v1/zips/:id
```

## Authentication

Requires a valid access token in the `Authorization` header:

```
Authorization: Bearer YOUR_ACCESS_TOKEN
```

See [Authentication](/guides/authentication) for details.

## Path Parameters

<ParamField path="id" type="string" required>
  The UUID of the zip job returned when you created it (e.g., `clx7g2m4p0000xyz123abc`).

  This is the `uuid` value from the POST /api/v1/zips response.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc \
    -H "Authorization: Bearer your-access-token"
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc"
  headers = {
      "Authorization": "Bearer your-access-token"
  }

  response = requests.get(url, headers=headers)
  zip_data = response.json()
  print(f"Status: {zip_data['data']['status']}")
  ```

  ```javascript Javascript theme={null}
  const response = await fetch('https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer your-access-token'
    }
  });

  const zipData = await response.json();
  console.log(`Status: ${zipData.data.status}`);
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, 'https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      'Authorization: Bearer your-access-token'
  ]);

  $response = curl_exec($ch);
  $zipData = json_decode($response, true);

  echo "Status: " . $zipData['data']['status'] . "\n";

  curl_close($ch);
  ```

  ```go Go theme={null}
  package main

  import (
      "encoding/json"
      "fmt"
      "io"
      "net/http"
  )

  func main() {
      url := "https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc"

      req, _ := http.NewRequest("GET", url, nil)
      req.Header.Set("Authorization", "Bearer your-access-token")

      client := &http.Client{}
      resp, _ := client.Do(req)
      defer resp.Body.Close()

      body, _ := io.ReadAll(resp.Body)

      var result map[string]interface{}
      json.Unmarshal(body, &result)

      zipData := result["data"].(map[string]interface{})
      fmt.Printf("Status: %s\n", zipData["status"])
  }
  ```

  ```java Java theme={null}
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;
  import java.net.URI;
  import org.json.JSONObject;

  public class GetZip {
      public static void main(String[] args) throws Exception {
          String url = "https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc";

          HttpClient client = HttpClient.newHttpClient();
          HttpRequest request = HttpRequest.newBuilder()
              .uri(URI.create(url))
              .header("Authorization", "Bearer your-access-token")
              .GET()
              .build();

          HttpResponse<String> response = client.send(request,
              HttpResponse.BodyHandlers.ofString());

          JSONObject zipData = new JSONObject(response.body())
              .getJSONObject("data");

          System.out.println("Status: " + zipData.getString("status"));
      }
  }
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'json'

  uri = URI('https://api.zipkit.io/v1/zips/clx7g2m4p0000xyz123abc')
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(uri.path, {
    'Authorization' => 'Bearer your-access-token'
  })

  response = http.request(request)
  zip_data = JSON.parse(response.body)
  puts "Status: #{zip_data['data']['status']}"
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "data": {
      "uuid": "clx7g2m4p0000xyz123abc",
      "status": "succeeded",
      "metadata": {
        "user_id": "user_123",
        "order_id": "order_456"
      }
    }
  }
  ```
</ResponseExample>

<ResponseField name="data" type="object">
  The response data object containing zip information.
</ResponseField>

<ResponseField name="data.uuid" type="string">
  Unique identifier (UUID) for this zip job.
</ResponseField>

<ResponseField name="data.status" type="string">
  Current status of the zip job.

  **Possible values:**

  * `none` - Job created, not yet started processing
  * `processing` - Currently downloading files and creating zip
  * `succeeded` - zip successfully created and uploaded to your bucket
  * `failed` - Job failed during processing
</ResponseField>

<ResponseField name="data.metadata" type="object">
  The custom metadata object that was provided when the zip was created. Returns an empty object `{}` if no metadata was provided.
</ResponseField>

## Error Responses

All errors follow a consistent JSON format:

```json theme={null}
{
  "error": {
    "type": "error_type",
    "code": "error_code",
    "message": "Human-readable description",
    "param": null
  }
}
```

### 401 Unauthorized

Returned when authentication fails.

#### Missing Authorization Header

```json theme={null}
{
  "error": {
    "type": "authentication_error",
    "code": "authentication_required",
    "message": "No API key provided. Include your API key in the Authorization header using Bearer auth.",
    "param": null
  }
}
```

#### Invalid API Key

```json theme={null}
{
  "error": {
    "type": "authentication_error",
    "code": "invalid_api_key",
    "message": "Invalid API key provided.",
    "param": null
  }
}
```

### 404 Not Found

Returned when the zip ID doesn't exist or doesn't belong to your project.

## Notes

<Note>
  **Webhooks recommended:** Instead of polling this endpoint, configure a webhook to receive automatic notifications when zips complete. See the [Webhooks guide](/guides/webhooks) for details.
</Note>
