AlistGo/alist · error

lark export task response missing ticket

Error message

lark export task response missing ticket

What it means

The Feishu Drive ExportTask.Create call returned success but resp.Data.Ticket was nil/empty. The ticket is the handle required to poll export status (Get with Ticket+Token), so without it the export flow cannot continue; the driver returns this error instead of an unusable LarkExportCreateResp.

Source

Thrown at drivers/lark/other.go:149

		Type(docType).
		FileExtension(format).
		FileName(larkExportBaseName(obj.GetName()))
	if subID != "" {
		builder.SubId(subID)
	}
	exportTask := builder.Build()
	resp, err := doDrive(ctx, c, func(opts ...larkcore.RequestOptionFunc) (*larkdrive.CreateExportTaskResp, error) {
		return c.client.Drive.V1.ExportTask.Create(ctx,
			larkdrive.NewCreateExportTaskReqBuilder().ExportTask(exportTask).Build(), opts...)
	})
	if err != nil {
		return nil, err
	}
	if !resp.Success() {
		return nil, larkAPIError(resp)
	}
	if resp.Data == nil || resp.Data.Ticket == nil || *resp.Data.Ticket == "" {
		return nil, errors.New("lark export task response missing ticket")
	}
	return &LarkExportCreateResp{
		Ticket: *resp.Data.Ticket,
		Token:  token,
		Type:   docType,
		Format: format,
		SubID:  subID,
	}, nil
}

func (c *Lark) getExportOptions(ctx context.Context, obj model.Obj) (*LarkExportOptionsResp, error) {
	token, ok := c.getObjToken(ctx, obj.GetPath())
	if !ok {
		return nil, errors.WithStack(errors.New("lark file token not found"))
	}
	docType, err := larkExportType(obj.GetName())
	if err != nil {
		return nil, err

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Log larkAPIError details / raw response for the create call to find the underlying reason
  2. Wait if export quota is exhausted, then retry with fewer concurrent tasks
  3. Verify the app has the drive export permission (docs:document:export or equivalent scope)
  4. Confirm the doc is not locked/being-edited heavily, then retry
Defensive patterns

Strategy: try-catch

Try / catch

resp, err := c.createExportTask(ctx, obj, req)
if err != nil && strings.Contains(err.Error(), "missing ticket") {
	// quota/state issue: back off and retry once later
	return nil, fmt.Errorf("feishu did not issue export ticket (quota or doc state): %w", err)
}

Prevention

When it happens

Trigger: CreateExportTask succeeds at HTTP/code level yet omits data.ticket — export quota exceeded, file in a state that cannot be exported, or the export feature not enabled for the app/tenant.

Common situations: Mass-exporting many docs quickly hits the tenant's export quota; exporting a doc type the tenant disabled; SDK/response drift after a Feishu API update.

Related errors


AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15). Data as JSON: /api/errors/f125b47ae155253e. Report an issue: GitHub.